Sommario:

LED e gravità?: 4 passaggi
LED e gravità?: 4 passaggi

Video: LED e gravità?: 4 passaggi

Video: LED e gravità?: 4 passaggi
Video: COME INSTALLARE LED IN FIBRA OTTICA SULLA TUA AUTO IN 5 MINUTI! 2024, Dicembre
Anonim
LED e gravità?
LED e gravità?

Questo progetto non ha alcun uso pratico, ma è stato avviato come esercizio nell'implementazione di formule fisiche relative alla gravità in codice C su un Arduino. Per rendere le cose visibili, è stata utilizzata una striscia LED in neopixel con 74 LED. L'effetto dell'accelerazione gravitazionale su un oggetto è dimostrato utilizzando un accelerometro MPU-6050 e un giroscopio. Questo chip è fisicamente attaccato alla striscia LED, quindi quando la striscia LED è tenuta ad una certa angolazione, il chip misura l'angolo della striscia LED e Arduino usa queste informazioni per aggiornare la posizione di un oggetto virtuale come se era una palla che è in equilibrio su una trave e rotola da un lato all'altro se la trave è tenuta inclinata. La posizione dell'oggetto virtuale è indicata sulla striscia LED come un singolo LED illuminato.

Per aggiornare la posizione di un oggetto virtuale che sta cadendo a terra sotto l'influenza della gravità, usiamo la formula:

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

Insieme a:

y = distanza percorsa in metri y0 = distanza iniziale in metri v0 = velocità iniziale in metri/secondo a = accelerazione (gravità) in metri/secondo^2 t = tempo in secondi

Passaggio 1: circuito

Circuito
Circuito

L'Arduino Pro Mini è alimentato alimentando un'alimentazione +5V direttamente nel pin +5V, che è l'uscita del regolatore 5V integrato. Questo potrebbe sembrare un po' ortodosso, ma quando Vin viene lasciato aperto, non crea problemi a patto di non invertire la polarità, perché questo brinderebbe sicuramente al tuo Arduino.

L'accelerometro MPU6050 e il chip giroscopio sono alimentati tramite un modulo convertitore da 5V a 3V3 a bassa potenza e comunica con Arduino tramite un'interfaccia I2C (SDA, SCL). Con Arduino Pro Mini, SDA è collegato ad A4 e SCL è collegato ad A5, entrambi situati sul PCB Arduino Pro Mini. Con la versione Pro Mini che utilizzo, A4 e A5 si trovavano all'interno del PCB (2 fori) e non erano accessibili tramite le intestazioni dei pin ai lati del PCB. L'MPU6050 ha anche un'uscita di interruzione (INT) che viene utilizzata per comunicare ad Arduino quando sono disponibili nuovi dati. La striscia LED neopixel WS2812B con 74 LED è alimentata direttamente dall'alimentazione a 5V e dispone di 1 linea dati (DIN) che è collegata a un'uscita dell'Arduino.

Passaggio 2: software

Ho messo tutti i driver utilizzati dallo sketch (.ino) nella stessa cartella dello sketch invece di usare le librerie. La ragione di ciò è che non voglio che i driver vengano aggiornati, per evitare che i bug si introducano di nascosto e per evitare che le modifiche che ho fatto ai driver vengano sovrascritte dagli aggiornamenti.

Ecco un elenco dei file di progetto:

  • Balancing_LED_using_MPU6050gyro.ino: file di schizzo
  • MPU6050.cpp / MPU6050.h: accelerometro MPU6050 e driver del giroscopio
  • MPU6050_6Axis_MotionApps20.h: definizioni e funzioni MPU6050 DMP (processore di movimento digitale)
  • helper_3dmath.h: definizioni di classe per quaternioni e vettori interi o float.
  • I2Cdev.cpp / I2Cdev.h: driver I2C che utilizza la libreria di fili Arduino
  • LEDMotion.cpp / LEDMotion.h: Implementazione del bilanciamento del LED gravitazionale utilizzando la striscia LED e l'angolo misurato dall'MPU6050

Passaggio 3: immagini

Consigliato: