Obsah:

ITTT Rolando Ritzen - pohybová arkádová rukavice: 5 kroků
ITTT Rolando Ritzen - pohybová arkádová rukavice: 5 kroků

Video: ITTT Rolando Ritzen - pohybová arkádová rukavice: 5 kroků

Video: ITTT Rolando Ritzen - pohybová arkádová rukavice: 5 kroků
Video: Защитишь $500,000, Получишь Их! 2024, Listopad
Anonim
ITTT Rolando Ritzen - pohybová arkádová rukavice
ITTT Rolando Ritzen - pohybová arkádová rukavice

Můžete také použít ovladač pohybu nebo železniční střílečky. Tento trik je zaměřen na pohybové ovládání, včetně jeho využití. (Je schiet door te "finger bangen")

Krok 1: Het Materiaal

Hater materiaal dat je gaat nodig hebben is vrij simpel. 1x Arduino pro micro z gyroskopu Arduino Leonardo1x MPU6050

4x kabely

Krok 2: De Bekabeling

De Bekabeling
De Bekabeling

Zoals is in het schema in de afbeelding ziet is de bekabeling super simpel. MPU VCC> Arduino VCCMPU zem> Arduino uzemnění MPU SCL> Pin 3MPU SDA> Pin 2

Krok 3: Knihovny 1

Knihovny 1
Knihovny 1

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

Stáhněte si soubor ZIP pomocí tlačítka „Klonovat nebo stáhnout“.

Krok 4: Knihovny 2

Knihovny 2
Knihovny 2

Otevřete soubor Zip kliknutím na mapu „Arduino“. Enzeit Arduino map wil is de mapjes "I2Cdev" en "MPU6050" pakken en in je Arduino libraries zetten (Program Files> Arduino> libraries)

Krok 5: De Code

#zahrnout

#include #include #include #include

MPU6050 mpu;

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

int16_t accx, accy, accz; int vx, vy; plovoucí úhel;

// kód pro vyhlazení inputint readIndex = 0; const int numReadings = 20; int angleReadings [numReadings]; int celkem = 0; float averageAngle = 0,0;

int oldZ = 0;

int newZ = 0;

neplatné nastavení () {Serial.begin (115200); Wire.begin (); Mouse.begin (); mpu.initialize (); if (! mpu.testConnection ()) {while (1); }

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

prázdná smyčka () {

total = total - angleReadings [readIndex];

angleReadings [readIndex] = úhel; celkem = celkem + úhelČtení [readIndex]; readIndex = readIndex + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Bang"); Mouse.click (); // Střílejte švihnutím zbraně dozadu (bouchání prsty)}

// accx, accy, accz;

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

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Mouse.move (vx, vy); zpoždění (20);

Dup stukje code heeft een beetje uitleg nodig omdat is het waarschijnlijk een klein beetje moet aanpassen.

Co se děje, je to kurzor, který se blíží našemu cíli (van rechts naar links, van boven naar onder of diagonaal) en dit stukje code zorgt er voor dat je curor stil blijft staan als is geen input geeft. Je moet de values in in "gx + 1000" en "gz - 200" aanpassen totdat is het resultaat krijgt dat je wil en ik denk dat de values die wil nodig hebt afhankelijk zijn van je scherm Resolution Resolution. Všechny kurzory mohou také odkazovat na odkazy, které budou "gx + x" aanpassen. All de cursor uit zichzelf van boven nader onder beweegd wil je de "gz - x" aan passen. Také mohou mít diagonální hodnoty, protože jejich hodnoty jsou mnohem vyšší než kdy dříve, než je možné.

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"); // Znovu načíst při švihu pistolí doprava Keyboard.write ('r'); zpoždění (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // pracovní // úhel = atan2 ((float) (ay - 16384), (float) (ax - 16384)) * (180.0 /PI) * -1; úhel = atan2 ((float) ay, (float) ~ ax) * (180,0 / PI); // float angle = atan2 ((float) ay, (float) -ax) * (180.0 /PI); //Serial.println(averageAngle); }

Doporučuje: