Jython

2. Aktoren


Aktoren sind die aktiven Komponenten eines Roboters. Sie führen Befehle, die sie vom Mikrocontroller 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.

 

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. sleep(2000) hält die Programmausführung während 2000 Millisekunden an und der Roboter bleibt während dieser Zeit in der Vorwärtsbewegung. Der Befehl left() schaltet den rechten Motor vorwärts und den linken Motor rückwärts, was eine Drehung nach links bewirkt. Der Drehwinkel ist von der Anzahl Millisekunden im nachfolgenden sleep() Befehl abhängig. Mit 450 ms dreht der Roboter ca 90° nach links. Mit dem Befehl right() dreht der Roboter nach rechts.

# Mq2a.py
from microbit import *
from mbrobot import *
            
forward()
sleep(2000)
left()
sleep(450)
forward()
sleep(2000)
exit()    
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

from microbit import * importiert das Modul micro:bit
from mbrobot import * importiert das Modul mbrobot (Befehle für die Motoren)
exit():stoppt die Motoren und gibt alle Ressourcen frei

Beispiel 2: Bewegung wiederholen

# Mr2b.py
from microbit import *
from mbrobot import *
            
repeat 4: 
    forward()
    sleep(2000)
    left()
    sleep(450)
exit() 
► In Zwischenablage kopieren
 

 

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.

# Mr2c.py
from microbit import *
from mbrobot import * 

setSpeed(40)  
leftArc(0.1)
sleep(2000)
rightArc(0.1)
sleep(2000)
exit() 
► 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()
exit()

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 30)
hält beide Motoren an
hält beide Motoren an und gibt Ressourcen frei

 

Alle Befehle sind nicht-blockierend, d.h. sie kehren sofort zurück, währenddem der Roboter seinen Bewegungszustand beibehält.


LEDs

Beispiel 4: Linke und rechte LED abwechslungsweise ein- und ausschalten.
Der Befehl ledLeft.write_digital(1) schaltet die linke LED ein. Der Befehl ledLeft.write_digital(0) schaltet sie aus.

# Mr2d.py
from microbit import *

while True:
    ledLeft.write_digital(1)
    ledRight.write_digital(0)
    sleep(500)
    ledLeft.write_digital(0)
    ledRight.write_digital(1)
    sleep(500)
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

sleep(500): die LEDs bleiben 500 Millisekunden im gesetzten Zustand
while True: eine endlose while-Schleife. Die Schleifenbefehle werden so lange wiederholt, bis man den Roboter mit dem Ein-/Ausschalter abschaltet


Beispiel 5: Auf einem Lins- bzw. Rechtsbogen fahren und dabei die linke bzw. rechte LED einschalten
Da der Befehl leftArc(0.1) nicht blockierend ist, können gleichzeitig auch die Befehle für LEDs ausgeführt werden.

# Mr2e.py
from microbit import *
from mbrobot import *
                  
leftArc(0.1)
ledLeft.write_digital(1)
ledRight.write_digital(0)    
sleep(3000)
rightArc(0.1)
ledLeft.write_digital(0)
ledRight.write_digital(1)
sleep(3000)
exit() 
► In Zwischenablage kopieren
 

 

Buzzer

Beispiel 5: 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 microbit import *
from music import *
 
while True:             
    pitch(784, 300)
    pitch(524, 400)
    sleep(100)
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

pitch(784, 300): Spielt den Ton mit der Frequenz 784 Hz während 300 Millisekunden ab


Beispiel 6: Mit dem Buzzer ein Musikstück abspielen

# Mr2g.py
from microbit import *
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)

 


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 im Beispiel 3 mit Ton. Jedesmal, bevor der Roboter vorwärts fährt, spiel er einen Ton ab und bevor er rückwärts fährt, einen tieferen Ton.