💡 Aufgabe: LEDs mit Bewegung steuern
In dieser Aufgabe lernst du, wie du Sensordaten nutzt, um LEDs zu steuern. Dein Shuttle reagiert auf Neigung – wenn du es nach links oder rechts kippst, leuchtet die entsprechende Navigations-LED! 🚀
🧠 Ziel
- Du liest Neigungswerte (Winkel) vom MPU6050 aus.
- Du nutzt diese Werte, um LEDs gezielt ein- oder auszuschalten.
- Du siehst direkt, wie dein Code auf Bewegungen reagiert.
⚙️ Aufbau
Verwende die vorhandenen LEDs:
- 🔴 Port (links): Pin 5
- 🟢 Starboard (rechts): Pin 6
- ✨ Beacon (unten): Pin 3 (optional, für Status)
🧪 Code
#include <Wire.h>
#include <MPU6050_tockn.h>
MPU6050 mpu(Wire);
const int portLedPin = 5; // linke LED (rot)
const int starboardLedPin = 6; // rechte LED (grün)
const int beaconLedPin = 3; // obere Beacon LED
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.begin();
mpu.calcGyroOffsets(true); // Sensor kalibrieren
pinMode(portLedPin, OUTPUT);
pinMode(starboardLedPin, OUTPUT);
pinMode(beaconLedPin, OUTPUT);
}
void loop() {
mpu.update();
float angleY = mpu.getAngleY(); // Neigung nach links/rechts
float angleX = mpu.getAngleX(); // Neigung nach vorne/hinten
// LEDs basierend auf der Neigung einschalten
digitalWrite(portLedPin, angleY < -5); // nach links kippen → linke LED
digitalWrite(starboardLedPin, angleY > 5); // nach rechts kippen → rechte LED
// Optional: Beacon LED blinkt bei stärkerer Neigung
if (abs(angleY) > 20 || abs(angleX) > 20) {
digitalWrite(beaconLedPin, HIGH);
} else {
digitalWrite(beaconLedPin, LOW);
}
// Ausgabe im Serial Monitor
Serial.print("Roll (X): ");
Serial.print(angleX);
Serial.print("° | Pitch (Y): ");
Serial.println(angleY);
delay(100);
}
🔍 Erklärung
mpu.getAngleX()→ misst, wie stark das Shuttle nach vorne/hinten geneigt istmpu.getAngleY()→ misst, wie stark das Shuttle nach links/rechts geneigt ist- Je nach Winkel werden die Navigationslichter aktiviert
- Der Grenzwert
±5°verhindert, dass die LEDs bei kleinen Bewegungen ständig flackern
✅ Checkliste
- LEDs reagieren auf Bewegung nach links/rechts
- Werte erscheinen im Serial Monitor
- Beacon-LED leuchtet bei starker Bewegung
- Kein
delay()-Problem: Sensorwerte werden regelmäßig aktualisiert
🚀 Bonus-Ideen
- Passe den Schwellwert (
±5°) an, um die Empfindlichkeit zu verändern. - Lasse die Beacon-LED pulsieren, wenn das Shuttle „fliegt“ (stark bewegt wird).
- Miss, ob sich die X/Y-Achsen ändern, wenn du das Shuttle anders herum montierst.