Alle Projekte
// Modul 319 · Applikationen entwerfen & implementieren
Autonomes Fahrzeug — LEGO SPIKE Prime
Autonomes LEGO-Fahrzeug mit Ultraschall-Abstandsmessung, Farbsensor-Steuerung und asynchroner Programmierung — fährt selbstständig, weicht Hindernissen aus und reagiert auf farbcodierte Bodensignale..
// Hardware — Port-Belegung SPIKE Prime Hub
Das Fahrzeug nutzt 3 Motoren und 3 Sensoren, die über den SPIKE Prime Hub gesteuert werden. Der Ultraschallsensor dreht sich auf einem eigenen Motor, um beide Seiten zu scannen.
Port A
Antriebsmotor
- Vorwärtsfahrt
- Start/Stopp via Farbe
Port B
Lenkmotor
- Räder links/rechts
- Max. Winkel: ±20°
Port C + D
Sensormotor + US
- 180° Schwenk-Scan
- Distanz links & rechts
Port E + F
Farb + Taster
- Grün = Start
- Gelb = Ausrichten
- Rot / Taster = Stopp
// Funktionsweise
- Ultraschall-Scan — Sensor dreht sich 180° (90° rechts, dann 180° links), misst Distanz zu beiden Seiten und zeigt Werte auf der LED-Matrix an
- Automatische Lenkung — vergleicht links/rechts Distanz, lenkt in Richtung mit mehr Platz (max ±20°), Notlenkung bei unter 10cm
- Farbsensor-Steuerung — Grün startet den Motor, Gelb stoppt und richtet sich zur freieren Seite aus, Rot/Taster = sofortiger Stopp
- Asynchrone Architektur — alle Funktionen (Messen, Lenken, Farbauswertung, Taster) laufen parallel via async/await
- Akustisches Feedback — Piepton bei Distanz unter 1dm als Warnsignal für den Benutzer
- Zwei Code-Versionen — V1 (synchron, ChatGPT-generiert als Basis) und V2 (async, manuell optimiert und erweitert)
// Code V2 (final) — Kernauszug
Asynchrone Hauptschleife mit Ultraschall + Lenkung
async def ultraschall_messen():
global dist_rechts, dist_links, motor_a_laeuft
if motor_a_laeuft:
motor.run_for_degrees(port.C, 0, 200)
motor.run_for_degrees(port.C, 90, 200)
dist_rechts = distance_sensor.distance(port.D)
light_matrix.write(str(dist_rechts))
if dist_rechts < 100:
sound.beep(2000, 100)
await runloop.sleep_ms(2000)
motor.run_for_degrees(port.C, -180, 400)
dist_links = distance_sensor.distance(port.D)
async def automatische_lenkung():
global dist_links, dist_rechts
if dist_links < 10 or dist_rechts < 10:
# Notlenkung — Piepton + Ausweichen
sound.beep(2000, 100)
if dist_links < dist_rechts:
motor.run_for_degrees(port.B, 45, 200)
else:
motor.run_for_degrees(port.B, -45, 200)
// Kennzahlen
3
Motoren
3
Sensoren
6
Ports belegt
2
Code-Versionen
// Farbsignale
Grün
Motor startet, Fahrt beginnt
Gelb
Stopp, automatisch ausrichten
Rot / Taster
Sofortiger Stopp + Signalton
// Gelernte Konzepte
- Asynchrone Programmierung (async/await)
- Sensor-Fusion (Ultraschall + Farbe)
- Echtzeit-Steuerungslogik
- Hardware-Software Integration
- Iteratives Code-Design (V1 → V2)
- Fehlerbehandlung bei Sensorwerten
// Teamarbeit
Gruppenprojekt — gemeinsamer Hardware-Aufbau, Code-Entwicklung und Dokumentation (12 Seiten PDF).
Weitere Projekte entdecken
Zurück zur Projektübersicht oder direkt Kontakt aufnehmen.