Inhaltsverzeichnis:

LEDs und Schwerkraft? - Gunook
LEDs und Schwerkraft? - Gunook

Video: LEDs und Schwerkraft? - Gunook

Video: LEDs und Schwerkraft? - Gunook
Video: LED Feuer Lampe / Fire Lamp / Fackel Effekt von ERO LICHTTECHNIK 2024, Juli
Anonim
LEDs und Schwerkraft ?
LEDs und Schwerkraft ?

Dieses Projekt hat überhaupt keinen praktischen Nutzen, sondern wurde als Übung zur Implementierung physikalischer Formeln in Bezug auf die Schwerkraft in C-Code auf einem Arduino initiiert. Um die Dinge sichtbar zu machen, wurde ein Neopixel-LED-Streifen mit 74 LEDs verwendet. Die Wirkung der Gravitationsbeschleunigung auf ein Objekt wird unter Verwendung eines MPU-6050-Beschleunigungsmessers und eines Gyroskop-Chips demonstriert. Dieser Chip ist physisch am LED-Streifen befestigt. Wenn der LED-Streifen also in einem bestimmten Winkel gehalten wird, misst der Chip den Winkel des LED-Streifens und das Arduino verwendet diese Informationen, um die Position eines virtuellen Objekts zu aktualisieren, als ob es war eine Kugel, die auf einem Balken balanciert ist und von einer Seite zur anderen rollt, wenn der Balken schräg gehalten wird. Die Position des virtuellen Objekts wird auf dem LED-Streifen als einzelne leuchtende LED angezeigt.

Um die Position eines virtuellen Objekts, das unter dem Einfluss der Schwerkraft auf die Erde fällt, zu aktualisieren, verwenden wir die Formel:

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

Mit:

y = zurückgelegte Strecke in Metern y0 = Startstrecke in Metern v0 = Startgeschwindigkeit in Metern/Sekunde a = Beschleunigung (Schwerkraft) in Meter/Sekunde^2 t = Zeit in Sekunden

Schritt 1: Schaltung

Schaltkreis
Schaltkreis

Der Arduino Pro Mini wird mit Strom versorgt, indem eine +5V-Versorgung direkt in den +5V-Pin eingespeist wird, der der Ausgang des integrierten 5V-Reglers ist. Dies mag ein wenig orthodox erscheinen, aber wenn Vin offen gelassen wird, stellt dies kein Problem dar, solange Sie die Polarität nicht umkehren, da dies sicherlich Ihren Arduino anstoßen würde.

Der MPU6050-Beschleunigungsmesser- und Gyroskop-Chip wird über ein stromsparendes 5V zu 3V3-Wandlermodul mit Strom versorgt und kommuniziert über eine I2C-Schnittstelle (SDA, SCL) mit dem Arduino. Beim Arduino Pro Mini ist SDA mit A4 und SCL mit A5 verbunden, die sich beide auf der Arduino Pro Mini-Platine befinden. Bei der von mir verwendeten Pro Mini-Version befanden sich A4 und A5 innerhalb der Platine (2 Löcher) und waren über die Stiftleisten an den Seiten der Platine nicht zugänglich. Der MPU6050 verfügt auch über einen Interrupt-Ausgang (INT), der verwendet wird, um dem Arduino mitzuteilen, wenn neue Daten verfügbar sind. Der Neopixel-LED-Streifen WS2812B mit 74 LEDs wird direkt von der 5V-Versorgung gespeist und verfügt über 1 Datenleitung (DIN), die mit einem Ausgang des Arduino verbunden ist.

Schritt 2: Software

Ich lege alle Treiber, die von der Skizze (.ino) verwendet werden, in denselben Ordner wie die Skizze, anstatt Bibliotheken zu verwenden. Der Grund dafür ist, dass ich nicht möchte, dass die Treiber aktualisiert werden, um zu verhindern, dass sich Fehler einschleichen und dass Änderungen, die ich an den Treibern vorgenommen habe, durch Updates überschrieben werden.

Hier ist eine Liste der Projektdateien:

  • Balancing_LED_using_MPU6050gyro.ino: Skizzendatei
  • MPU6050.cpp / MPU6050.h: MPU6050 Beschleunigungsmesser- und Gyroskop-Treiber
  • MPU6050_6Axis_MotionApps20.h: MPU6050 DMP (Digital Motion Processor) Definitionen und Funktionen
  • helper_3dmath.h: Klassendefinitionen für Quaternionen und Integer- oder Float-Vektoren.
  • I2Cdev.cpp / I2Cdev.h: I2C-Treiber mit der Arduino-Drahtbibliothek
  • LEDMotion.cpp / LEDMotion.h: Implementierung der Gravitations-LED-Balance unter Verwendung des LED-Streifens und des vom MPU6050. gemessenen Winkels

Schritt 3: Bilder

Empfohlen: