🎯 Sensoren auslesen – Verstehen statt Kopieren!
📚 Hilfe brauchst du hier:
• API-Liste – Alle Befehle mit genauer Syntax
• Command Center – Schnell Befehle ausprobieren ohne Code zu schreiben
• API-Liste – Alle Befehle mit genauer Syntax
• Command Center – Schnell Befehle ausprobieren ohne Code zu schreiben
🔌 Wichtig: USB vs. Autonom
Zum Experimentieren (USB-Kabel):
- Einfach Code im Editor ausführen
- Du siehst alle Werte im REPL
Für autonomes Fahren (ohne Kabel):
- Code muss in
main.pygespeichert werden - Alvik startet das Programm beim Einschalten
- Nur LED-Feedback möglich (kein print!)
📊 Challenge 1: Baue dein eigenes Dashboard
Deine Aufgabe: Ergänze den Code, damit ALLE Sensoren ausgelesen werden!
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
while True:
# TODO: Lies die Abstandssensoren aus
# Tipp: alvik.get_distance() gibt 5 Werte zurück
d_l, d_cl, d_c, d_cr, d_r = # <-- DEIN CODE
# TODO: Lies den Farbsensor aus
color = # <-- DEIN CODE
# TODO: Lies die Batterie aus
battery = # <-- DEIN CODE
print("=" * 40)
print(f"🎯 Mitte: {d_c:.1f} cm")
print(f"🎨 Farbe: {color}")
print(f"🔋 Akku: {battery}%")
sleep_ms(500)
💡 Stuck?
Schau in die API-Liste unter "get_distance", "get_color_label" und "get_battery_charge"
Schau in die API-Liste unter "get_distance", "get_color_label" und "get_battery_charge"
❓ Fragen zum Nachdenken:
- Warum gibt
get_distance()5 Werte zurück? - Was bedeutet
:.1fbeim print? - Was passiert wenn du
sleep_ms(500)auf 100 änderst?
🚦 Challenge 2: Abstands-Ampel
Ziel: LEDs sollen rot/gelb/grün leuchten je nach Abstand
Schritt 1: Verstehe den Code
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
while True:
d_l, d_cl, d_c, d_cr, d_r = alvik.get_distance()
# Nur mittlerer Sensor wird genutzt
if d_c < 10:
# ROT bei weniger als 10cm
alvik.left_led.set_color(1, 0, 0)
alvik.right_led.set_color(1, 0, 0)
# TODO: GELB bei 10-20cm
# elif d_c < ???:
# alvik.left_led.set_color(???) # Welche Zahlen für GELB?
# TODO: GRÜN bei mehr als 20cm
# else:
# alvik.left_led.set_color(???)
sleep_ms(100)
📝 Aufgaben:
- Ergänze den Code für GELB und GRÜN
- Teste: Bewege deine Hand vor dem Sensor
- Speichere in
main.pyund teste ohne Kabel
🎯 Level-Up:
- Was wenn links und rechts unterschiedliche Abstände haben?
- Kann der Roboter unterschiedliche LEDs für links/rechts zeigen?
🎨 Challenge 3: Farb-Detektor mit Bug! 🐛
Problem: Dieser Code hat einen Fehler. Findest du ihn?
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
last_color = ""
while True:
color = alvik.get_color_label()
# Zeige nur NEUE Farben an
if color != last_color:
print(f"🎨 Farbe: {color}")
last_color = color
sleep_ms(200)
❓ Was ist das Problem?
💡 Tipp (klicken zum Aufdecken)
Was passiert, wenn der Sensor "UNDEFINED" zurückgibt?
🔧 Deine Lösung: Wie würdest du das beheben?
🎢 Challenge 4: Neigungsmelder
Start-Code (unvollständig):
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
while True:
ax, ay, az, gx, gy, gz = alvik.get_imu()
# ax = Neigung vorwärts/rückwärts
# ay = Neigung links/rechts
if ax > ???: # <-- Welcher Wert macht Sinn?
print("⬆️ Nach vorne gekippt!")
# TODO: Welche LED-Farbe würde passen?
alvik.left_led.set_color(???)
# TODO: Ergänze die anderen Richtungen
# - Nach hinten (ax < -5)
# - Nach links (ay > 5)
# - Nach rechts (ay < -5)
sleep_ms(500)
💡 Was bedeutet ax, ay, az?
Schau in die API-Liste → get_imu() für Details zur IMU
Schau in die API-Liste → get_imu() für Details zur IMU
Experimentier-Aufgaben:
- Probiere verschiedene Schwellenwerte (3, 5, 10)
- Was ist ein guter Wert für "gekippt"?
- Ergänze alle 4 Richtungen
- Bonus: Kombiniere mit LEDs in unterschiedlichen Farben
🧪 Sensor-Experimente
Versuch 1: Messwert-Grenzen
# Finde heraus: Was sind die Min/Max-Werte?
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
alvik = ArduinoAlvik()
alvik.begin()
max_distance = 0
min_distance = 999
while True:
d_l, d_cl, d_c, d_cr, d_r = alvik.get_distance()
# TODO: Aktualisiere max_distance und min_distance
# Tipp: if d_c > max_distance: ...
print(f"Min: {min_distance} | Jetzt: {d_c} | Max: {max_distance}")
sleep_ms(200)
❓ Aufgabe: Ergänze den Code und finde die Sensor-Grenzen!
📋 Sensor-Cheatsheet
| Sensor | Code | Gibt zurück |
|---|---|---|
| 🎯 Abstand | alvik.get_distance() |
d_l, d_cl, d_c, d_cr, d_r (cm) |
| 🎨 Farbe | alvik.get_color_label() |
"RED", "GREEN", "BLUE" usw. |
| 📐 IMU | alvik.get_imu() |
ax, ay, az, gx, gy, gz |
| 🔋 Batterie | alvik.get_battery_charge() |
0-100 (Prozent) |
📖 Alle Sensoren im Detail:
Die vollständige Liste aller Sensor-Befehle findest du in der API-Liste
Die vollständige Liste aller Sensor-Befehle findest du in der API-Liste
💡 Denk-Fragen zum Schluss
- Warum gibt es 5 Abstandssensoren und nicht nur 1?
- Was passiert, wenn du
sleep_ms(100)aufsleep_ms(10)änderst? - Wie oft pro Sekunde werden die Sensoren bei
sleep_ms(200)ausgelesen? - Warum sollte man Farb-Änderungen speichern (
last_color)?
🚀 Weiter geht's:
• Probiere die Befehle im Command Center aus
• Alle Befehle nachschlagen: API-Liste
• Beispiele: Kollisionsvermeidung
• Probiere die Befehle im Command Center aus
• Alle Befehle nachschlagen: API-Liste
• Beispiele: Kollisionsvermeidung
🎯
Challenge: Sensor-Dashboard erstellen
Lese alle Sensoren aus und zeige die Werte an!
🧠 Wissens-Check
1. Wie viele Werte liefert alvik.get_distance()?
✅ Selbsttest: Das kann ich jetzt!
Hake ab, was du verstanden hast:
0/3
Punkte verstanden