HomeTurtlegrafikGPanelRobotik WebTigerPython |
Python - Online |
Deutsch English |
DU LERNST HIER... |
wie der Roboter mit seinen Infrarotsensoren die Helligkeit der Unterlage erkennen kann. |
WIE FUNKTIONIERT EIN INFRAROTSENSOR? |
Da das Infrarottlicht an hellen bzw. dunklen Flächen unterschiedlich reflektiert, können die Sensoren zwischen einer dunklen und hellen Unterlage unterscheiden und geben einen digitalen Wert 0 (dunkel) oder 1 (hell) zurück. Der mbRobot verfügt über 2 Infrarotsensoren (irLeft, irRight). Man findet sie auf der unteren Seite des Boards. Der Maqueen Plus V2 verfügt über 5 Infrarotsensoren (irL1, irL2, irL3, irR1, irR2, irM), der Maqueen Plus sogar über 6 Infrarotsensoren (irL1, irL2, irL3, irR1, irR2, irL3, irR3), wobei irLeft = irL1 und irRight = irR1. Damit können alle nachfolgende Programme für alle Modelle verwendet werden. |
MUSTERBEISPIELE |
Programm: from mbrobot import * #from mbrobot_plus import * repeat: v = irLeft.read_digital() if v == 0: rightArc(0.1) else: leftArc(0.1) 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 * #from mbrobot_plus 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 * #from mbrobot_plus 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) repeat: vR = irRight.read_digital() vL = irLeft.read_digital() if vL == 1 and vR == 1: left() delay(500) else: keepOnTrack() delay(100) Der Maquen Plus verfügt über sechs Infrarotsensoren. Ihre Bezeichnung siehst du unten auf dem Chassis. Die Werte 0 (dunkel) bzw. 1 (hell) geben sie zurück mit den Befehlen:
Programm: from mbrobot import * setSpeed(30) repeat: vR = irRight.read_digital() vL = irLeft.read_digital() d = getDistance() if d < 20: stop() left() delay(1500) stop() else: 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) elif vL == 1 and vR == 1: backward() delay(100) Die Sensorwerte werden alle 100 Millisekunden in der gleichen repeat-Schleife abgefragt. Der Programmblock nach else entspricht dem Programmcode im Beispiel 2. |
MERKE DIR... |
Mit den Inrarotsensoren 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. Es können mehrere verschiedene Sensoren gleichzeitig verwendet werden. |
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 ...