Cuprins:

LED-uri și gravitație?: 4 pași
LED-uri și gravitație?: 4 pași

Video: LED-uri și gravitație?: 4 pași

Video: LED-uri și gravitație?: 4 pași
Video: TUTORIAL: cum se scot / demonteaza ceasurile de bord VW Golf 4 Mk4 in 3 pasi 2024, Noiembrie
Anonim
LED-uri și gravitație?
LED-uri și gravitație?

Acest proiect nu are deloc o utilizare practică, dar a fost inițiat ca un exercițiu de implementare a formulelor fizice legate de gravitație în codul C pe un Arduino. Pentru a face lucrurile vizibile, a fost utilizată o bandă cu LED-uri neopixel cu 74 de LED-uri. Efectul accelerației gravitaționale asupra unui obiect este demonstrat prin utilizarea unui accelerometru MPU-6050 și a unui cip giroscop. Acest cip este atașat fizic la banda LED, deci atunci când banda LED este ținută la un anumit unghi, cipul măsoară unghiul benzii LED, iar Arduino folosește aceste informații pentru a actualiza poziția unui obiect virtual ca și cum ar fi a fost o minge care este echilibrată pe o grindă și se rostogolește dintr-o parte în alta dacă grinda este ținută într-un unghi. Poziția obiectului virtual este indicată pe banda LED ca un singur LED care este iluminat.

Pentru a actualiza poziția unui obiect virtual care cade pe pământ sub influența gravitației, folosim formula:

y = y0 + (V0 * t) + (0,5 * a * t ^ 2)

Cu:

y = distanța parcursă în metri y0 = distanța inițială în metri v0 = viteza de pornire în metri / secundă a = accelerația (gravitația) în metri / secundă ^ 2 t = timpul în secunde

Pasul 1: Circuit

Circuit
Circuit

Arduino Pro Mini este alimentat prin alimentarea unei surse de + 5V direct în pinul de + 5V, care este ieșirea regulatorului de 5V de la bord. Acest lucru ar putea părea cam ortodox, dar atunci când Vin este lăsat deschis, nu creează o problemă atâta timp cât nu inversați polaritatea, deoarece acest lucru ar prăji cu siguranță Arduino.

Cipul accelerometrului și giroscopul MPU6050 este alimentat printr-un modul convertor de 5V la 3V3 de putere redusă și vorbește cu Arduino printr-o interfață I2C (SDA, SCL). Cu Arduino Pro Mini, SDA este conectat la A4 și SCL este conectat la A5, ambele fiind amplasate pe PCB-ul Arduino Pro Mini. Cu versiunea Pro Mini pe care o folosesc, A4 și A5 erau amplasate în interiorul PCB-ului (2 găuri) și nu erau accesibile prin intermediul anteturilor pinului de pe părțile laterale ale PCB-ului. MPU6050 are, de asemenea, o ieșire de întrerupere (INT) care este utilizată pentru a informa Arduino când există date noi disponibile. Banda LED WS2812B neopixel cu 74 de LED-uri este alimentată direct de sursa de 5V și are o linie de date (DIN) conectată la o ieșire a Arduino.

Pasul 2: Software

Am pus toate driverele care sunt utilizate de schiță (.ino) în același folder cu schița în loc să folosesc biblioteci. Motivul pentru aceasta este că nu vreau ca driverele să fie actualizate, pentru a preveni accesarea bug-urilor și pentru a preveni ca modificările pe care le-am făcut driverelor să fie suprascrise de actualizări.

Iată o listă a fișierelor proiectului:

  • Balancing_LED_using_MPU6050gyro.ino: fișier schiță
  • MPU6050.cpp / MPU6050.h: accelerometru MPU60 și driver giroscop
  • MPU6050_6Axis_MotionApps20.h: definiții și funcții MPU6050 DMP (procesor digital de mișcare)
  • helper_3dmath.h: Definiții de clasă pentru cuaterniuni și vectori întregi sau flotanți.
  • I2Cdev.cpp / I2Cdev.h: driver I2C utilizând biblioteca de fire Arduino
  • LEDMotion.cpp / LEDMotion.h: Implementarea balanței de gravitație LED utilizând banda LED și unghiul măsurat de MPU6050

Pasul 3: imagini

Recomandat: