Satura rādītājs:

ITTT Rolando Ritzen - kustību kontroles arkādes cimds: 5 soļi
ITTT Rolando Ritzen - kustību kontroles arkādes cimds: 5 soļi

Video: ITTT Rolando Ritzen - kustību kontroles arkādes cimds: 5 soļi

Video: ITTT Rolando Ritzen - kustību kontroles arkādes cimds: 5 soļi
Video: Часть 4. Аудиокнига «Лорд Джим» Джозефа Конрада (главы 20–26) 2024, Jūlijs
Anonim
ITTT Rolando Ritzen - kustību kontroles arkādes cimds
ITTT Rolando Ritzen - kustību kontroles arkādes cimds

Een handschoen die je kan kan gebruiken als motion controller voor on-rail shooters. De gimmick van dit project is dat alles motion control is, inclusief het schieten. (Je schiet durvis ar "pirkstu bangen")

1. darbība: Het Materiaal

Het material dat je gaat nodig hebben is vrij simpel. 1x Arduino pro micro no Arduino Leonardo 1x MPU6050 žiroskops

4x kabels

2. solis: De Bekabeling

De Bekabeling
De Bekabeling

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

3. darbība: bibliotēkas 1

Bibliotēkas 1
Bibliotēkas 1

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

Lejupielādējiet een ZIP failu, izmantojot "Klonēt vai lejupielādēt" knop rechts bovenaan.

4. darbība: bibliotēkas 2

Bibliotēkas 2
Bibliotēkas 2

Atveriet ZIP failu un noklikšķiniet uz kartes "Arduino". Pievienot Arduino karti ar kartēm "I2Cdev" un "MPU6050" piedāvāt Arduino bibliotēku zeten (Program Files> Arduino> libraries)

5. solis: de kods

#iekļaut

#iekļaut #iekļaut #iekļaut #iekļaut

MPU6050 mpu;

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

int16_t accx, accy, accz; int vx, vy; pludiņa leņķis;

// ievades izlīdzināšanas kods readIndex = 0; const int numReadings = 20; int angleReadings [numReadings]; int kopā = 0; peldēt vidējiAngle = 0.0;

int oldZ = 0;

int newZ = 0;

void setup () {Serial.begin (115200); Wire.begin (); Pele.sākt (); mpu.initialize (); ja (! mpu.testConnection ()) {while (1); }

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

void loop () {

kopā = kopā - leņķisReadings [readIndex];

angleReadings [readIndex] = leņķis; kopējais = kopējais + leņķisLasījumi [lasītIndekss]; readIndex = readIndex + 1; ja (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Sprādziens"); Pele.klikšķis (); // Šaut, šūpojot šauteni atpakaļ (sitiens ar pirkstu)}

// accx, accy, accz;

mpu.getMotion6 (& ax, & ay, & az, & gx, & gy, & gz); mpu.getAcceleration (& accx, & accy, & accz); //Serial.println(gy); // Serial.println (leņķis);

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Pele.pārvietot (vx, vy); kavēšanās (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 (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 in "gx + 1000" en "gz - 200" aanpassen totdat je het resultaat krijgt dat je wil en ik denk dat de values die wil nodig hebt afhankelijk zijn van je scherm Resolutie. Kā arī kursors 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 pasažieris. Als het diagonaal beweegd, dan kies je een van de twee values om aan te pasažier totdat hij nog maar over een as beweegd en dan pas je de andere aan.

Sērijas nospiedums ("gx =");

Sērijas nospiedums (gx); Sērijas nospiedums ("| gz ="); Sērijas nospiedums (gz); Sērijas.druka ("| gy ="); Sērijas.println (gy); if (gx> 32000) {Serial.println ("Pārbīdīt pa labi"); // Pārlādēt, švīkojot uz labo pusi Keyboard.write ('r'); kavēšanās (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Sērijas nospiedums ("| accz ="); Serial.println (accz); // darba // leņķis = atan2 ((pludiņš) (ay - 16384), (pludiņš) (cirvis - 16384)) * (180,0 /PI) * -1; leņķis = atan2 ((pludiņš) ay, (pludiņš) ~ cirvis) * (180,0 / PI); // pludiņa leņķis = atan2 ((pludiņš) ay, (pludiņš) -ax) * (180,0 /PI); //Serial.println(averageAngle); }

Ieteicams: