![]() |
TigerJython | xx für Gymnasien |
Deutsch English |
Aktoren sind die aktiven Komponenten eines Roboters. Sie führen Befehle, die sie vom Mikroprozessor erhalten, aus. Typische Aktoren sind die Motoren, aber auch LEDs und der Buzzer können auf Befehle reagieren. Im Folgenden wird an einfachen Beispielen gezeigt, wie man die Aktoren mit einem Pythonprogramm steuern kann. |
![]() |
Um die Programmcodes einfach zu behalten, verwenden wir in allen Beispielen die importzeile from mbrobot import *. Für die anderen Robotermodelle muss die Importzeile angepasst werden:
Für Maqueen Plus: from mbrobot_plus import *
Für Maqueen Plus V2: from mbrobot_plusV2 import *
# Mr2a.py from mbrobot import * forward() delay(2000) left() delay(550) forward() delay(2000) stop() |
![]() |
Erklärungen zum Programmcode:
![]() |
delay(2000):hält die Programmausführung 2 Sekunden an |
![]() |
stop():stoppt die Motoren |
Mit einem Klick auf die grüne Start-Schaltfläche wird das gleiche Programm im Simulationsmodus ausgeführt.
Beispiel 2: Bewegung wiederholen
# Mr2b.py from mbrobot import * repeat 4: forward() delay(2000) left() delay(550) stop() |
![]() |
Erklärungen zum Programmcode:
![]() |
repeat 4: Wiederholschleife. Die Befehle im eingerückten Block werden 4mal wiederholt Anstelle der repeat-Schleife kann auch while- oder for-Schleife verwendet werden |
Beispiel 3: Auf einem Kreisbogen fahren
Der Roboter bewegt sich auf einem Linksbogen mit dem Radius ungefähr 0.1 m und dann bewegt er sich auf einem Rechtsbogen. Mit setSpeed() kann die Geschwindigkeit angepasst werden (standard 60).
# Mr2c.py from mbrobot import * setSpeed(40) leftArc(0.2) delay(3000) rightArc(0.2) delay(3000) stop() |
![]() |
forward() |
bewegt den Roboter vorwärts |
Die Befehle forward() , left() usw. steuern das ganze Fahrwerk, das aus zwei Motoren besteht. Man kann aber auch die einzelnen Motoren einschalten und ihre Geschwindigket regeln. Mit motL.rotate(speed) wird der linke Motor in die Vorwärtsbewegung versetzt und rotiert mit der Geschwindigkeit speed. Für die positiven speed-Werte rotiert der Motor vorwärts, bei negativer Werten rückwärts und für speed = 0 hält der Motor an. Entsprechend funktioniert der Befehl motR.rotate(speed) für den rechten Motor. Um die einzelnen Motoren zu steuern muss man das Modul mbrobotmot importieren.
Beispiel 4: Der linke Motor läuft zuerst 3 Sekunden mit der Geschwindigkeit 50 vorwärts, dann 2 Sekunden mit der Geschindigkeit 30 rückwärts. Anschliessend hält er an.
Führe das Programm zuerst im Simulationsmodus aus und beobachte die Rotationen im Grafikfenster.
# Mr2d.py from mbrobotmot import * motL.rotate(50) delay(3000) motL.rotate(-35) delay(2000) motL.rotate(0) |
![]() |
Erklärungen zum Programmcode:
![]() |
motL.rotate(50): der linke Motor rotiert mit der Geschwindigkeit 50 vorwärts |
![]() |
motL.rotate(-30): der linke Motor rotiert mit der Geschwindigkeit 30 rückwärts |
![]() |
motL.rotate(0): der linke Motor wird angehalten |
Des mbRobots hat zwei rote LEDs, die mit LED_L und LED_R beschriftet sind. Die LEDs können gleichzeitig oder einzeln ein- und ausgeschaltet werden.
Beispiel 5: Beide LEDs 10 mal ein- und ausschalten.
Der Befehl setLED(1) schaltet beide LEDs gleichzeitig ein. Der Befehl setLED(0) schaltet sie aus.
# Mr2e.py from mbrobot import * # from mbrobot_plus import * repeat 10: setLED(1) delay(500) setLED(0) delay(500) |
![]() |
Erklärungen zum Programmcode:
![]() |
serLED(1): schaltet beide LEDs ein (rot) |
![]() |
delay(500): die LEDs bleiben 500 Millisekunden im gesetzten Zustand |
Die LEDs können auch einzeln ein- und ausgeschaltet werden (Siehe Aufgabe 6)
Zusatzfunktionen für mbRobot Plus:
1) Die LEDs auch in anderen Farbe leuchten
Beispiel 6: Mit einem Buzzer Töne abspielen
Der Buzzer findet man auf dem Board hinter dem Steckplatz für den micro:bit. Importiert man das Modul music, so kann man Töne und auch ganze Melodien abspielen.
# Mr2f.py from music import * repeat 10: pitch(784, 400) pitch(524, 400) |
Erklärungen zum Programmcode:
![]() |
pitch(784, 300): Spielt den Ton mit der Frequenz 784 Hz während 300 Millisekunden ab |
Beispiel 7: Mit dem Buzzer ein Musikstück abspielen
# Mr2g.py from music import * song = ENTERTAINER play(song) |
|
Erklärungen zum Programmcode:
![]() |
play(song): spielt den Song Entertainer. Einige weitere Musikdateien sind im TigerJython gespeichert. Diese können direkt verwendet werden (siehe Dokumentation oder TigerJython IDE/ unter Hilfe/APLU Dokumentation) |
![]() |
Aufgaben: |
1) |
|
![]() |
2) |
Der Roboter soll sich so lange auf einen Linksbogen bewegen, bis er einen ganzen Kreis zurückgelegt hat. Danach soll er sich gleich lange auf einem Rechtsbogen bewegen. |
![]() |
3) |
Ein Roboter soll nacheinander 4 Orte erreichen, indem er zuerst vorwärts bis zum Ort fährt, dann rückwärts zum Ausgangspunkt zurückkehrt und um ca 90 Grad dreht. |
![]() |
4) |
Ergänze die Bewegung in der Aufgabe 3 mit LEDs. Jedesmal, bevor der Roboter rückwärts fährt, schaltet er die LEDs ein . |
5) |
Ergänze die neben stehende Programmvorlage so dass |
from mbrobotmot import * #from mbrobot_plus import * motL.rotate(50) delay(2000) motL.rotate(0) |
6) |
Mit den Befehlen ledLeft.write_digital(1) bzw. ledLeft.write_digital(1) kann man nur die linke LED ein- bzw. ausschalten. Mit den Befehlen ledRight.write_digital(1) bzw. ledRight.write_digital(0) nur die rechte LED.Ergänze die neben stehende Programmvorlage so dass die LEDs 10 mal abwechlungsweisweise blinken (links ON/rechts OFF bzw. links OFF/rechts ON). Beim mbRobot Plus kann man die linke LED mit den Befehlen |
from mbrobot import * ledLeft.write_digital(1) delay(1000) ledLeft.write_digital(0) ledRight.write_digital(1) delay(1000) ledRight.write_digital(0) ------------------------------ from mbrobot_plus import * setLEDLeft(1) delay(1000) setLEDLeft(0) setLEDRight(1) delay(1000) setLEDRight(0) |
7) |
Ergänze die neben stehende Programmvorlage so, dass der Roboter beim Linksbogenfahren jeweils die linke LED und beim Rechtsbogen nur die rechte LED einschaltet.
|
from mbrobot import * #from mbrobot_plus import * repeat 2: leftArc(0.15) sleep(3000) rightArc(0.15) sleep(3000) stop() |
8) |
Der Roboter soll sich auf einer Spiralbahn bewegen. Verwende eine repeat-Schleife und vergrössere nach jedem Schleifendurchlauf den Radius im Befehl rightArc(radius). Löse die Aufgabe zuerst im Simulationsmodus. Mit dem Befehl |
![]() |