جدول المحتويات:

ITTT Rolando Ritzen - قفاز التحكم في الحركة: 5 خطوات
ITTT Rolando Ritzen - قفاز التحكم في الحركة: 5 خطوات

فيديو: ITTT Rolando Ritzen - قفاز التحكم في الحركة: 5 خطوات

فيديو: ITTT Rolando Ritzen - قفاز التحكم في الحركة: 5 خطوات
فيديو: Жизнь экспатов в Аргентине: прямая трансляция 2024, يوليو
Anonim
ITTT Rolando Ritzen - قفاز التحكم في الحركة للممرات
ITTT Rolando Ritzen - قفاز التحكم في الحركة للممرات

Een handschoen die je kan gebruiken als motion controller for the-rail shooter. مشروع De gimmick van dit هو التحكم في الحركة ، بما في ذلك شيتن. (Je schiet door te "finger bangen")

الخطوة 1: Het Materiaal

Het materiaal dat je gaat nodig hebben هو vrij simpel. 1x Arduino pro micro من Arduino Leonardo1x جيروسكوب MPU6050

4x كابلات

الخطوة 2: De Bekabeling

دي بيكابلينج
دي بيكابلينج

Zoals je in het schema in de afbeelding ziet هي لعبة بسيطة للغاية. MPU VCC> Arduino VCCMPU ground> Arduino groundMPU SCL> Pin 3MPU SDA> دبوس 2

الخطوة 3: المكتبات 1

المكتبات 1
المكتبات 1

مشروع Voor dit heb je een paar مكتبات مخصصة nodig van deze الرابط:

قم بتنزيل ملف een ZIP عبر de "Clone or download" knop rechts bovenaan.

الخطوة 4: المكتبات 2

المكتبات 2
المكتبات 2

افتح ملف Zip في klik op het mapje "Arduino". En uit deze Arduino map wil je de mapjes "I2Cdev" en "MPU6050" pakken en in je Arduino libraries zetten (Program Files> Arduino> libraries)

الخطوة 5: De Code

#يشمل

# تضمين # تضمين # تضمين # تضمين

MPU6050 وحدة معالجة مركزية ؛

int16_t الفأس ، ay ، az ، gx ، gy ، gz ؛

int16_t accx ، accy ، accz ؛ int vx ، vy ؛ زاوية تعويم

// كود لتنعيم المدخلات readIndex = 0 ؛ const int numReadings = 20 ؛ int angleReadings [numReadings] ؛ مجموع int = 0 ؛ متوسط تعويم الزاوية = 0.0 ؛

int oldZ = 0 ؛

int newZ = 0 ؛

إعداد باطل () {Serial.begin (115200) ؛ Wire.begin () ؛ Mouse.begin () ، mpu.initialize () ، إذا (! mpu.testConnection ()) {while (1)؛ }

لـ (int thisReading = 0؛ thisReading <numReadings؛ thisReading ++) {angleReadings [thisReading] = 0 ؛ }}

حلقة فارغة() {

total = total - angleReadings [readIndex] ؛

angleReadings [readIndex] = زاوية ؛ المجموع = مجموع + زاوية القراءة [فهرس القراءة] ؛ readIndex = readIndex + 1 ؛ إذا (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 ؛ Mouse.move (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 هو dat je cursor uit zichzelf over je scherm gaat bewegen (van rechts naar links، van boven naar onder diagonaal) en dit stukje code zorgt er for dat je curor stil blijft staan als je. قيم قيم في "gx + 1000" en "gz - 200" aanpassen totdat je het resultaat krijgt dat je wil en ik denk dat de value die wil nodig hebt afhankelijk zijn van je scherm Resolution. Als de cursor uit zichzelf van rechts nar 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 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 ("Flick Right") ؛ // إعادة التحميل عند نقر البندقية على لوحة المفاتيح اليمنى. الكتابة ('r') ؛ تأخير (250) ؛ } Serial.print ("accx =") ؛ Serial.print (accx) ؛ Serial.print ("| accy =") ؛ Serial.print (accy) ؛ Serial.print ("| accz =") ؛ Serial.println (accz) ؛ // عامل // زاوية = atan2 ((عائم) (ay - 16384) ، (تعويم) (فأس - 16384)) * (180.0 / PI) * -1 ؛ زاوية = atan2 ((تعويم) ay ، (تعويم) ~ فأس) * (180.0 / PI) ؛ // Float angle = atan2 ((float) ay، (float) -ax) * (180.0 / PI) ؛ //Serial.println(averageAngle) ؛ }

موصى به: