Table des matières:

LED et gravité ? : 4 étapes
LED et gravité ? : 4 étapes

Vidéo: LED et gravité ? : 4 étapes

Vidéo: LED et gravité ? : 4 étapes
Vidéo: Pourquoi il ne faut pas PLEURER dans l'ESPACE ? 2024, Novembre
Anonim
LED et gravité ?
LED et gravité ?

Ce projet n'a aucune utilité pratique, mais a été initié comme un exercice d'implémentation de formules physiques liées à la gravité en code C sur un Arduino. Pour rendre les choses visibles, une bande LED néopixel avec 74 LED a été utilisée. L'effet de l'accélération gravitationnelle sur un objet est démontré en utilisant un accéléromètre MPU-6050 et une puce de gyroscope. Cette puce est physiquement attachée à la bande LED, donc lorsque la bande LED est maintenue à un certain angle, la puce mesure l'angle de la bande LED et l'Arduino utilise cette information pour mettre à jour la position d'un objet virtuel comme s'il était une balle qui est en équilibre sur une poutre et roule d'un côté à l'autre si la poutre est tenue à un angle. La position de l'objet virtuel est indiquée sur la bande LED sous la forme d'une seule LED allumée.

Pour mettre à jour la position d'un objet virtuel qui tombe sur terre sous l'influence de la gravité, on utilise la formule:

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

Avec:

y = distance parcourue en mètres y0 = distance de départ en mètres v0 = vitesse de départ en mètres/seconde a = accélération (gravité) en mètres/seconde^2 t = temps en secondes

Étape 1: Circuit

Circuit
Circuit

L'Arduino Pro Mini est alimenté en alimentant une alimentation +5V directement dans la broche +5V, qui est la sortie du régulateur 5V intégré. Cela peut sembler un peu orthodoxe, mais lorsque Vin est laissé ouvert, cela ne pose pas de problème tant que vous n'inversez pas la polarité, car cela ferait certainement griller votre Arduino.

La puce accéléromètre et gyroscope MPU6050 est alimentée via un module convertisseur 5V à 3V3 basse consommation et communique avec l'Arduino via une interface I2C (SDA, SCL). Avec l'Arduino Pro Mini, SDA est connecté à A4 et SCL est connecté à A5, qui sont tous deux situés sur le PCB Arduino Pro Mini. Avec la version Pro Mini que j'utilise, A4 et A5 étaient situés à l'intérieur du PCB (2 trous) et n'étaient pas accessibles via les en-têtes de broche sur les côtés du PCB. Le MPU6050 dispose également d'une sortie d'interruption (INT) qui est utilisée pour indiquer à l'Arduino lorsque de nouvelles données sont disponibles. La bande LED néopixel WS2812B avec 74 LED est alimentée directement par l'alimentation 5V et possède 1 ligne de données (DIN) qui est connectée à une sortie de l'Arduino.

Étape 2: Logiciel

J'ai mis tous les pilotes utilisés par le sketch (.ino) dans le même dossier que le sketch au lieu d'utiliser des bibliothèques. La raison en est que je ne veux pas que les pilotes soient mis à jour, pour empêcher les bogues de s'infiltrer et pour éviter que les modifications que j'ai apportées aux pilotes soient écrasées par les mises à jour.

Voici une liste des fichiers du projet:

  • Balancing_LED_using_MPU6050gyro.ino: fichier de croquis
  • MPU6050.cpp / MPU6050.h: Pilote accéléromètre et gyroscope MPU6050
  • MPU6050_6Axis_MotionApps20.h: définitions et fonctions du MPU6050 DMP (processeur de mouvement numérique)
  • helper_3dmath.h: définitions de classe pour les quaternions et les vecteurs entiers ou flottants.
  • I2Cdev.cpp / I2Cdev.h: driver I2C utilisant la librairie filaire Arduino
  • LEDMotion.cpp / LEDMotion.h: Mise en place de la balance LED de gravité à l'aide de la bande LED et de l'angle mesuré par le MPU6050

Étape 3: Photos

Conseillé: