Sisällysluettelo:

ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 vaihetta
ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 vaihetta

Video: ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 vaihetta

Video: ITTT Rolando Ritzen - Motion Control Arcade Glove: 5 vaihetta
Video: When players lose control 🥊😳 2024, Marraskuu
Anonim
ITTT Rolando Ritzen - Liikehallinta -arcadehanskat
ITTT Rolando Ritzen - Liikehallinta -arcadehanskat

Een handschoen die je 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 ovi te "sormi bangen")

Vaihe 1: Het Materiaal

Het materiaalit dat je gaat nodig hebben is vrij simpel. 1x Arduino pro micro Arduino Leonardo 1x MPU6050 gyroskooppi

4x kaapelit

Vaihe 2: De Bekabeling

De Bekabeling
De Bekabeling

Zoals je in het schema in de afbeelding ziet is de bekabeling super simpel. MPU VCC> Arduino VCCMPU maa> Arduino -maaMPU SCL> Nasta 3MPU SDA> Nasta 2

Vaihe 3: Kirjastot 1

Kirjastot 1
Kirjastot 1

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

Lataa een ZIP -tiedosto "Kloonaa tai lataa" knop rechts bovenaan kautta.

Vaihe 4: Kirjastot 2

Kirjastot 2
Kirjastot 2

Avaa Zip -tiedosto ja napsauta karttaa "Arduino". Lisää Arduino -kartta karttaan "I2Cdev" ja "MPU6050" paken en en je Arduino libraries zetten (Ohjelmatiedostot> Arduino> kirjastot)

Vaihe 5: Poista koodi

#sisältää

#Sisällytä #Sisällytä #Sisällytä #Sisällytä

MPU6050 mpu;

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

int16_t accx, accy, accz; int vx, vy; kellukulma;

// koodi tasoitus inputint readIndex = 0; const int numReadings = 20; int angleReadings [numReadings]; int yhteensä = 0; kelluva keskiarvoKulma = 0,0;

int oldZ = 0;

int newZ = 0;

void setup () {Serial.begin (115200); Wire.begin (); Hiiri.begin (); mpu.initialize (); if (! mpu.testConnection ()) {while (1); }

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

void loop () {

yhteensä = yhteensä - kulmaReadings [readIndex];

angleReadings [readIndex] = kulma; yhteensä = yhteensä + kulmaLukemat [readIndex]; readIndex = lukuindeksi + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Bang"); Hiiri. Napsauta (); // Ammu heiluttamalla pistoolia taaksepäin (sormella)

// accx, accy, accz;

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

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Hiiri.liike (vx, vy); viive (20);

Jos sinulla on koodi, 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 on 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. Voit myös siirtyä kohdistimen avulla napsauttamalla linkkejä beweegd wil je "gx + x". Als het diagonaal beweegd, dan kies je een van de twee arvot om aan te matkustaja totdat hij nog maar over een as beweegd en dan pas je de andere aan.

Serial.print ("gx =");

Sarjajälki (gx); Serial.print ("| gz ="); Sarjanjälki (gz); Serial.print ("| gy ="); Sarja.println (gy); if (gx> 32000) {Serial.println ("Flick Right"); // Lataa uudelleen, kun napsautat pistoolia oikealle Näppäimistö.write ('r'); viive (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // työskentely // kulma = atan2 ((float) (ay - 16384), (float) (ax - 16384)) * (180,0 /PI) * -1; kulma = atan2 ((float) ay, (float) ~ ax) * (180,0 / PI); // kellukulma = atan2 ((float) ay, (float) -ax) * (180,0 /PI); //Sarja.println(averageAngle); }

Suositeltava: