lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:lichtsensor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:lichtsensor [2023/02/10 10:20]
Ivo Blöchliger created
lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:lichtsensor [2023/02/21 10:09] (current)
Ivo Blöchliger
Line 1: Line 1:
 ====== Lichtsensor ====== ====== Lichtsensor ======
 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. 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
  
 <WRAP todo> <WRAP todo>
Line 7: Line 9:
   * Scrollen Sie nach unten und versichern Sie sich, dass der Modus ''COL-REFLECT'' eingstellt ist. Falls nicht, ändern Sie das weiter unten.   * Scrollen Sie nach unten und versichern Sie sich, dass der Modus ''COL-REFLECT'' eingstellt ist. Falls nicht, ändern Sie das weiter unten.
   * Wählen Sie dann ''Watch values'' aus und stellen Sie den Roboter auf verschiedene Flächen (vor allem der Teppich und die Klebestreifen sind interessant).   * Wählen Sie dann ''Watch values'' aus und stellen Sie den Roboter auf verschiedene Flächen (vor allem der Teppich und die Klebestreifen sind interessant).
-  * Notieren Sie sich zu jeder der verschiedenen Flächen die typische kleinsten und grössten Werte, die gemessen werden. Bewegen Sie dabei den Roboter auch.+  * Notieren Sie sich zu jeder der verschiedenen Flächen die typischen kleinsten und grössten Werte, die gemessen werden. Bewegen Sie dabei den Roboter auch.
   * Mit den gemessenen Wertebereich können später diese Bereich erkannt, bzw. sauber voneinander unterschieden werden.   * Mit den gemessenen Wertebereich können später diese Bereich erkannt, bzw. sauber voneinander unterschieden werden.
 </WRAP> </WRAP>
  
-Kenn man nun die Werte, kann damit z.B. bis zu einer Linie gefahren werden:+Kennt man nun die Werte, kann damit z.B. bis zu einer Linie gefahren werden:
  
 <WRAP todo> <WRAP todo>
   * Legen Sie ein neues EV3-Projekt an und fügen Sie folgenden Code hinzu:   * Legen Sie ein neues EV3-Projekt an und fügen Sie folgenden Code hinzu:
 <code python> <code python>
-licht = ColorSensor(Port.S3)  # Bitte Anschluss überprüfen.+licht = ColorSensor(Port.S3)  # Bitte Anschluss-Nummer überprüfen.
  
 links = Motor(Port.A) links = Motor(Port.A)
 rechts = Motor(Port.B) rechts = Motor(Port.B)
 fahrwerk = DriveBase(links, rechts, 55, 135)  # Motor links, Motor rechts, Raddurchmesser (in mm), Radabstand (in mm) 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 fahrwerk.drive(150,0)    # Vorwärts ohne Kurve
 hell = licht.reflection() hell = licht.reflection()
-while hell<50: +while hell<50:           # Wiederholen, solange die Helligkeit weniger als 50% beträgt 
-    hell = licht.reflection() +    hell = licht.reflection()    # Helligkeit messen 
-    print(hell) +    print(hell)                  # und ausgeben 
-fahrwerk.stop()+fahrwerk.stop()  # Danach anhalten 
 + 
 +print("Zeit in ms") 
 +print(stopuhr.time())  # Gemessene Zeit auf dem Computer ausgeben.
 </code> </code>
   * Passen Sie nötigenfalls die Parameter fürs ''DriveBase'' an.   * Passen Sie nötigenfalls die Parameter fürs ''DriveBase'' an.
Line 37: Line 44:
 **Situation**  **Situation** 
  
-Der Roboter startet mir dem Lichtsensor auf einer 1m Linie. Der Roboter soll mit dem Lichtsensor genau auf der gegenüberliegenden 1m Linie stoppen, und das möglichst schnell.+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. Das Score ist die Zeit in Sekunden plus $\frac{1}{10}$ vom Quadrat des Abstands in mm von der Mitte vom Klebestreifen.
Line 48: Line 57:
  
  
 +===== Einer Linie folgen =====
 +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.
  
 +
 +<WRAP todo>
 +Schreiben Sie ein Programm, so dass der Roboter einer Linie folgen kann. Testen erst mit Geraden Linien, dann auch mit Kurven (Blache).
 +</WRAP>
  
  • lehrkraefte/blc/informatik/glf22/robotik-mit-svcode/lichtsensor.1676020822.txt.gz
  • Last modified: 2023/02/10 10:20
  • by Ivo Blöchliger