สารบัญ:

ITTT Rolando Ritzen - ถุงมืออาเขตควบคุมการเคลื่อนไหว: 5 ขั้นตอน
ITTT Rolando Ritzen - ถุงมืออาเขตควบคุมการเคลื่อนไหว: 5 ขั้นตอน

วีดีโอ: ITTT Rolando Ritzen - ถุงมืออาเขตควบคุมการเคลื่อนไหว: 5 ขั้นตอน

วีดีโอ: ITTT Rolando Ritzen - ถุงมืออาเขตควบคุมการเคลื่อนไหว: 5 ขั้นตอน
วีดีโอ: Adele - Rolling in the Deep (Official Music Video) 2024, กรกฎาคม
Anonim
ITTT Rolando Ritzen - ถุงมืออาเขตควบคุมการเคลื่อนไหว
ITTT Rolando Ritzen - ถุงมืออาเขตควบคุมการเคลื่อนไหว

Een handschoen die je kan gebruiken als ตัวควบคุมการเคลื่อนไหวสำหรับนักกีฬาบนราง De gimmick van dit project is dat alles motion control is, inclusief het schieten (เฌอ ชิเอ็ท ดอร์ เต "ฟิงเกอร์ บังเกน")

ขั้นตอนที่ 1: Het Materiaal

Het materiaal dat je gaat nodig hebben คือ vrij simpel 1x Arduino pro micro ของ Arduino Leonardo1x MPU6050 ไจโรสโคป

สาย 4x

ขั้นตอนที่ 2: De Bekabeling

De Bekabeling
De Bekabeling

Zoals je ใน het schema ใน de afbeelding ziet คือ de bekabeling super simpel MPU VCC > Arduino VCCMPU กราวด์ > Arduino กราวด์MPU SCL > พิน 3MPU SDA > พิน 2

ขั้นตอนที่ 3: ไลบรารี 1

ห้องสมุด 1
ห้องสมุด 1

สำหรับโครงการ dit heb je een paar ไลบรารีที่กำหนดเอง nodig van deze ลิงก์:

ดาวน์โหลดไฟล์ ZIP ผ่านทาง "Clone or download" knop rechts bovenaan

ขั้นตอนที่ 4: ไลบรารี 2

ห้องสมุด 2
ห้องสมุด 2

เปิดไฟล์ Zip คลิกเพื่อดูแผนที่ "Arduino" ใช้แผนที่ Arduino กับแผนที่ "I2Cdev" และ "MPU6050" ในไลบรารี Arduino zetten (ไฟล์โปรแกรม > Arduino > ไลบรารี)

ขั้นตอนที่ 5: ถอดรหัสโค้ด

#รวม

#รวม #รวม #รวม #รวม

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]; รวมทั้งหมด = 0; ค่าเฉลี่ยลอยตัว = 0.0;

int oldZ = 0;

int ใหม่Z = 0;

การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); Wire.begin(); Mouse.begin(); mpu.initialize(); if (!mpu.testConnection()) { ในขณะที่ (1); }

สำหรับ (int thisReading = 0; thisReading < numReadings; thisReading ++) { angleReadings [thisReading] = 0; } }

วงเป็นโมฆะ () {

รวม = รวม - การอ่านมุม [readIndex];

angleReadings[readIndex] = มุม; รวม = รวม + การอ่านมุม [readIndex]; readIndex = readIndex + 1; ถ้า (readIndex >= numReadings) { readIndex = 0; }

ถ้า (gz > 30000) { Serial.println ("ปัง"); Mouse.click(); //ยิงโดยการสะบัดปืนไปข้างหลัง (นิ้วกระแทก) }

//accx, accy, accz;

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

oldZ = ใหม่Z;

vx = (gx + 1,000) / 150; vy = -(gz - 200) / 150; Mouse.move(vx, vy); ล่าช้า (20);

โค้ด heeft een beetje uitleg nodig omdat je het waarschijnlijk een klein beetje moet aanpassen

วัด 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 sta je curor input Je moet de ค่าใน "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 เคอร์เซอร์ uit zichzelf van rechts ลิงก์ที่เชื่อมโยง กับ "gx + x" อันพาสเซน. เคอร์เซอร์ใช้ zichzelf van boven ที่ด้านบน beweegd wil je de "gz - x" aan passen นอกจากนี้ dan kies je een van de twee values 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); ถ้า (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); //ทำงาน //angle = atan2((float) (ay - 16384), (float) (ax - 16384)) * (180.0 / PI) * -1; มุม = atan2((ลอย) ay, (ลอย) ~ขวาน) * (180.0 / PI); // มุมลอย = atan2((ลอย) ay, (ลอย) -ax) * (180.0 / PI); //Serial.println(มุมเฉลี่ย); }

แนะนำ: