Alle Projekte // Modul 319 · Applikationen entwerfen & implementieren

Autonomes Fahrzeug — LEGO SPIKE Prime

Python LEGO SPIKE Ultraschall Farbsensor Async Robotik

Autonomes LEGO-Fahrzeug mit Ultraschall-Abstandsmessung, Farbsensor-Steuerung und asynchroner Programmierung — fährt selbstständig, weicht Hindernissen aus und reagiert auf farbcodierte Bodensignale..

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
  • 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)
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)
3
Motoren
3
Sensoren
6
Ports belegt
2
Code-Versionen
Grün
Motor startet, Fahrt beginnt
Gelb
Stopp, automatisch ausrichten
Rot / Taster
Sofortiger Stopp + Signalton
  • Asynchrone Programmierung (async/await)
  • Sensor-Fusion (Ultraschall + Farbe)
  • Echtzeit-Steuerungslogik
  • Hardware-Software Integration
  • Iteratives Code-Design (V1 → V2)
  • Fehlerbehandlung bei Sensorwerten

Gruppenprojekt — gemeinsamer Hardware-Aufbau, Code-Entwicklung und Dokumentation (12 Seiten PDF).

Weitere Projekte entdecken

Zurück zur Projektübersicht oder direkt Kontakt aufnehmen.

Alle Projekte Kontakt