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 50).
# 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 mbrobot 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 |
mbRobot und mbRobot Plus V2 haben vorne zwei rote LEDs. Die LEDs des mbRobots Plus können in 7 verschiedenen Fabei leuchten. 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 rot 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 |
In der Aufgabe 6 sieht man, wie die LEDs einzeln ein- und ausgeschaltet werden.
Zusatzfunktionen für mbRobot Plus:
1) Die LEDs auch in anderen Farbe leuchten
Beispiel 6: Mit Buzzer Töne abspielen
micro:bit V2 ist mit einem Buzzer (Speaker) ausgestattet. Dieser kann unabhängig vom Roboter Töne abspielen. Ist der micro:bit Bestandteil eines Roboters, ist es aber vorteilhafter den Buzzer auf dem Roboterboard zu verwendet, da dieser besser tönt. Achten Siie dabei, dass der Buzzer-Switch richtig gestellt ist. micro:bit V1 verfügt über keinen Speaker. Es wird daher immer der Roboter-Buzzer verwendet. 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 |
Das Modul music kann nur im Realmodus importiert werden. Zum Testen Im Simulationmodus kannst du diese Importzeile auskommentieren und den Befehl playTone(440, 1000) verwenden (440 ist di Tonfrequenz, 1000 die Abspieldauer in ms)
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) |
Beispiel 8: Neopixel (nur mbRobot Plus V2)
Beim Maqueen Plus V2 befinden sich auf der unteren Seite des Roboters 4 RGB- LEDs. Diese kann man mit dem Befehl setRGB(id, r, g, b) in verschidenen Farben leuchten lassen, wobei id die Nummer der LED ist, r die rote, g die grüne und b die blaue Farbkomponente ist. clearRGB() schaltet alle viel LEDs aus. # Mr2h.py from mbrobot_plusV2 import * repeat 2: setRGB(0, 255, 0, 0) delay(1000) setRGB(1, 0, 255, 0) delay(1000) setRGB(2, 0, 0, 255) delay(1000) setRGB(3, 255, 0, 255) delay(1000) clearRGB() |
Erklärungen zum Programmcode:
setRGB(1, 0, 255, 0) lässt die LED 1 grün leuchten |
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 mbrobot import * #from mbrobot_plus import * motL.rotate(50) delay(2000) motL.rotate(0) |
6) |
Mit den Befehlen setLEDLeft(1) und setLEDLeft(0) kann man nur die linke LED ein- bzw. ausschalten. Mit den BefehlensetLEDRight(1) und setLEDRight0)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 LEDs in verschiedenen Farben (1: rot, 2: grün, 3: blau, 4:gelb, 5:pink, 6: cyan, 7:weiss) eingeschalten (In der Simulation nur rot, grün und blau) |
from mbrobot 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 |