Python Online
Home    
bewegen

2. ROBOTER STEUERN

 

 

DU LERNST HIER...

 

die wichtigsten Befehle, mit welchen du die Aktoren deines Roboters 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.

 

Programm:

from mbrobot import *

forward()
delay(2000)
left()
delay(600)
forward()
delay(2000)
stop()

 

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 Erhalt des Befehls backward() im Zustand backward befinden, werden mit dem Befehl

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

Programm:

from mbrobot import *

forward()
delay(4000)
backward()
setLED(1)
delay(3000)
setLED(0)
delay(1000)
stop()

 

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.

 

Programm:

from mbrobot import *

setSpeed(40)
leftArc(0.2)
delay(5000)
rightArc(0.2)
delay(5000)
stop()

 

Beispiel 4: Alarm auslösen
Mit dem Befehl setAlarm(1) wird Alarm eingeschaltet (wiederholter Pipton) setAlarm(0) schaltet den Alarm aus. Der Roboter bewegt sich während 3 Sekunden rückwärts und schaltet dabei Alarm ein.

Programm:

from mbrobot import *

backward()
setAlarm(1)
delay(3000)
setAlarm(0)
stop()

 

 

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
 setLED(0)  LEDs ausschalten
 setAlarm(1)  Alarm einschalten
 setAlarm(0)  Alarm ausschalten

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 Switch-Schalter hinten auf dem Roboterchassis auf "OFF" stellst.

 

 

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.

Der Roboter bewegt sich 4000 ms vorwärts und danach 4000 ms rückwärts. Während des Vorwärtsfahrens schlatet es LEDs ein und während des Rückwärtsfahrens schaltet er Alarm ein.

 

 

ZUSATZSTOFF: LEDs EINZELN EIN- UND AUSSCHALTEN

 

Mit den Befehlen setLED(1) und setLED(0) kannst du beide LEDs 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:
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

 

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

 


Programm:

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)

 

Beispiel 5: Jetzt kombinierst du die LEDs mit Motoren. Wenn der Roboter auf einem Linksbogen fährt, leuchtet die linke LED, wenn er auf einem Rechtsbogen fährt, läuchtet die rechte LED.

Programm:

from mbrobot import *

ledLeft.write_digital(1)
leftArc(0.2)
delay(5000)
ledLeft.write_digital(0)
ledRight.write_digital(1)
rightArc(0.2)
delay(5000)
ledRight.write_digital(0)
stop()

 

 

MERKE DIR...

 

Die LEDs können auch einzeln ein- und ausgeschlaltet werden. Der Befehl setLED(1) ist eine vereinfachte Version von
ledLeft.write_digital(1)
ledRight.write_digital(1)
.

 

 

ZUM SELBST LÖSEN

 

 

3.
Der Roboter fährt zuerst 3000 ms gerade aus und hält an, wie an einer Kreuzung. Dann blinkt er dreimal mit der linken LED und biegt rechtwinklig linkts ab. Fährt wieder kurz gerade aus und wiederholt das Selbe mit der rechten LED und Rechts-Abbiegen.