Deutsch English |
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 Callibot verfügt über 2 Infrarotsensoren. Man findet sie auf der unteren Seite des Boards. Da das Infrarotlicht an hellen bzw. dunklen Flächen unterschiedlich reflektiert, können diese Sensoren zwischen einer hellen und dunklen Unterlage unterscheiden und geben einen digitalen Wert 0 (dunkel) oder 1 (hell) zurück. |
MUSTERBEISPIELE |
Programm: from callibot import * setSpeed(30) repeat: v = irLeftValue() if v == 0: rightArc(0.1) else: leftArc(0.1) delay(100) Die Robotersteuerung ist vom Radius des Links- bzw. Rechtsbogen abhängig. 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 callibot import * setSpeed(20) repeat: vR = irRightValue() vL = irLeftValue() 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) Beispiel 3: Quadrat fahren
Programm: from callibot 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 = irRightValue() vL = irLeftValue() if vL == 1 and vR == 1: left() delay(500) else: keepOnTrack() delay(100) |
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. |
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 ...