Lektion 8 von 8Robotik mit LEGO SPIKE
Robotik mit LEGO SPIKE · Lektion 8 · 30 Minuten
Auf den echten SPIKE übertragen
Das lernst du
- Pybricks auf den SPIKE-Hub bringen
- Programme aus dem Simulator auf den echten Roboter übertragen
- Vor dem ersten Lauf Sensorwerte messen statt raten
Der Code in dieser Lektion stammt aus dem Buch „Python für Roboter“, Kapitel 2.1 und 2.2, und läuft hier unverändert im Simulator. Zum Buch bei Amazon ↗
Vom Simulator auf den Tisch
Alles, was du hier im Simulator programmiert hast, läuft auch auf dem echten LEGO SPIKE Prime Hub – ohne Änderung, denn der Simulator benutzt dieselben Pybricks-Befehle wie das Buch. Ein paar Dinge musst du aber einmal vorbereiten.
1. Pybricks auf den Hub bringen (einmalig)
So steht es auch im Buch (Kapitel 2.1):
- Öffne in Chrome oder Edge die Seite code.pybricks.com – das ist die Pybricks Web-IDE.
- Verbinde den Hub per USB-Kabel mit dem Computer.
- Folge den Anweisungen der Web-IDE, um die Pybricks-Firmware zu installieren. Deine Projekte in der LEGO-App bleiben erhalten, du kannst jederzeit zurückwechseln.
- Fertig – beim Einschalten zeigt der Hub jetzt das Pybricks-Logo.
Tipp für die Schule: Pybricks lässt sich in Chrome/Edge auch als App installieren (Symbol in der Adressleiste). Dann startet es mit eigenem Fenster und Desktop-Symbol.
2. Programm übertragen
Der Ablauf ist immer derselbe (Buch, Kapitel 2.2):
- Hub per USB anschließen oder per Bluetooth koppeln.
- In der Web-IDE auf das Verbindungssymbol klicken und den Hub auswählen.
- Code einfügen: Im Codelix-Editor klicken, Strg+A (alles markieren) und Strg+C (kopieren) – auf dem Mac ⌘ statt Strg –, dann in Pybricks mit Strg+V einfügen.
- Play drücken – der Code wird übertragen und startet sofort.
- Ergebnis beobachten, die Konsole im Blick behalten.
- Stoppen mit dem Stopp-Knopf in der Web-IDE oder der mittleren Taste am Hub.
3. Checkliste vor dem ersten Lauf
- 🔋 Akku geladen? Ein schwacher Akku macht Motoren langsamer – Strecken stimmen dann nicht mehr.
- 🔌 Ports richtig? Im Code steht
Port.A,Port.B,Port.C– stecken die Kabel genauso? - ↔️ Drehrichtung? Fährt der Roboter rückwärts statt vorwärts, tausche
Direction.CLOCKWISEundCOUNTERCLOCKWISE. - 📏 Kalibriert? Echte Räder sind nie genau 56 mm – mach die Kalibrierung aus Lektion 7.
- 🧹 Platz? Freie Fläche, nichts Zerbrechliches in Reichweite, Kabel ab.
4. Messen statt raten
Der größte Unterschied zwischen Simulator und Wirklichkeit: Licht und Untergrund. Der Linienfolger aus Lektion 4 nimmt an, dass der Sensor am Linienrand 50 misst. Auf deinem Tisch kann das 35 oder 70 sein! Deshalb misst man vorher – genau das ist deine Aufgabe.
Probier hier den Hallo-Hub aus dem Buch noch einmal – auf dem echten Hub erscheint der Lauftext dann auf der Lichtanzeige:
# Zuerst importieren wir die Bausteine, die wir brauchen.
# Pybricks ist in einzelne Module aufgeteilt - das hält den Code übersichtlich.
from pybricks.hubs import PrimeHub # Der SPIKE-Hub selbst
from pybricks.parameters import Color # Fertige Farbwerte, z.B. Color.GREEN
from pybricks.tools import wait # Zum Pausieren des Programms
# Der Hub wird EINMAL erstellt - danach steuern wir ihn über "hub"
hub = PrimeHub()
# Text läuft als Lauftext über die 5x5-LED-Matrix des Hubs
hub.display.text("Hallo!")
# Das Licht im Hub kurz grün leuchten lassen
hub.light.on(Color.GREEN)
# 2000 Millisekunden = 2 Sekunden warten
wait(2000)
print("Programm beendet.") # Erscheint im Konsolen-Fenster der Web-IDESo nutzt du die Messwerte: Miss auf der weißen Fläche, auf der schwarzen Linie und genau am Rand. Der Wert am Rand ist dein
ZIEL_HELLIGKEITfür den Linienfolger. Im Simulator siehst du die Werte sogar als Kurve – im Live-Diagramm unter dem Spielfeld.
Deine Aufgabe
Jetzt bist du dran
Bevor der Linienfolger auf einem echten Tisch fährt, solltest du wissen, welche Werte dein Farbsensor dort misst. Schreib ein Mess-Programm: Es gibt fünfmal die Reflexion farbsensor.reflection() mit print() aus und wartet dazwischen jeweils 500 Millisekunden. Der Roboter soll dabei stehen bleiben.
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port
from pybricks.tools import wait
hub = PrimeHub()
farbsensor = ColorSensor(Port.C)
# Miss hier fünfmal die Reflexion und gib sie aus- Denkanstoß
Eine
for-Schleife mitrange(5), darinprint(farbsensor.reflection()). - Welcher Befehl hilft?
Schreib
wait(500)in die Schleife, unter dasprint().Für das Messen braucht es keine Motoren – nur den Farbsensor.
- Lückencode – ergänze die ___
from pybricks.hubs import PrimeHub from pybricks.pupdevices import ColorSensor from pybricks.parameters import Port from pybricks.tools import wait hub = PrimeHub() farbsensor = ColorSensor(Port.C) for messung in ___: print(___) wait(___)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import ColorSensor
from pybricks.parameters import Port
from pybricks.tools import wait
hub = PrimeHub()
farbsensor = ColorSensor(Port.C)
for messung in range(5):
print(farbsensor.reflection())
wait(500)