📝 Die wichtigsten Python-Befehle für den mBot 2
Aufklappen
🧠 Grundstruktur
from mbot2 import *
from cyberpi import *
import time
Diese drei Imports sind bei fast jedem Projekt nötig.
🚗 Bewegung / Motorsteuerung
✅ Fahre geradeaus (Encoder-gesteuert):
mbot2.encoder_motor(motor="both", speed=50)
✅ Einzelne Motoren steuern:
mbot2.encoder_motor_speed("left", 50)
mbot2.encoder_motor_speed("right", 50)
✅ Anhalten:
mbot2.encoder_motor(motor="both", speed=0)
✅ Drehen (rechts):
mbot2.encoder_motor("left", 50)
mbot2.encoder_motor("right", -50)
time.sleep(0.5)
✅ Rückwärts fahren:
mbot2.encoder_motor(motor="both", speed=-50)
📏 Sensoren
✅ Ultraschallsensor (Entfernung in cm):
abstand = mbot2.ultrasonic2.get_distance()
✅ Linienfolger (digitaler Wert: 0 = schwarz, 1 = weiß):
links = mbot2.linefollower.get("left")
rechts = mbot2.linefollower.get("right")
✅ Lichtsensor (Helligkeit):
wert = cyberpi.get_brightness()
💡 LED & Display
✅ RGB-LED am mBot2 steuern:
mbot2.led.set_color("red") # Farben: "red", "green", "blue", "white"
✅ CyberPi-LED (Displayrand):
cyberpi.led.show("blue")
✅ Text auf Display zeigen:
cyberpi.display.show_label("Hallo", 0, 0)
🔊 Sound / Audio
✅ Ton abspielen:
cyberpi.audio.play_tone(440, 1) # 440 Hz für 1 Sekunde
✅ Text aussprechen:
cyberpi.audio.text_to_speech("Hallo, ich bin der mBot!")
🔘 Tasten & Eingaben
✅ Taste gedrückt?:
if cyberpi.button.is_pressed("a"):
print("Taste A wurde gedrückt")
⏱️ Zeitfunktionen
time.sleep(1) # Warten in Sekunden
cyberpi.timer.get() # Aktuelle Zeit in Sekunden seit Programmstart
🖥️ Debug & Konsole
cyberpi.console.println("Wert: " + str(abstand))
🌐 WLAN / Cloud / KI (optional mit Erweiterung)
cyberpi.wifi.connect("WLAN-NAME", "PASSWORT")
sprache = cyberpi.audio.get_speech_to_text()
✅ Tipp für Einsteigerprojekte:
Nutze z. B.:
while True:
if mbot2.ultrasonic2.get_distance() > 20:
mbot2.encoder_motor("both", 50)
else:
mbot2.encoder_motor("both", 0)
📝 Geradeaus fahren
Code anzeigen
from mbot2 import *
from cyberpi import *
import time
# Starte beide Motoren mit gleicher Geschwindigkeit
mbot2.encoder_motor(motor='both', speed=50)
# Fahre für 5 Sekunden
time.sleep(5)
# Stoppe den Roboter
mbot2.encoder_motor(motor='both', speed=0)
Erklärung
| Codezeile | Funktion |
|---|---|
from mbot2 import * | Steuert den mBot 2 |
from cyberpi import * | Für Zeitsteuerung & CyberPi-Zugriff |
mbot2.encoder_motor(motor='both', speed=50) | Setzt beide Motoren auf 50 U/min |
time.sleep(5) | Fährt 5 Sekunden lang geradeaus |
speed=0 | Stoppt den mBot |
📌 Hinweise:
Möchtest du, dass er dauerhaft fährt, entferne time.sleep() und speed=0
Der Befehl nutzt Encoder-gesteuerte Drehzahl → Dadurch fährt der mBot stabiler und gerader als bei Prozentwerten.
Du kannst die Geschwindigkeit anpassen:speed=30 (langsamer) bis speed=100 (schneller)
📝 Raus aus dem Labyrinth
Code anzeigen
from cyberpi import *
from mbot2 import *
import time
def warte_sekunden(s):
time.sleep(s)
def hindernis():
return mbot2.ultrasonic2.get_distance() < 20
def vorwaerts():
mbot2.encoder_motor(motor='both', speed=50)
def stoppe():
mbot2.encoder_motor(motor='both', speed=0)
def drehe_links(sekunden):
mbot2.encoder_motor(motor='left', speed=-50)
mbot2.encoder_motor(motor='right', speed=50)
warte_sekunden(sekunden)
stoppe()
def drehe_rechts(sekunden):
mbot2.encoder_motor(motor='left', speed=50)
mbot2.encoder_motor(motor='right', speed=-50)
warte_sekunden(sekunden)
stoppe()
def rueckwaerts(sekunden):
mbot2.encoder_motor(motor='both', speed=-30)
warte_sekunden(sekunden)
stoppe()
# Hauptprogramm
while True:
if not hindernis():
vorwaerts()
else:
stoppe()
warte_sekunden(0.3)
# 1. Nach rechts drehen
drehe_rechts(0.5)
if not hindernis():
vorwaerts()
continue
# 2. Links drehen (180°)
drehe_links(1.0)
if not hindernis():
vorwaerts()
continue
# 3. Nochmals rechts (90°)
drehe_rechts(0.5)
rueckwaerts(0.5)
Erklärung
🔧 1. Modul-Importe
from cyberpi import *
from mbot2 import *
import time
cyberpi: Zugriff auf Display, Tasten, Audio etc.mbot2: Zugriff auf Motoren und Sensorentime: Für Zeitverzögerungen (sleep())
🕰️ 2. Hilfsfunktion: Wartezeit
def warte_sekunden(s):
time.sleep(s)
- Ermöglicht klarere Lesbarkeit im Code (statt direkt
time.sleep())
🧱 3. Sensorprüfung: Hindernis
def hindernis():
return mbot2.ultrasonic2.get_distance() < 20
- Misst die Entfernung per Ultraschallsensor (in cm)
- Wenn kleiner als 20 cm → Hindernis erkannt →
True
🔁 4. Bewegungsfunktionen
Geradeaus:
def vorwaerts():
mbot2.encoder_motor(motor='both', speed=50)
- Beide Motoren gleich schnell → Geradeausfahrt mit 50 U/min
Stoppen:
def stoppe():
mbot2.encoder_motor(motor='both', speed=0)
- Stoppt beide Motoren
Drehungen:
def drehe_links(sekunden):
mbot2.encoder_motor(motor='left', speed=-50)
mbot2.encoder_motor(motor='right', speed=50)
warte_sekunden(sekunden)
stoppe()
def drehe_rechts(sekunden):
mbot2.encoder_motor(motor='left', speed=50)
mbot2.encoder_motor(motor='right', speed=-50)
warte_sekunden(sekunden)
stoppe()
- Gegensinnig drehende Motoren → Roboter dreht auf der Stelle
- Die Dauer (
sekunden) steuert den Winkel (z. B. 0.5 s ≈ 90°)
Rückwärts:
def rueckwaerts(sekunden):
mbot2.encoder_motor(motor='both', speed=-30)
warte_sekunden(sekunden)
stoppe()
🧠 5. Hauptprogramm: Automatische Hindernisvermeidung
while True:
if not hindernis():
vorwaerts()
- Solange kein Hindernis erkannt → geradeaus fahren
else:
stoppe()
warte_sekunden(0.3)
- Wenn Hindernis → anhalten und kurz warten
Schrittweise Entscheidungslogik:
# 1. Rechts drehen und prüfen
drehe_rechts(0.5)
if not hindernis():
vorwaerts()
continue
- Versucht rechts herum auszuweichen
- Wenn frei → fahre weiter
# 2. Links drehen (180°)
drehe_links(1.0)
if not hindernis():
vorwaerts()
continue
- Wenn rechts blockiert → Links 180° drehen
- Wenn frei → fahre weiter
# 3. Rückwärts ausweichen
drehe_rechts(0.5)
rueckwaerts(0.5)
- Wenn immer noch blockiert → quasi 270° drehen + zurücksetzen
✅ Ergebnis:
Der Roboter …
- fährt autonom geradeaus
- erkennt Hindernisse
- versucht mehrere Ausweichmöglichkeiten
- setzt sich im Notfall zurück und sucht neuen Weg
🧪 Tipp zur Optimierung:
Erweiterbar um: Blinklicht, Töne, Speicher von Bewegungen, Kartenlogik
Zeitwerte anpassen (z. B. 0.5 s für 90°, 1.0 s für 180°)
Abstandsschwelle (z. B. 20 cm) anpassen an Umgebung
