Cov txheej txheem:

ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 Kauj Ruam
ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 Kauj Ruam

Video: ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 Kauj Ruam

Video: ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 Kauj Ruam
Video: When players lose control 馃馃槼 2024, Kaum ib hlis
Anonim
ITTT Rolando Ritzen - Motion Control Arcade Glove
ITTT Rolando Ritzen - Motion Control Arcade Glove

Een handschoen tuag je kan gebruiken als cov lus tsa suab tswj nyob rau ntawm cov tsheb ciav hlau. De gimmick van dit project yog dat alles suab tswj yog, suav nrog het schieten. (Je schiet door te "ntiv tes bangen")

Kauj Ruam 1: Het Materiaal

Het materiaal dat je gaat nodig hebben is vrij simpel. 1x Arduino pro micro ntawm Arduino Leonardo1x MPU6050 gyroscope

4 x kab

Kauj ruam 2: De Bekabeling

De Bekabeling
De Bekabeling

Zoals je in het schema in de afbeelding ziet yog de bekabeling super simpel. MPU VCC> Arduino VCCMPU av> Arduino av MPU SCL> Pin 3MPU SDA> Pin 2

Kauj ruam 3: Tsev qiv ntawv 1

Tsev qiv ntawv 1
Tsev qiv ntawv 1

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

Rub tawm een ZIP cov ntaub ntawv los ntawm de "Clone lossis rub tawm" pob kws rechts bovenaan.

Kauj ruam 4: Tsev qiv ntawv 2

Tsev qiv ntawv 2
Tsev qiv ntawv 2

Qhib de Zip cov ntaub ntawv thiab nyem rau ntawm daim duab "Arduino". En uit deze Arduino map wil je de mapjes "I2Cdev" en "MPU6050" pakken en in je Arduino libraries zetten (Cov Ntaub Ntawv Cov Ntaub Ntawv> Arduino> tsev qiv ntawv)

Kauj ruam 5: De Code

#suav nrog

#include #include #include #include

MPU6050 mpu;

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

int16_t accx, accy, accz; koj vx, vy; ntab kaum;

// chaws rau kev ua kom zoo inputint readIndex = 0; const int numReadings = 20; int angleReadings [numReadings]; int tag nrho = 0; ntab nruab nrabAngle = 0.0;

int oldZ = 0;

int newZ = 0;

teeb tsa tsis muaj dab tsi () {Serial.begin (115200); Hlau.begin (); Nas.begin (); mpu.initialize (); yog (! mpu.testConnection ()) {thaum (1); }

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

void voj () {

tag nrho = tag nrho - angleReadings [readIndex];

angleReadings [readIndex] = kaum sab xis; tag nrho = tag nrho + angleReadings [readIndex]; readIndex = readIndex + 1; yog (readIndex> = numReadings) {readIndex = 0; }

yog (gz> 30000) {Serial.println ("Bang"); Nas.click (); // Tua los ntawm rab phom thim rov qab (ntiv tes tsoo)}

// nco, nco, nco;

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz); mpu.getAcceleration (& accx, & accy, & accz); //Serial.println(gy); // Serial.println (lub kaum sab xis);

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Mouse.move (vx, vy); ncua (20);

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

Wat er waarschijnlijk gaat gebeuren yog dat cursor uit zichzelf hla je scherm gaat bewegen (van rechts naar links, van boven naar onder of diagonaal) en dit stukje code zorgt er voor dat je curor stil blijft staan als je geen input geeft Je moet de values in "gx + 1000" en "gz - 200" aanpassen totdat je het resultaat krijgt dat je wil en ik denk dat de values values wil nodig hebt afhankelijk zijn van je scherm resolutie. 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 qhov tseem ceeb om aan te passen totdat hij nog maar hla een li 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); yog (gx> 32000) {Serial.println ("Flick Right"); // Rov qab qhib dua thaum rab phom mus rau sab xis Keyboard.write ('r'); ncua (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // working // angle = atan2 ((float) (ay - 16384), (float) (ax - 16384)) * (180.0 /PI) * -1; angle = atan2 ((ntab) ay, (ntab) ~ ax) * (180.0 / PI); // ntab kaum = atan2 ((ntab) ay, (ntab) -ax) * (180.0 /PI); //Serial.println(averageAngle); }

Pom zoo: