Përmbajtje:

ITTT Rolando Ritzen - Doreza Arcade e Kontrollit të Lëvizjes: 5 Hapa
ITTT Rolando Ritzen - Doreza Arcade e Kontrollit të Lëvizjes: 5 Hapa

Video: ITTT Rolando Ritzen - Doreza Arcade e Kontrollit të Lëvizjes: 5 Hapa

Video: ITTT Rolando Ritzen - Doreza Arcade e Kontrollit të Lëvizjes: 5 Hapa
Video: Книга 07 — Аудиокнига Виктора Гюго «Горбун из Нотр-Дама» (главы 1–8) 2024, Korrik
Anonim
ITTT Rolando Ritzen - Doreza Arcade e Kontrollit të Lëvizjes
ITTT Rolando Ritzen - Doreza Arcade e Kontrollit të Lëvizjes

Mund të përdorni një kontrollues lëvizjeje për kontrolluesit e lëvizjes ose për gjuajtësit në hekurudhë. Projekti i mashtrimit është se të gjithë kontrolli i lëvizjes është, përfshirë këtu. (Je schiet door te "finger bangen")

Hapi 1: Het Materiaal

Het materiaal dat je gaat nodig hebben is vrij simpel. 1x Arduino pro mikro i Arduino Leonardo 1 xhiroskop MPU6050

4x kabel

Hapi 2: De Bekabeling

De Bekabeling
De Bekabeling

Zoals je in het schema in de mbbeelding ziet është duke u bekabeling super simpel. MPU VCC> Arduino VCCMPU toka> Arduino groundMPU SCL> Pin 3MPU SDA> Pin 2

Hapi 3: Bibliotekat 1

Bibliotekat 1
Bibliotekat 1

Projekti ka nevojë për biblioteka të personalizuara dhe lidh lidhjen me këtë faqe:

Shkarkoni një skedar ZIP përmes "Clone or download" knop rechts bovenaan.

Hapi 4: Bibliotekat 2

Bibliotekat 2
Bibliotekat 2

Hapni skedarin Zip dhe klikoni në hartën "Arduino". Hartimi i hartës Arduino do të jetë në hartat "I2Cdev" dhe "MPU6050" të paketuara në bibliotekat Arduino të krijuara (Skedarët e Programit> Arduino> bibliotekat)

Hapi 5: Kodi De

#përfshi

#përfshi #përfshi #përfshi #përfshi

MPU6050 mpu;

int16_t sëpatë, ay, az, gx, gy, gz;

int16_t accx, accy, accz; int vx, vy; kënd notues;

// kodi për zbutjen e inputint readIndex = 0; const int numReleximet = 20; int angleReadings [numReadings]; int total = 0; nota mesatareAngle = 0.0;

int oldZ = 0;

int newZ = 0;

void setup () {Serial.begin (115200); Wire.begin (); Mouse.filloj (); mpu.initialize (); nëse (! mpu.testConnection ()) {ndërsa (1); }

për (int thisReading = 0; thisReading <numReadings; thisReading ++) {angleReadings [thisReading] = 0; }}

lak void () {

total = total - angleReadings [readIndex];

angleReadings [readIndex] = kënd; total = total + kënde leximesh [readIndex]; readIndex = readIndex + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Bang"); Mouse.click (); // Xhironi duke e goditur armën mbrapsht (duke përplasur gishtin)}

// accx, accy, accz;

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz); mpu.getAcceleration (& accx, & accy, & accz); //Serial.println(gy); // Serial.println (këndi);

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Miu. Lëviz (vx, vy); vonesa (20);

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

Wat er waarschijnlijk gaat gebeuren is dat je cursor uit zichzelf over je scherm gaat bewegen (nga lidhjet e mëparshme, këto janë të lidhura më parë në diagonaal) dhe kodin e të dhënave të kodit për të hyrë në të dhëna të tjera. Mund të vlerësohen vlerat në "gx + 1000" dhe "gz - 200" të gjitha këto mund të jenë rezultat i krijimit të tyre nëse do të vlerësohen nga vlerat e vonshme nëse nuk do të kuptohen kur të zgjidhet zgjidhja e tyre. Gjithashtu nga kursori 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. Siç diagonaal beweegd, ai ka një vlerë nga twee om aan te passen totdat hij nog maar over een as beweegd en dan pas je de andere aan.

Serial.print ("gx =");

Serial.print (gx); Serial.print ("| gz ="); Serial.print (gz); Serial.print ("| gy ="); Serial.println (gy); if (gx> 32000) {Serial.println ("Flick Right"); // Ringarko kur lëviz armën në tastierën e djathtë. Shkruaj ('r'); vonesë (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // pune // këndi = atan2 ((noton) (ay - 16384), (noton) (sëpatë - 16384)) * (180.0 /PI) * -1; kënd = atan2 ((noton) ay, (noton) ~ sëpatë) * (180.0 / PI); // këndi i notimit = atan2 ((noton) ay, (noton) -ax) * (180.0 /PI); //Serial.println (mediumAngle); }

Recommended: