geradeausfahren.main.py), kommentieren Sie das Piepsen aus und fügen Sie folgende zwei Zeilen hinzu:links = Motor(Port.A) # Kontrollieren Sie, ob die Motoren auch an den richtigen Ports angeschlossen sind. rechts = Motor(Port.B) links.run_angle(120, 360, wait=False) # 120 Grad/s Drehgeschwindigkeit, eine volle Rad-Umdrehung, nicht warten, sondern gleich den nächsten Befehl ausführen. rechts.run_angle(120, 360, wait=True) # Dito, aber warten, bis fertig gedreht.
import Statements, fügen Sie folgenden import hinzu (damit der Wert pi bekannt ist):from math import pi # Wert pi importieren
Ziel ist es, dass der Roboter möglichst genau einen Meter zurücklegt.
radDurchmesser in cm. Daraus berechnen Sie (Konstante pi wurde durch den import definiert):gradProCM gibt an, um wie viele Grad sich das Rad für einen cm Vorwärtsfahrt drehen muss.100*gradProCM.radDurchmesser und berechnen Sie daraus direkt im Code die Konstante gradProCM für Ihren Roboter.Ziel ist es, die Geschwindigkeit der Motoren in Abhängigkeit der zurückgelegten Strecke selbst hoch und runter zu regeln, damit langsam angefahren und abgebremst wird, dazwischen aber doch «Vollgas» gefahren werden kann.
Dazu soll folgende Funktion ergänzt werden (nach der Definition von links, rechts und gradProCM zu platzieren):
def smoothRide(distanz, vmax): # Fährt gegebene distanz in cm mit maximaler Geschwindigkeit vmax in cm/s # Winkel zurücksetzen: links.reset_angle(0) rechts.reset_angle(0) s = 0 # Bereits zurückgelegte Distanz while s<distanz: # Fahren, so lange die gewünschte Strecke nicht zurückgelegt ist s = links.angle()/gradProCM # Bereits zurückgelegte Strecke v = 120 # Hier aus der bereits zurückgelegten Distanz die Geschwindigkeit berechnen. links.run(v*gradProCM) recht.run(v*gradProCM) rechts.stop() links.stop() # Funktion aufrufen smoothRide(100, 20) # 1 m fahren, mit max 2 Umdrehungen pro Sekunde.
Tipp: Die Geschwindigkeit kann als das Minimum von drei Geschwindigkeiten geschrieben werden:
vstart = ... # Formel aus s (Anstieg am Anfang) vend = ... # Formel aus s (Abfall am Ende) v = min([vstart, vmax, vend]) # Kleinste der 3 Geschwindigkeiten
Dokumentation der Motor-Klasse: https://pybricks.com/ev3-micropython/ev3devices.html#motors