Der Lichtsensor kann Helligkeit und/oder Farbe messen. Dazu wird die zu messende Fläche normalerweise schnell abwechselnd angestrahlt und wieder nicht, und das jeweils reflektierte Licht gemessen. Die Differenz entspricht dann der Helligkeit der gemessenen Fläche.
Dokumentation dazu: https://pybricks.com/ev3-micropython/ev3devices.html#color-sensor
Um einen Eindruck der gelieferten Werte zu bekommen, kann direkt der Roboter benutzt werden (ohne Programmierung). Gehen Sie wie folgt vor:
Device browser
→ Sensors
und wählen dort den color
Sensor aus.COL-REFLECT
eingstellt ist. Falls nicht, ändern Sie das weiter unten.Watch values
aus und stellen Sie den Roboter auf verschiedene Flächen (vor allem der Teppich und die Klebestreifen sind interessant).Kennt man nun die Werte, kann damit z.B. bis zu einer Linie gefahren werden:
licht = ColorSensor(Port.S3) # Bitte Anschluss-Nummer überprüfen. links = Motor(Port.A) rechts = Motor(Port.B) fahrwerk = DriveBase(links, rechts, 55, 135) # Motor links, Motor rechts, Raddurchmesser (in mm), Radabstand (in mm) stopuhr = StopWatch() # Stopuhr unmittelbar vor der ersten Bewegung starten fahrwerk.drive(150,0) # Vorwärts ohne Kurve hell = licht.reflection() while hell<50: # Wiederholen, solange die Helligkeit weniger als 50% beträgt hell = licht.reflection() # Helligkeit messen print(hell) # und ausgeben fahrwerk.stop() # Danach anhalten print("Zeit in ms") print(stopuhr.time()) # Gemessene Zeit auf dem Computer ausgeben.
DriveBase
an.while
Schlaufe an, damit sauber zwischen Teppich und Klebeband unterschieden werden kann.Situation
Der Roboter startet mit dem Lichtsensor auf einer 1m Linie. Der Roboter soll die gegenüberliegende Linie mit dem Sensor mindestens berühren, um 180 Grad wenden und dann möglichst genau mit dem Lichtsensor in der «Mitte» der Startlinie stoppen, und das möglichst schnell.
Das Score ist die Zeit in Sekunden plus $\frac{1}{10}$ vom Quadrat des Abstands in mm von der Mitte vom Klebestreifen.
Grundidee: Der Roboter soll dem linken (oder rechten) Rand einer Linie folgen, d.h. die Helligkeit sollte immer genau zwischen den Werten der beiden Flächen liegen. Je nachdem, ob zu hell oder zu dunkel gemessen wird, soll nach links oder rechts gesteuert werden.
Schreiben Sie ein Programm, so dass der Roboter einer Linie folgen kann. Testen erst mit Geraden Linien, dann auch mit Kurven (Blache).