Innehållsförteckning:

Lysdioder och gravitation?: 4 steg
Lysdioder och gravitation?: 4 steg

Video: Lysdioder och gravitation?: 4 steg

Video: Lysdioder och gravitation?: 4 steg
Video: Камера-ЛАМПА со слежением и определением человека. 2024, Juli
Anonim
Lysdioder och gravitation?
Lysdioder och gravitation?

Detta projekt har ingen praktisk användning alls, men initierades som en övning för att implementera fysikformler relaterade till gravitation i C-kod på en Arduino. För att göra saker synliga användes en neopixel LED-remsa med 74 lysdioder. Gravitationsaccelerationens effekt på ett objekt demonstreras med hjälp av en MPU-6050 accelerometer och gyroskopchip. Detta chip är fysiskt anslutet till LED-remsan, så när LED-remsan hålls i en viss vinkel mäter chipet LED-remsans vinkel och Arduino använder denna information för att uppdatera positionen för ett virtuellt objekt som om det var en boll som är balanserad på en balk och rullar från ena sidan till den andra om balken hålls i en vinkel. Positionen för det virtuella objektet indikeras på LED -remsan som en enda lysdiod som lyser.

För att uppdatera positionen för ett virtuellt objekt som faller till jorden under påverkan av tyngdkraften använder vi formeln:

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

Med:

y = rest sträcka i meter y0 = startavstånd i meter v0 = starthastighet i meter/sekund a = acceleration (gravitation) i meter/sekund^2 t = tid i sekunder

Steg 1: Krets

Krets
Krets

Arduino Pro Mini drivs av att mata en +5V -matning direkt till +5V -stiftet, som är utgången från den inbyggda 5V -regulatorn. Det kan tyckas lite ortodox, men när Vin lämnas öppen skapar det inte ett problem så länge du inte vänder polariteten, för det skulle säkert skåla din Arduino.

MPU6050 accelerometer och gyroskopchip drivs via en lågeffekts 5V till 3V3 omvandlarmodul och pratar med Arduino via ett I2C -gränssnitt (SDA, SCL). Med Arduino Pro Mini är SDA ansluten till A4 och SCL är ansluten till A5, som båda finns på Arduino Pro Mini -kretskortet. Med Pro Mini -versionen som jag använder var A4 och A5 belägna i kretskortet (2 hål) och var inte tillgängliga via stifthuvudena på sidorna av kretskortet. MPU6050 har också en avbrottsutgång (INT) som används för att berätta för Arduino när det finns ny data tillgänglig. WS2812B neopixel LED -remsa med 74 lysdioder drivs direkt av 5V -matningen och har 1 datalinje (DIN) som är ansluten till en utgång från Arduino.

Steg 2: Programvara

Jag lägger alla drivrutiner som används av skissen (.ino) i samma mapp som skissen istället för att använda bibliotek. Anledningen till detta är att jag inte vill att drivrutinerna ska uppdateras, för att förhindra att buggar smyger in och för att förhindra att ändringar som jag gjorde i drivrutinerna kommer att skrivas över av uppdateringar.

Här är en lista över projektfilerna:

  • Balancing_LED_using_MPU6050gyro.ino: skissfil
  • MPU6050.cpp / MPU6050.h: MPU6050 accelerometer och gyroskopdrivrutin
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (digital motion processor) definitioner och funktioner
  • helper_3dmath.h: Klassdefinitioner för kvaternioner och heltal eller flottörvektorer.
  • I2Cdev.cpp / I2Cdev.h: I2C -drivrutin som använder Arduino -trådbiblioteket
  • LEDMotion.cpp / LEDMotion.h: Implementering av gravitationens LED -balans med hjälp av LED -remsan och vinkel mätt av MPU6050

Steg 3: Bilder

Rekommenderad: