فهرست مطالب:

ITTT Rolando Ritzen - دستکش بازی کنترل حرکت: 5 مرحله
ITTT Rolando Ritzen - دستکش بازی کنترل حرکت: 5 مرحله

تصویری: ITTT Rolando Ritzen - دستکش بازی کنترل حرکت: 5 مرحله

تصویری: ITTT Rolando Ritzen - دستکش بازی کنترل حرکت: 5 مرحله
تصویری: Part 2 - The Last of the Plainsmen Audiobook by Zane Grey (Chs 06-11) 2024, جولای
Anonim
ITTT Rolando Ritzen - دستکش بازی کنترل حرکت
ITTT Rolando Ritzen - دستکش بازی کنترل حرکت

Een handchoen die je kan gebruiken als motion controller voor on تیراندازان راه آهن. پروژه حیله وار این است که همه چیز کنترل حرکت است ، با استفاده از آن. (Je schiet door te "finger bangen")

مرحله 1: Het Materiaal

Het materiaal dat je gaat nodig hebben is vrij simpel. 1x Arduino pro micro آردوینو لئوناردو 1x ژیروسکوپ MPX6050

4 برابر کابل

مرحله 2: د بکابلینگ

دی بکابلینگ
دی بکابلینگ

Zoals je in het schema in de afbeelding ziet is bekabeling super simpel. MPU VCC> Arduino VCCMPU پایه> زمین Arduino MPU SCL> پین 3MPU SDA> پین 2

مرحله 3: کتابخانه ها 1

کتابخانه ها 1
کتابخانه ها 1

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

فایل ZIP را از طریق "Clone or download" knop rechts bovenaan بارگیری کنید.

مرحله 4: کتابخانه ها 2

کتابخانه ها 2
کتابخانه ها 2

فایل Zip را باز کرده و روی نقشه "Arduino" کلیک کنید. نقشه های آردوینو با نقشه های "I2Cdev" و "MPU6050" در کتابخانه های آردوینو (فایلهای برنامه> آردوینو> کتابخانه ها) جمع آوری می شوند.

مرحله 5: De Code

#عبارتند از

#شامل #شامل #شامل #شامل #شود

MPU6050 mpu ؛

int16_t ax، ay، az، gx، gy، gz؛

int16_t accx، accy، accz؛ int vx، vy؛ زاویه شناور ؛

// کد برای هموارسازی inputint readIndex = 0؛ const int numReadings = 20؛ int angleReadings [numReadings]؛ int کل = 0؛ شناور متوسطAngle = 0.0؛

int oldZ = 0؛

int newZ = 0؛

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

برای (int thisReading = 0؛ thisReading <numReadings؛ thisReading ++) {angleReadings [thisReading] = 0؛ }}

حلقه خالی () {

total = total - angleReadings [readIndex] ؛

angleReadings [readIndex] = زاویه ؛ total = total + angleReadings [readIndex] ؛ readIndex = readIndex + 1 ؛ if (readIndex> = numReadings) {readIndex = 0؛ }

if (gz> 30000) {Serial.println ("Bang")؛ کلیک ماوس()؛ // با تکان دادن اسلحه به عقب (ضربه انگشت) شلیک کنید}

// accx، accy، accz؛

mpu.getMotion6 (& ax، & ay، & az، & gx، & gy، & gz)؛ mpu.getAcceleration (& accx، & accy، & accz)؛ //Serial.println(gy) ؛ // Serial.println (زاویه) ؛

oldZ = newZ؛

vx = (gx + 1000) / 150 ؛ vy = - (gz - 200) / 150 ؛ موس. حرکت (vx ، vy) ؛ تأخیر (20) ؛

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

Wat er waarschijnlijk gaat gebeuren is je je cursor uit zichzelf over je scherm gaat bewegen (پیوندهای این شبکه ها ، از طریق دیاگونال) و از طریق کد دریافت اطلاعات لازم است. ارزش های موجود در "gx + 1000" en "gz - 200" aanpassen totdat je het resultaat krijat dat je wil en ik denk dat de values می خواهد با تصمیم گیری درمورد افزایش ارزش آن پیوند داشته باشد. 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 om 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 ("ضربه تند به راست") ؛ // هنگام تکان دادن اسلحه به سمت راست Keyboard.write ('r') بارگیری مجدد شود. تأخیر (250) ؛ } Serial.print ("accx =")؛ Serial.print (accx) ؛ Serial.print ("| accy =")؛ Serial.print (accy) ؛ Serial.print ("| accz =")؛ Serial.println (accz) ؛ // کار // زاویه = atan2 ((شناور) (ay - 16384) ، (float) (ax - 16384)) * (180.0 /PI) * -1 ؛ زاویه = atan2 ((شناور) ay ، (شناور) ~ ax) * (180.0 / PI) ؛ // شناور زاویه = atan2 ((float) ay ، (float) -ax) * (180.0 /PI) ؛ //Serial.println(averageAngle) ؛ }

توصیه شده: