Python Online | Home   |
DU LERNST HIER... |
wie der Roboter mit seinen Infrarotsensoren die Helligkeit der Unterlage erkennen kann. |
WIE FUNKTIONIERT EIN INFRAROTSENSOR? |
Die Infrarotsensoren können die Änderungen im näheren Sichtfeld registrieren und werden in der Praxis häufig als Bewegungsmelder eingesetzt. Der mbRobot verfügt über 2 Infrarotsensoren. Man findet sie auf der unteren Seite des Boards, bezeichnet mit Line-R und Line-L. Da das Infrarotlicht an hellen bzw. dunklen Flächen unterschiedlich reflektiert, können die Sensoren zwischen einer hellen und dunklen Unterlage unterscheiden und geben einen digitalen Wert 0 (dunkel) oder 1 (hell) zurück. |
MUSTERBEISPIELE |
Programm: from mbrobot import * repeat: v = irLeft.read_digital() if v == 0: rightArc(0.2) else: leftArc(0.2) delay(100) Du siehst, dass die Robotersteuerung vom Radius des Links- bzw. Rechtsbogen abhängig ist. Ist er zu klein (z.B. 0.05), bewegt sich der Roboter sehr langsam und unruhig. Ist er zu gross (z.B. 0.6), so verliert er oft die Spur.
Programm: from mbrobot import * setSpeed(30) repeat: vR = irRight.read_digital() vL = irLeft.read_digital() if vL == 0 and vR == 0: forward() elif vL == 1 and vR == 0: rightArc(0.1) elif vL == 0 and vR == 1: leftArc(0.1) delay(100) Je nach Grösse der nachgebauten Vorlage musst du die Geschwindigkeit und den Radius der Kreisbögen anpassen. Beispiel 3: Quadrat fahren
Programm: from mbrobot import * def keepOnTrack(): if vL == 0 and vR == 0: forward() elif vL == 0 and vR == 1: leftArc(0.1) elif vL == 1 and vR == 0: rightArc(0.1) setSpeed(30) repeat: vR = irRight.read_digital() vL = irLeft.read_digital() if vL == 1 and vR == 1: left() delay(900) else: keepOnTrack() delay(100) |
MERKE DIR... |
Mit den Infrarotsensoren kannst du die Helligkeit der Unterlage messen. Der Befehl irLeft.read_digital() liefert den Wert des linken Infrarotsensors, als Wert 0, falls die Unterlage dunkel oder 1, falls sie hell ist. |
ZUM SELBST LÖSEN |
|
![]() |
![]() |
![]() |
Zu Beginn wird die Zustandsvariable s auf null gesetzt. In der while-Schleife schaltet man den Zustand um:
....
s = 0
forward()
repeat:
v = irLeft.read_digital()
if v == 0 and s == 0: # Bei Haltestelle s = 1 ... if v == 1 and s == 1: # Auf weisser Zwischenfahrt s = 2 if v == 0 and s == 2: # Am Endbahnhof ...