bewegen

2. ROBOTER BEWEGEN (MOTOREN und LEDs)

 

 

DU LERNST HIER...

 

die wichtigsten Befehle, mit welchen du deinen Roboter steuern kannst.

 

 

MUSTERBEISPIELE

  Beispiel 1: Fahren und abbiegen
Der Roboter soll zuerst vorwärts fahren, dann links abbiegen und danach wieder ein kurzes Stück vorwärts fahren.

Die Zeilen deines Programms werden der Reihe nach ausgeführt. Mit dem Befehl forward() wird der Roboter in den Zustand "forward" versetzt. delay(2000) gibt die Zeit im Millisekunden an, bis der Mikroprozessor den nächsten Befehl left() erteilt. Dieser versetzt den Roboter in den Zustand "linksdrehen". Während der 550 Millisekunden dreht sich der Roboter ca. um 90° links. Danach fährt er wieder 2000 Millisekunden vorwärts, eher er den Befehl stop() erhält.

 

from mbrobot import *
#from mbrobot_plus import *

forward()
delay(2000)
left()
delay(550)
forward()
delay(2000)
stop()
► In Zwischenablage kopieren

Wir verzichten darauf, in allen Programmbeispielen auch die Importzeile für den Maqueen Plus V2 anzuzeigen. Falls du mit diesem Modell arbeitest, lautet die Importzeile

from mbrobot_plusV2 import *

 

Beispiel 2: Mehreres gleichzeitig tun
Obwohl das nachfolgende Programm aus einer Sequenz von Anweisungen besteht, die der Reihe nach ausgeführt werden, kann der Roboter mehreres gleichzeitig tun. Der Roboter fährt während 4 s vorwärts und anschliessend 4 s rückwärts. Während des Rückwärtsfahrens schaltet er die LEDs ein und aus.

Die Motoren und die LEDs werden durch den Mikroprozessor gesteuert, wobei der Mikroprozessor auch mehrere Aktoren gleichzeitig bedienen kann. Während sich die Motoren nach dem Erhalt des Befehls backward() im Zustand backward befinden, werden mit dem Befehl

setLED(1) die LEDs einschaltet und nach 3000 ms mit setLED(0) auschaltet. Nach weiteren 1000 ms erhalten die Motoren den Befehl stop() und der Roboter hält an.  

from mbrobot import *
#from mbrobot_plus import *

forward()
delay(4000)
backward()
setLED(1)
delay(3000)
setLED(0)
delay(1000)
stop()
► In Zwischenablage kopieren

Beim Maqueen Plus können die LEDs auch mit anderen Farben aufleuchten (1:rot, 2:grün, 3:gelb, 4:blau, 5:pink, 6:cyan, 7:weiss)


 

Beispiel 3: Auf Kreisbogen fahren
Der Roboter soll zuerst 5 s auf einem Linksbogen, dann 5 s auf einem Rechtsbogen und anhalten. Für das Bogenfahren verwendest du die Befehle leftArc(r) bzw. rightArc(r), wobei der Radius r in Meter ist.

Mit setSpeed(speed) kannst du die Geschwindigkeit ändern. Als speed kannst du Werte zwischen 0 und 100 wählen. Default speed ist 50.

 


from mbrobot import *
#from mbrobot_plus import *

setSpeed(40)
leftArc(0.2)
delay(5000)
rightArc(0.2)
delay(5000)
stop()
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Für die Steuerung des Roboters stehen die folgende Befehle zur Verfügung:

 forward()  fährt vorwärts
 backward()  fährt rückwärts
 left()  dreht links
 right()  dreht rechts
 leftArc(r)  fährt auf Linksbogen mit Radius r
 rightArc(r)  fährt auf Rechtsbogen mit Radius r
 stop()  hält an
 setSpeed(speed)  setzt die Geschwindigkeit (default 50)
 delay(ms)  bleibt ms Millisekunden im gleichen Zustand
 setLED(1)  LEDs einschalten (mbRobot_plus 1, 2, 3, 4, 5, 6, 7)
 setLED(0)  LEDs ausschalten
 setAlarm(1)  Schaltet einen Pipton ein. Der Ton wird mit einem Buzzer, der sich auch dem Roboterboard befindet, abgespielt.
 setAlarm(0)  Schaltet den Pipton aus

Bei der Roboterprogrammierung musst du in Zuständen denken. Der Befehl forward() versetzt den Roboter in eine Vorwärtsbewegung. Während die Motoren in diesem Zustand sind, kann der Microprozessor Befehle an andere Aktoren erteilen.

Ein laufendes Programm kannst du jeder Zeit abbrechen, indem du den kleinen Switchschalter hinten auf dem Roboterchassis auf "OFF" stellst.

Du kannst alle Beispiele auch im Simulationsmodus ausführen. Um ein Programm zu starten, klickst du anstelle des Robotik-Buttons auf den grünen Run-Pfeil. Willst du im Grafikfenster die Roboterspuren anzeigen lassen, fügst du nach der Importzeile folgende Zeile ein:
RobotContext.enableTrace(True)

 

 

ZUM SELBST LÖSEN

 

 

1.
Erstelle mit einigen Gegenständen einen Parcours und schreibe ein 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.

Mit setAlarm(1) wird ein Alarm eingeschaltet (ein Pipton). setAlarm(0) schaltet den Alarm aus. Der Roboter soll zuerst 5000 ms vorwärts und danach 5000 ms rückwärts fahren. Während des Rückwärtsfahrens soll er Alarm einschalten.

Damit du den Befehl setAlarm() verwenden kannst, musst du das Modul mbalarm importieren. Beim Maqueen Plus importierst du nur mbrobot_plus.

Mit nebenstehendem Programm wird der Alarm während 3000 ms eingeschaltet.

 
from mbrobot import *
from mbalarm import *
#from mbrobot_plus import *

setAlarm(1)
delay(3000)
setAlarm(0)
► In Zwischenablage kopieren

 

 

ZUSATZSTOFF: MOTOREN UND LEDs 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 Geschwindigkeit 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.

 

Beispiel 4: Der linke Motor läuft zuerst 3 Sekunden mit der Geschwindigkeit 50 vorwärts, dann 2 Sekunden mit der Geschwindigkeit 30 rückwärts. Anschliessend hält er an. Führe das Programm zuerst im Simulationsmodus aus und beobachte die Rotationen im Grafikfenster.

from mbrobotmot import *
#from mbrobot_plus import *

motL.rotate(50)
delay(3000)
motL.rotate(-30)
delay(2000)
motL.rotate(0)
► In Zwischenablage kopieren
 



Beispiel 5: Leds einzeln ein- und ausschalten
Mit den Befehlen setLED(1) und setLED(0) kannst du beide LEDs gleichzeitig ein- und ausschalten. Beim genauen Hinsehen auf die Platine deines Roboters, siehst du, dass die linke LED mit LED-L und die rechte mit LED-R beschriftet ist. Du kannst die LEDs auch einzeln ansprechen:

Beim mbRobot verwendest du folgende Befehle:
ledLeft.write_digital(1) schaltet die linke LED ein
ledLeft.write_digital(0) schaltet die linke LED aus
ledRight.write_digital(1) schaltet die rechte LED ein
ledRight.write_digital(0) schaltet die rechte LED aus

Dein Programm schaltet jeweils eine LED ein und die andere aus.

 


from mbrobot import *

ledLeft.write_digital(1)
ledRight.write_digital(0)
delay(600)
ledLeft.write_digital(0)
ledRight.write_digital(1)
delay(600)
ledLeft.write_digital(1)
ledRight.write_digital(0)
delay(600)
ledLeft.write_digital(0)
► In Zwischenablage kopieren

Beim Maqueen Plus und Maqueen PlusV2 kannst du die LED einzeln mit folgenden Befehlen schalten:
setLEDLeft(1) schaltet die linke LED ein
setLEDLeft(0) schlaet die linke LED aus
setLEDRight(1) schaltet die rechte LED ein
setLEDRight(0) schlaet die rechte LED aus

from mbrobot_plus import *
from mbrobot_plusV2 import *

setLEDLeft(1)
setLEDRight(0)
delay(600)
setLEDLeft(0)
setLEDRight(1)
delay(600)
setLEDLeft(2)
setLEDRight(0)
delay(600)
setLEDLeft(0)
setLEDRight(2)
delay(600)
setLEDRight(0)
► In Zwischenablage kopieren

 

Beispiel 6: RGB LEDs (nur Maqueen Plus V2

Maqueen Plus V2 hat auf der unteren Seite des Roboters vier RGB- LEDs. Diese kannst du mit dem Befehl setRGB(id, r, g, b) in verschiedenen Farben leuchten lassen, wobei id die Nummer der LED, r die rote, g die grüne und b die blaue Farbkomponente ist. clearRGB() schaltet alle viel LEDs aus.

In deinem Programm der Reihe nach die erste LED rot, die zweite grün, die dritte blau und die vierte violet eingeschaltet. Danach werden alle 4 ausgeschaltet.

 
from mbrobot_plusV2 import *

repeat 3:
    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

 

 

ZUM SELBST LÖSEN

 

 

4.
Lasse die beiden Motoren mit der gleichen Geschwindigkeit 4000 Millisekunden vorwärts rotieren.

5.
Lasse während 4 Sekunden den linke Motor vorwärts und den rechten Motor rückwärts laufen.

6.

Wie musst du den linken und den rechten Motor steuern, damit sich der Roboter 4 Sekunden auf einem Linksbogen bewegt?

7.

Ergänze das Beispiel 3 so, dass wenn der Roboter auf dem linken Kreisbogen fährt die linke LED leuchtet und wenn er auf dem rechten Kreisbogen fährt die rechte LED leuchtet und die linke ausgeschaltet wird.