Агуулгын хүснэгт:

ITTT Rolando Ritzen - Хөдөлгөөнийг хянах аркад бээлий: 5 алхам
ITTT Rolando Ritzen - Хөдөлгөөнийг хянах аркад бээлий: 5 алхам

Видео: ITTT Rolando Ritzen - Хөдөлгөөнийг хянах аркад бээлий: 5 алхам

Видео: ITTT Rolando Ritzen - Хөдөлгөөнийг хянах аркад бээлий: 5 алхам
Видео: Оздоровительный Цигун «Бадуаньцзинь» / 8 кусков парчи / Ежедневный китайский комплекс. 2024, Долдугаар сарын
Anonim
ITTT Rolando Ritzen - Хөдөлгөөнийг хянах аркад бээлий
ITTT Rolando Ritzen - Хөдөлгөөнийг хянах аркад бээлий

Төмөр зам дээр мэргэн буучдын хөдөлгөөн зохицуулагчийн хувьд гар хийцийн дасгал хийдэг. Энэхүү төслөөс харахад бүх төрлийн хөдөлгөөнийг хянах боломжтой. (Je shchiet door te "хуруугаараа")

Алхам 1: Ээжийгээ баярлуулна уу

Гэхдээ энэ бол маш энгийн зүйл юм. Arduino Leonardo 1x Arduino pro micro1x MPU6050 гироскоп

4x кабель

Алхам 2: Де Бекабелинг

Де Бекабелинг
Де Бекабелинг

Zoals je in het schema in de afbeelding ziet нь үнэхээр энгийн юм. MPU VCC> Arduino VCCMPU ground> Arduino groundMPU SCL> Pin 3MPU SDA> Pin 2

Алхам 3: Номын сан 1

Номын сан 1
Номын сан 1

Voor dit project heb je een paar custom librarys nodig van deze link:

ZIP файлыг "Clone or download" товчлуур ашиглан татаж аваарай.

Алхам 4: Номын сан 2

Номын сан 2
Номын сан 2

"Arduino" програмын Zip файлыг нээнэ үү. Arduino -ийн газрын зургийг "I2Cdev" болон "MPU6050" хэлбэрээр Arduino -ийн номын сангаас авах боломжтой (Програмын файлууд> Arduino> номын сан)

Алхам 5: Дек код

#оруулах

#оруулах #оруулах #оруулах #оруулах

MPU6050 мегапиксел;

int16_t ax, ay, az, gx, gy, gz;

int16_t accx, accy, accz; int vx, vy; хөвөх өнцөг;

// readIndex оролтыг тэгшлэх код = 0; const int numReadings = 20; int angleReadings [numReadings]; int нийт = 0; хөвөх дундажAngle = 0.0;

int oldZ = 0;

int newZ = 0;

void setup () {Serial.begin (115200); Wire.begin (); Хулгана.begin (); mpu.initialize (); if (! mpu.testConnection ()) {while (1); }

for (int thisReading = 0; thisReading <numReadings; thisReading ++) {angleReadings [thisReading] = 0; }}

void loop () {

нийт = нийт - өнцгийн Уншилт [readIndex];

angleReadings [readIndex] = өнцөг; нийт = нийт + өнцөг Унших [readIndex]; readIndex = readIndex + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Bang"); Хулгана дарна уу (); // Буугаа хойш нь дарж буудна (хуруугаа цохих)}

// accx, accy, accz;

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz); mpu.getAcceleration (& accx, & accy, & accz); //Serial.println(gy); // Serial.println (өнцөг);

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Хулгана.move (vx, vy); саатал (20);

Dit stukje code heeft een beetje uitleg nodig omdat je het waarschijnlijk een klein beetje moet aanpassen.

Wat er waarschijnlijk gaat gebeuren is the dat je cursor uit zichzelf over je scherm gaat bewegen (van rechts nar линкүүд, van boven naar onder of diagonaal) en dit stukje code zorgt er voor dat je curor stil blijft staan als je geen input geeft. "Gx + 1000" en "gz - 200" гэсэн утгыг сонгоно уу. Als de cursor uit zichzelf van rechts naar links beweegd wil je "gx + x" aanpassen. Als de cursor uit zichzelf van boven naar onder beweegd wil je de "gz - x" aan passen. Als het diagonaal beweegd, dan kies je een van de twee үнэлэмжүүд нь aven te passen totdat hij nog maar over een as beweegd en dan pas je de andere aan.

Serial.print ("gx =");

Цуваа.хэвлэх (gx); Serial.print ("| gz ="); Цуваа.хэвлэх (gz); Serial.print ("| gy ="); Serial.println (gy); if (gx> 32000) {Serial.println ("Баруун тийш гүйлгэх"); // Буугаа баруун тийш эргүүлэх үед дахин ачаална уу Keyboard.write ('r'); саатал (250); } Serial.print ("accx ="); Цуваа.хэвлэх (accx); Serial.print ("| accy ="); Цуваа.хэвлэх (accy); Serial.print ("| accz ="); Serial.println (accz); // ажиллаж байгаа // өнцөг = atan2 ((хөвөх) (ай - 16384), (хөвөх) (сүх - 16384)) * (180.0 /PI) * -1; өнцөг = atan2 ((float) ay, (float) ~ ax) * (180.0 / PI); // хөвөх өнцөг = atan2 ((float) ay, (float) -ax) * (180.0 /PI); //Serial.println(averageAngle); }

Зөвлөмж болгож буй: