Mục lục:

ITTT Rolando Ritzen - Găng tay Arcade điều khiển chuyển động: 5 bước
ITTT Rolando Ritzen - Găng tay Arcade điều khiển chuyển động: 5 bước

Video: ITTT Rolando Ritzen - Găng tay Arcade điều khiển chuyển động: 5 bước

Video: ITTT Rolando Ritzen - Găng tay Arcade điều khiển chuyển động: 5 bước
Video: Book 07 - The Hunchback of Notre Dame Audiobook by Victor Hugo (Chs 1-8) 2024, Tháng bảy
Anonim
ITTT Rolando Ritzen - Găng tay Arcade điều khiển chuyển động
ITTT Rolando Ritzen - Găng tay Arcade điều khiển chuyển động

Een handchoen die je kan gebruiken als điều khiển chuyển động voor on-rail shooters. De gimmick van dit project is dat alles motion control is, inclusief het schieten. (Je schiet cửa te "ngón tay đập")

Bước 1: Lấy Materiaal

Het materiaal dat je gaat gật gù hebben là vrij simpel. 1x vi Arduino pro của con quay hồi chuyển Arduino Leonardo1x MPU6050

4x kabels

Bước 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 nối đất> Arduino mặt đất MPU SCL> Chân 3MPU SDA> Chân 2

Bước 3: Thư viện 1

Thư viện 1
Thư viện 1

Dự án Voor dit heb je een paar liên kết tùy chỉnh gật đầu van deze:

Tải xuống tệp ZIP een qua de "Sao chép hoặc tải xuống" knop rechts bovenaan.

Bước 4: Thư viện 2

Thư viện 2
Thư viện 2

Mở tệp de Zip en klik op het mapje "Arduino". En uit deze Arduino map wil je de mapjes "I2Cdev" en "MPU6050" pakken en in je Arduino library zetten (Program Files> Arduino> Library)

Bước 5: De Code

#bao gồm

#include #include #include #include

MPU6050 mpu;

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

int16_t accx, accy, accz; int vx, vy; góc nổi;

// mã làm trơn inputint readIndex = 0; const int numReadings = 20; int angleReadings [numReadings]; int tổng = 0; float AverageAngle = 0.0;

int oldZ = 0;

int newZ = 0;

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

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

void loop () {

tổng = tổng - angleReadings [readIndex];

angleReadings [readIndex] = angle; tổng = total + angleReadings [readIndex]; readIndex = readIndex + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Bang"); Click chuột(); // Bắn bằng cách hất súng về phía sau (đập ngón tay)}

// accx, accy, accz;

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

oldZ = newZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Mouse.move (vx, vy); chậm trễ (20);

Dit stukje code heeft een Beetje uitleg gật gù omdat je het waarschijnlijk een klein Beetje moet aanpassen.

Wat er waarschijnlijk gaat gebeuren là dat je con trỏ uit zichzelf over je scherm gaat bewegen (van rechts naar liên kết, van boven naar onder của sơ đồ) vi dit stukje mã zorgt er voor dat je curor stil Blijft staan als je geen đầu vào geeft. Je moet de value in "gx + 1000" en "gz - 200" aanpassen totdat je het resultaat krijgt dat je wil en ik denk dat de value die wil gật gù hebt afhankelijk zijn van je scherm Resolutionutie. 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 sơ đồ 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 ("Vuốt sang phải"); // Nạp lại khi gạt súng sang bên phải Keyboard.write ('r'); chậm trễ (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // làm việc // angle = atan2 ((float) (ay - 16384), (float) (ax - 16384)) * (180.0 / PI) * -1; angle = atan2 ((float) ay, (float) ~ ax) * (180.0 / PI); // float angle = atan2 ((float) ay, (float) -ax) * (180.0 / PI); //Serial.println(averageAngle); }

Đề xuất: