Zum EV3 gibt es zwei verschiedene Motoren.
Mit Ihnen können Drehbewegungen ausgeführt werden. Grundsätzlich können diese Motoren auch nicht wirklich mehr, als sich zu drehen. Allerdings können Sie dies auf unterschiedliche Weise tun.
Zum einen kann die Geschwindigkeit der Umdrehung bestimmt werden. Dies geschieht in Form der Winkelgeschwindigkeit. Eine Geschwindigekit vom 360 bedeutet eine ganze Umdrehung pro Sekunde.
Zudem stehen verschiedene Methoden zur Verfügung. Für die kommenden Beispiele sollten zwei Motoren in den Ports A und D eingesteckt sein:
run(speed): Hiermit läuft der Motor mit einer konstanten Geschwindigkeit (Winkelgeschwindigkeit angegeben als speed). Der Motor beschleunigt bis zur festgelegten Geschwindigkeit. Dieser Befehl wird im Hintergrund fortgesetzt, bis der Motor einen neuen Befehl empfängt oder das Programm anhält. Beispielcode:motorA = Motor(Port.A) motorD = Motor(Port.D) motorA.run(360) motorD.run(720) wait(3000) motorA.stop() wait(1000) motorD.stop()
run_time(speed, time): Hiermit läuft der Motor eine bestimmte Zeit lang mit einer konstanten Geschwindigkeit (Winkelgeschwindigkeit). Der Motor beschleunigt bis zur festgelegten Geschwindigkeit. Der Motor bremst gerade rechtzeitig ab, um nach Ablauf der festgelegten Zeit (time in Milisekunden) anzuhalten. Zusätzlich kann bestimmt werden, dass nachfolgende Befehle bereits ausgeführt werden noch während die Zeit läuft. Dazu ergänzt man den Auruf: motorA.run_time(360,1000,wait=False) wird den MotorA während einer Sekunde mit einer Winkelgeschwindigkeit von 360° pro Sekunde laufen lassen und nachfolgende Befehle parallel ausführen. Beispielcode:motorA = Motor(Port.A) motorD = Motor(Port.D) motorD.run_time(720,1000) motorA.run_time(180,1000) wait(1000) motorA.run_time(320,2000,wait=False) motorD.run_time(540,1000)
run_angle(speed, rotationswinkel): Hiermit läuft der Motor bis zu einem bestimmten Winkel mit einer konstanten Geschwindigkeit. Auch hier kann durch ein zusätzliches False ein paralleles Ausführen der nachfolgenden Befehle erzeugt werden. Achtung: Der Winkel bezieht sich auf die Umdrehung des Motors und nicht auf die Umdrehung des Roboters.motorA = Motor(Port.A) motorD = Motor(Port.D) motorD.run_angle(720,3*360,wait=False) motorA.run_angle(180,4*360)
run_target(speed, zielwinkel): Hiermit läuft der Motor bis zu einem bestimmten Zielwinkel mit einer konstanten Geschwindigkeit. Zur Bedeutung von Zielwinkel siehe die Methode reset_angle(winkel). Die Drehrichtung wird auf Grundlage des Zielwinkels automatisch ausgewählt.motorA = Motor(Port.A) motorD = Motor(Port.D) motorD.run_target(720,360) motorA.run_target(180,720)
Um den Motor optimal nutzen zu können, braucht es noch einige zusätzliche Methoden:
stop(): Hiermit wird der Motor angehalten.angle(): Im Rechner wird jeweils der Drehwinkel gespeichert, also wie viel der Motor bereits gedreht hat. Mit angle() kann man auf diesen Wert zugreifen.reset_angle(winkel): Damit wird der gerade erwähnte Drehwinkel auf den angegeben Wert zurückgesetzt.
FRAGE
Häufig nutzt man Motoren im Zusammenhang mit fahrenden Robotern. Wie kann das umgesetzt werden?
Weitere Informationen zu Motoren findest du unter Docs>Motors.