Zum Hauptinhalt springen

💡 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 ist
  • mpu.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.