Mundarija:

ITTT Rolando Ritzen - Harakatni boshqarish arkadali qo'lqop: 5 qadam
ITTT Rolando Ritzen - Harakatni boshqarish arkadali qo'lqop: 5 qadam

Video: ITTT Rolando Ritzen - Harakatni boshqarish arkadali qo'lqop: 5 qadam

Video: ITTT Rolando Ritzen - Harakatni boshqarish arkadali qo'lqop: 5 qadam
Video: Blood and Shadow | Exandria Unlimited: Calamity | Episode 3 2024, Noyabr
Anonim
ITTT Rolando Ritzen - Harakatni boshqarish arkadali qo'lqop
ITTT Rolando Ritzen - Harakatni boshqarish arkadali qo'lqop

Harakatni boshqaruvchi ham, temir yo'l ustalari ham. Loyiha - bu barcha harakatlarni boshqarish, shu jumladan, hamma narsa. ("Eshik barmog'i" eshigi)

1 -qadam: Het Material

Haqiqatan ham, bu juda oddiy. Arduino Leonardo 1x Arduino pro micro1x MPU6050 giroskopi

4x kabel

2 -qadam: De Bekabeling

De Bekabeling
De Bekabeling

Zoals je in het schema in de afbeelding ziet de bekabeling super simpel. MPU VCC> Arduino VCCMPU er> Arduino groundMPU SCL> Pin 3MPU SDA> Pin 2

3 -qadam: kutubxonalar 1

Kutubxonalar 1
Kutubxonalar 1

Voor dit loyiha maxsus kutubxonalar uchun havola:

ZIP faylini "Clone yoki download" tugmachasi orqali yuklab oling.

4 -qadam: kutubxonalar 2

Kutubxonalar 2
Kutubxonalar 2

Zip faylini "Arduino" da oching. Arduino xaritasi "I2Cdev" va "MPU6050" ni Arduino kutubxonalaridan ajratib turadi (Dastur fayllari> Arduino> kutubxonalari)

5 -qadam: Kodni o'chirish

#qo'shing

#qo'shish #qo'shish #qo'shish #qo'shish

MPU6050 MPa;

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

int16_t accx, accy, accz; int vx, vy; suzish burchagi;

// readIndex kirishni tekislash kodi = 0; const int numReadings = 20; int angleReadings [numReadings]; int jami = 0; float averageAngle = 0.0;

int oldZ = 0;

int newZ = 0;

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

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

void loop () {

jami = jami - burchakReadings [readIndex];

angleReadings [readIndex] = burchak; jami = jami + burchakReadings [readIndex]; readIndex = readIndex + 1; if (readIndex> = numReadings) {readIndex = 0; }

if (gz> 30000) {Serial.println ("Portlash"); Sichqonchani bosing (); // Qurolni orqaga surish bilan otish (barmoq urish)}

// accx, accy, accz;

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

oldZ = yangiZ;

vx = (gx + 1000) / 150; vy = - (gz - 200) / 150; Sichqoncha harakati (vx, vy); kechikish (20);

Bu kodni hech kim bilmaydi, lekin bu sizning xohishingizga mos kelmaydi.

Ma'lumotlar kursi - bu kursorni o'z ichiga oladi, chunki u havolalar, havolalar, diagonallar va boshqa ma'lumotlar bilan ta'minlanadi - bu kodni o'chirib qo'yishdir. "Gx + 1000" va "gz - 200" qiymatlari aniqlanmagan bo'lsa, bu qiymatni o'chirib tashlamaydi. "Gx + x" tugmachasini bosgandan so'ng, "gz - x" yoki "gz - x" tugmachasini bosib o'ting. Al -het diagonaal beweegd, dan kies je een van de twee qadriyatlari juda katta ahamiyatga ega.

Serial.print ("gx =");

Ketma -ket chop etish (gx); Serial.print ("| gz ="); Ketma -ket chop etish (gz); Serial.print ("| gy ="); Serial.println (gy); if (gx> 32000) {Serial.println ("O'ngga suring"); // Qurolni o'ng tomonga bosganda qayta yuklash Keyboard.write ('r'); kechikish (250); } Serial.print ("accx ="); Serial.print (accx); Serial.print ("| accy ="); Serial.print (accy); Serial.print ("| accz ="); Serial.println (accz); // ishchi // burchak = atan2 ((float) (ay - 16384), (float) (bolta - 16384)) * (180.0 /PI) * -1; burchak = atan2 ((float) ay, (float) ~ ax) * (180.0 / PI); // float burchagi = atan2 ((float) ay, (float) -ax) * (180.0 /PI); //Serial.println(averageAngle); }

Tavsiya: