TigerJython xx
für Gymnasien
Deutsch   English 

2. Aktoren


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.
Alle Beispiele können auch im Simulationsmodus ausgeführt werden.

 

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 *


Motoren


Beispiel 1: Roboter bewegen
Der Roboter fährt eine kurze Strecke vorwärts, biegt links ab und fährt wieder vorwärts. Der mbRobot verfügt über ein Fahrwerk mit zwei Motoren. Mit dem Befehl forward() werden beide Motoren vorwärts geschaltet und bleiben in diesem Zustand so lange, bis sie vom Microprozessor einen weiteren Befehl erhalten. delay(2000) ist eine Anweisung für den Mikroprozessor. Er muss 2000 Millisekunden warten, bevor die Programmausführung mit dem nächsten Befehl fortgesetzt wird. Die Motoren bleiben während dieser Zeit in der Vorwärtsbewegung. Der Befehl left() bewirkt eine Drehung nach links. Der Drehwinkel ist von der Anzahl Millisekunden im nachfolgenden delay() Befehl abhängig. Mit 550 ms dreht der Roboter ca 90° nach links. Mit dem Befehl right() dreht der Roboter nach rechts.

# Mr2a.py
from mbrobot import *
            
forward()
delay(2000)
left()
delay(550)
forward()
delay(2000)
stop()    
► In Zwischenablage kopieren
 

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() 
► In Zwischenablage kopieren
 

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() 
► In Zwischenablage kopieren
 
  Für die Steuerung von Motoren stehen folgende Befehle zur Verfügung:
 
 

forward()
backward()
left()
right()
leftArc(radius)
rightArc(radius)
setSpeed(speed)
stop()

bewegt den Roboter vorwärts
bewegt den Roboter rückwärts
dreht nach links
dreht nach rechts
bewegt sich auf einem Linksbogen
bewegt sich auf einem Rechtsbogen
ändert die Geschwindigkeit (default 50)
hält beide Motoren an

 

Motoren einzeln steuern

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)
► In Zwischenablage kopieren
 

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

 

LEDs

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)
► In Zwischenablage kopieren
 

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
  • setLED(2) : grün
  • setLED(3) : blau
  • setLED(4) : gelb
  • setLED(5) : pink
  • setLED(6) : cyan
  • setLED(7) : weiss

 

Buzzer (Speaker)

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)
► In Zwischenablage kopieren
 


Buzzer auf dem micro:bit


 


Buzzer auf dem Board

 


Buzzer-Switch

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)
► In Zwischenablage kopieren
 

 

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)

 

Neopixel (RGB-LEDs)

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()
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

setRGB(1, 0, 255, 0) lässt die LED 1 grün leuchten

 


Aufgaben:


1)


Erstelle mit einigen Gegenständen einen Parcours und schreibe ein dazugehörendes Programm so, dass der Roboter vom Start zum Ziel fährt.

 


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
a) der Roboter 2 Sekunden vorwärts fährt
b) der Roboter 2 Sekunden rückwärs fährt
c) der Roboter am Ort nach links bzw. nach rechts dreht
d) der Roboter auf einem Kreisbogen fährt

 
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
setLEDLeft(1) und setLEDRight(0) ein und ausschalten. Analog die rechte LED mit den Befehlen setLEDRight(1) und setLEDRight(0).
Die LEDs in verschiedenen Farben (1: rot, 2: grün, 3: blau, 4:gelb, 5:pink, 6: cyan, 7:weiss) eingeschaltet werden.
(In der Simulation nur rot, grün und blau)

 
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
RobotContext.enableTrace(True)
kannst du die Spuren des Roboters imd Grafikfenster anzeigen lassen. (Diese Zeile muss im Programm gerade nach der Importzeile stehen).