Мазмұны:

ITTT Rolando Ritzen - Қозғалысты басқару аркадалық қолғап: 5 қадам
ITTT Rolando Ritzen - Қозғалысты басқару аркадалық қолғап: 5 қадам

Бейне: ITTT Rolando Ritzen - Қозғалысты басқару аркадалық қолғап: 5 қадам

Бейне: ITTT Rolando Ritzen - Қозғалысты басқару аркадалық қолғап: 5 қадам
Бейне: Оздоровительный Цигун «Бадуаньцзинь» / 8 кусков парчи / Ежедневный китайский комплекс. 2024, Қараша
Anonim
ITTT Rolando Ritzen - Motion Control аркадалық қолғап
ITTT Rolando Ritzen - Motion Control аркадалық қолғап

Қолмен жұмыс жасау-бұл рельс бойынша мергендердің қозғалысты реттегіші. Жоба - бұл қозғалысты басқару. (Есік «саусақпен жарылған»)

1 -қадам: Het Materiaal

Материалдық құндылықтар өте қарапайым. 1x Arduino Pro micro Arduino Leonardo1x MPU6050 гироскопы

4x кабель

2 -қадам: Де Бекабелинг

Де Бекабелинг
Де Бекабелинг

Қатысу схемасы - бұл өте қарапайым. MPU VCC> Arduino VCCMPU жер> Arduino groundMPU SCL> 3MPU SDA түйреуіші> 2 түйреуіш

3 -қадам: Кітапханалар 1

Кітапханалар 1
Кітапханалар 1

Қолданбалы кітапханалар сілтемесі жоқ жобаның сілтемесі:

ZIP файлын «Clone немесе жүктеу» арқылы жүктеңіз.

4 -қадам: Кітапханалар 2

Кітапханалар 2
Кітапханалар 2

Zip файлын ашу «Arduino» картасын ашу. Arduino картасы «I2Cdev» және «MPU6050» карталарын Arduino кітапханаларында орналастырады (Бағдарламалық файлдар> Arduino> кітапханалар)

5 -қадам: Декод

#қосу

#қосу #қосу #қосу #қосу

MPU6050 мегапиксель;

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

int16_t accx, accy, accz; int vx, vy; жүзу бұрышы;

// readIndex кіруін тегістеуге арналған код = 0; const int numReadings = 20; int angleReadings [numReadings]; int total = 0; float averageAngle = 0,0;

int oldZ = 0;

int newZ = 0;

void setup () {Serial.begin (115200); Wire.begin (); Тышқан.begin (); mpu.initialize (); if (! mpu.testConnection ()) {while (1); }

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

void loop () {

total = total - angleReadings [readIndex];

angleReadings [readIndex] = бұрыш; total = total + angleReadings [readIndex]; readIndex = readIndex + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println («Bang»); Mouse.click (); // Мылтықты артқа сипау арқылы ату (саусақпен ұру)}

// 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);

Бұл кодты табуға болмайды.

Бұл курсордың негізгі белгісі болып табылады, ол сілтемені басып шығарады (сілтемелер, сілтемелер, диагональ бойынша) және кодты енгізуге болады. Мәндер «gx + 1000» және «gz - 200» мәндерінің мәнін анықтайды, егер сіз бұл шешімдерді қабылдай алмасаңыз. Алдыңғы курсор «gx + x» сілтемелерінен кейін сілтемелерге сілтеме жасайды. Сонымен қатар, олардың құндылықтары бір -бірінен асып түседі.

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 ((float) (ay - 16384), (float) (ax - 16384)) * (180.0 /PI) * -1; бұрыш = atan2 ((float) ay, (float) ~ ax) * (180.0 / PI); // жүзу бұрышы = atan2 ((float) ay, (float) -ax) * (180.0 /PI); //Serial.println(averageAngle); }

Ұсынылған: