Jython
Deutsch   English 

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 delay() Befehl abhängig. Mit 550 ms dreht der Roboter ca 90° nach links. Mit dem Befehl right() dreht der Roboter nach rechts.

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

Erklärungen zum Programmcode:

from mbrobot import * importiert das Modul mbrobot (Befehle für die Motoren)
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.

# Mr2c.py
from mbrobot import * 

setSpeed(40)  
leftArc(0.1)
delay(2000)
rightArc(0.1)
delay(2000)
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 30)
hält beide Motoren an

 

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 mbrobot import *

repeat 10:
    ledLeft.write_digital(1)
    ledRight.write_digital(0)
    delay(500)
    ledLeft.write_digital(0)
    ledRight.write_digital(1)
    delay(500)
ledRight.write_digital(0)
► In Zwischenablage kopieren
 

Erklärungen zum Programmcode:

delay(500): die LEDs bleiben 500 Millisekunden im gesetzten Zustand


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 mbrobot import *
           
repeat 2:
    leftArc(0.15)
    ledLeft.write_digital(1)
    ledRight.write_digital(0)    
    delay(3000)
    rightArc(0.15)
    ledLeft.write_digital(0)
    ledRight.write_digital(1)
    delay(3000)
ledRight.write_digital(0)
stop()    
► 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 music import *
 
repeat 10:             
    pitch(784, 400)
    pitch(524, 400)
► 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 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.
 


5)

Die Befehle forward() , left() usw. steuern das ganze Fahrwerk, das aus zwei Motoren besteht. Du kannst aber auch die einzelnen Motoren einschalten und ihre Geschwindigket regeln. Mit motL.forward() läuft nur der linke Motor vorwärts. Entsprechend dreht mit  motR.forward() nur der rechte Motor. Du musst aber das Modul mbrobotmot importieren.

Ergänze die neben stehende Programmvorlage so dass
         a) der Roboter vorwärts fährt
         b) der Roboter 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 *
motL.forward()
sleep(2000)
motL.stop()