Python Online | Home   . |
DU LERNST HIER... |
wie der EV3 mit seinen Lichtsensoren die Helligkeit der Unterlage messen kann. |
WIE FUNKTIONIERT EIN LICHTSENSOR? |
Er ist mit einer roten Leuchtdiode (LED) und einer Fotodiode ausgestattet. Die LED beleuchtet die darunterliegende Fläche, die Fotodiode misst die Intensität des reflektierten Lichts. Die Sensorwerte liegen zwischen 0 und 1023 (je heller umso grösser ist der Wert). |
MUSTERBEISPIELE |
Programm: from grobot import * repeat: v = ls3.getValue() if v < 500: 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 grobot import * setSpeed(20) repeat: vR = ls1.getValue() vL = ls2.getValue() if vL < 500 and vR < 500: forward() elif vL > 500 and vR < 500: rightArc(0.1) elif vL < 500 and vR > 500: leftArc(0.1) delay(100) Je nach grösse der nachgebauten Vorlage muss du eventuell die Geschwindigkeit und den Radius der Kreisbögen anpassen. Auch der Schwellenwert 500 muss je nach Helligkeit der Unterlage angepasst werden. Mit print(vR) und print(vL) kannst du die Messwerte im Terminalfenster anzeigen. Beispiel 3: Quadrat fahren
Programm: from grobot import * def keepOnTrack(): if vL < 500 and vR < 500: forward() elif vL < 500 and vR > 500: leftArc(0.1) elif vL > 500 and vR < 500: rightArc(0.1) repeat: vR = ls1.getValue() vL = ls2.getValue() if vL > 500 and vR > 500: left() delay(500) else: keepOnTrack() delay(100) |
MERKE DIR... |
Mit einem Lichtsensor kannst du die Helligkeit der Unterlage messen. Der Befehl ls1.getValue() liefert den Wert des Lichtsensors, der am Sensorport 1 angeschlossen ist, als Wert zwischen 0 und 1023. Je grösser der Wert, umso heller ist die Unterlage. Mit zwei Lichtsensoren, lässt sich der Roboter beim Fahren auf den Tracks besser steuern. |
ZUM SELBST LÖSEN |
|
ANMERKUNG |
Die Bibliothek grobot enthält nur die Lichtsensor-Funktionen des Colorsensors. Falls du den Colorsensor auch für die Farberkennung verwenden willst, musst du die OOP-Bibliothek ev3robot verwenden (siehe Colorsensor). |
![]() |
![]() |
![]() |
Zu Beginn wird die Zustandsvariable s auf null gesetzt. In der while-Schleife schaltet man den Zustand um:
.... s = 0 forward() repeat: v = ls1.getValue() if v < 500 and s == 0: # Bei Haltestelle s = 1 ... if v > 500 and s == 1: # Auf weisser Zwischenfahrt s = 2 if v < 500 and s == 2: # Am Endbahnhof ...