LED blinken lassen – Visuelle Signale programmieren
LEDs (Light Emitting Diodes) sind nicht nur schön anzusehen, sondern auch äußerst praktisch für die Programmierung. Sie ermöglichen visuelle Rückmeldungen, Statusanzeigen und können zur Fehlersuche eingesetzt werden. Der Arduino Alvik verfügt über mehrere LEDs, die du individuell ansteuern kannst.
Die LEDs auf dem Alvik
Der Alvik hat verschiedene LEDs, die du programmieren kannst:
- ESP32 Onboard-LED: Kleine blaue LED auf dem ESP32-Chip (Pin 45)
- Linke RGB-LED:
alvik.left_led– Farbige LED auf der linken Seite - Rechte RGB-LED:
alvik.right_led– Farbige LED auf der rechten Seite
RGB steht für Rot, Grün, Blau. Durch Mischung dieser drei Grundfarben können nahezu alle Farben erzeugt werden!
Beispiel 1: ESP32 Onboard-LED blinken lassen
Die einfachste LED auf dem Alvik ist die kleine blaue LED auf dem ESP32-Chip. Sie ist ideal für erste Experimente und zum Debuggen.
Code-Beispiel
from machine import Pin
from time import sleep
# LED auf Pin 45 initialisieren
led = Pin(45, Pin.OUT)
while True:
led.value(1) # LED einschalten
sleep(1) # 1 Sekunde warten
led.value(0) # LED ausschalten
sleep(1) # 1 Sekunde warten
Wie funktioniert der Code?
- Import:
machine.Pinfür Hardware-Steuerung,time.sleepfür Pausen - Pin-Konfiguration:
Pin(45, Pin.OUT)setzt Pin 45 als Ausgang - LED an:
led.value(1)schaltet die LED ein (HIGH) - LED aus:
led.value(0)schaltet die LED aus (LOW) - Endlosschleife:
while Truelässt die LED kontinuierlich blinken
Beispiel 2: RGB-LEDs mit Farben
Die RGB-LEDs auf dem Alvik können in verschiedenen Farben leuchten. Du steuerst sie über die Alvik-API mit der Methode set_color().
RGB-Farbsystem verstehen
Jede Farbe wird durch drei Werte definiert:
- Rot (R): Wert von 0 (aus) bis 1 (voll an)
- Grün (G): Wert von 0 (aus) bis 1 (voll an)
- Blau (B): Wert von 0 (aus) bis 1 (voll an)
Wichtige Farben
| Farbe | RGB-Werte | Code |
|---|---|---|
| Rot | (1, 0, 0) | set_color(1, 0, 0) |
| Grün | (0, 1, 0) | set_color(0, 1, 0) |
| Blau | (0, 0, 1) | set_color(0, 0, 1) |
| Gelb | (1, 1, 0) | set_color(1, 1, 0) |
| Cyan | (0, 1, 1) | set_color(0, 1, 1) |
| Magenta | (1, 0, 1) | set_color(1, 0, 1) |
| Weiß | (1, 1, 1) | set_color(1, 1, 1) |
| Aus | (0, 0, 0) | set_color(0, 0, 0) |
Code-Beispiel: Farbwechsel
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
# Blinke 5 mal durch verschiedene Farben
for _ in range(5):
# Linke LED: Blau
alvik.left_led.set_color(0, 0, 1)
sleep_ms(1000)
# Linke LED: Grün
alvik.left_led.set_color(0, 1, 0)
sleep_ms(1000)
# Linke LED: Rot
alvik.left_led.set_color(1, 0, 0)
sleep_ms(1000)
# Rechte LED: Blau
alvik.right_led.set_color(0, 0, 1)
sleep_ms(1000)
# Rechte LED: Grün
alvik.right_led.set_color(0, 1, 0)
sleep_ms(1000)
# Rechte LED: Rot
alvik.right_led.set_color(1, 0, 0)
sleep_ms(1000)
# Alle LEDs ausschalten
alvik.left_led.set_color(0, 0, 0)
alvik.right_led.set_color(0, 0, 0)
Beispiel 3: Synchrones Blinken beider LEDs
Lass beide LEDs gleichzeitig in der gleichen Farbe blinken:
from arduino_alvik import ArduinoAlvik
from time import sleep
alvik = ArduinoAlvik()
alvik.begin()
while True:
# Beide LEDs rot
alvik.left_led.set_color(1, 0, 0)
alvik.right_led.set_color(1, 0, 0)
sleep(0.5)
# Beide LEDs aus
alvik.left_led.set_color(0, 0, 0)
alvik.right_led.set_color(0, 0, 0)
sleep(0.5)
Beispiel 4: Wechselblinker (Polizeisignal)
Erstelle ein Blaulicht-Effekt mit abwechselnd blinkenden LEDs:
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
# Blaulicht für 10 Sekunden
for _ in range(20):
# Linke LED blau, rechte aus
alvik.left_led.set_color(0, 0, 1)
alvik.right_led.set_color(0, 0, 0)
sleep_ms(250)
# Rechte LED blau, linke aus
alvik.left_led.set_color(0, 0, 0)
alvik.right_led.set_color(0, 0, 1)
sleep_ms(250)
# Ausschalten
alvik.left_led.set_color(0, 0, 0)
alvik.right_led.set_color(0, 0, 0)
Beispiel 5: Regenbogen-Effekt
Durchlaufe sanft verschiedene Farben:
from arduino_alvik import ArduinoAlvik
from time import sleep
alvik = ArduinoAlvik()
alvik.begin()
# Farbsequenz: Rot → Gelb → Grün → Cyan → Blau → Magenta → Rot
farben = [
(1, 0, 0), # Rot
(1, 1, 0), # Gelb
(0, 1, 0), # Grün
(0, 1, 1), # Cyan
(0, 0, 1), # Blau
(1, 0, 1), # Magenta
]
while True:
for farbe in farben:
alvik.left_led.set_color(farbe[0], farbe[1], farbe[2])
alvik.right_led.set_color(farbe[0], farbe[1], farbe[2])
sleep(0.5)
Beispiel 6: LED als Status-Anzeige
Nutze LEDs zur Anzeige von Zuständen während der Fahrt:
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
distance_threshold = 15
while True:
# Abstand messen
distance_l, distance_cl, distance_c, distance_r, distance_cr = alvik.get_distance()
if distance_c < distance_threshold:
# Hindernis: Rote LEDs
alvik.left_led.set_color(1, 0, 0)
alvik.right_led.set_color(1, 0, 0)
alvik.rotate(45)
else:
# Freie Fahrt: Grüne LEDs
alvik.left_led.set_color(0, 1, 0)
alvik.right_led.set_color(0, 1, 0)
alvik.move(10)
sleep_ms(100)
Praktische Anwendungen für LEDs
Debugging und Fehlersuche
LEDs sind hervorragend zum Debuggen, wenn keine USB-Verbindung besteht:
- Grün: Programm läuft normal
- Rot: Fehler oder Problem erkannt
- Blau: Warte auf Eingabe oder Sensor
- Blinken: Zeigt an, dass Code ausgeführt wird
Benutzer-Feedback
- Zeige Betriebszustände an (Bereit, Aktiv, Pausiert)
- Signalisiere erfolgreiche oder fehlgeschlagene Aktionen
- Warne vor niedrigem Batteriestand
- Zeige Sensorzustände visuell an
Show-Effekte
- Erstelle Lichtshows zur Präsentation
- Synchronisiere LEDs mit Bewegungen
- Reagiere auf Musik oder Sound
- Erstelle Muster und Animationen
Helligkeitssteuerung
Du kannst auch Zwischenwerte verwenden, um die Helligkeit zu reduzieren:
from arduino_alvik import ArduinoAlvik
from time import sleep
alvik = ArduinoAlvik()
alvik.begin()
# Verschiedene Helligkeitsstufen
alvik.left_led.set_color(1.0, 0, 0) # Voll hell rot
sleep(1)
alvik.left_led.set_color(0.5, 0, 0) # Halbe Helligkeit rot
sleep(1)
alvik.left_led.set_color(0.1, 0, 0) # Sehr dunkel rot
sleep(1)
alvik.left_led.set_color(0, 0, 0) # Aus
Tipps & Best Practices
- Energie sparen: Schalte LEDs aus, wenn sie nicht benötigt werden
- Nicht zu schnell blinken: Unter 100ms kann schwer zu sehen sein
- Farben sinnvoll wählen: Rot = Warnung/Stop, Grün = OK, Blau = Info
- Beide LEDs nutzen: Unterschiedliche Seiten für verschiedene Informationen
- Kommentare im Code: Dokumentiere, was welche Farbe bedeutet
Häufige Fehler und Lösungen
| Problem | Ursache | Lösung |
|---|---|---|
| LED leuchtet nicht | Falscher Pin oder nicht initialisiert | Prüfe Pin-Nummer (45 für ESP32 LED) |
| Falsche Farbe | RGB-Werte vertauscht | Reihenfolge: (Rot, Grün, Blau) |
| LED zu hell/dunkel | Helligkeitswert falsch | Werte zwischen 0.0 und 1.0 verwenden |
| Blinken zu schnell/langsam | sleep() Zeit anpassen | Experimentiere mit verschiedenen Werten |
Zusammenfassung
LED-Programmierung auf dem Alvik:
- ESP32 LED:
Pin(45, Pin.OUT)für einfache Ein/Aus-Signale - RGB-LEDs:
alvik.left_led.set_color(r, g, b)für farbige Anzeigen - Werte: 0 = aus, 1 = voll an, Zwischenwerte für Helligkeit
- Farben: Mische Rot, Grün und Blau für alle Farben
- Anwendung: Status, Debugging, Show-Effekte
Mit LEDs machst du deinen Alvik nicht nur schöner, sondern auch informativer und einfacher zu debuggen! 💡
Challenge: Teste dein Wissen!
Prüfe, ob du alles verstanden hast
🧠 Wissens-Check
1. Welche Farb-Parameter hat set_color(r, g, b)?
2. Wie schaltet man eine LED aus?
💻 Programmier-Challenge
📝 Ampel-Simulation
Programmiere eine Ampelschaltung: Rot (3 Sek) → Gelb (1 Sek) → Grün (3 Sek) → Gelb (1 Sek) → wieder Rot
- Rot: set_color(1, 0, 0)
- Gelb: set_color(1, 1, 0)
- Grün: set_color(0, 1, 0)
- Nutze time.sleep() für die Wartezeiten
✅ Selbsttest: Das kann ich jetzt!
Hake ab, was du verstanden hast:
Punkte verstanden