Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:blc:informatik:glf20:robotik:helligkeitsensor [2021/04/28 09:21] Ivo Blöchliger |
lehrkraefte:blc:informatik:glf20:robotik:helligkeitsensor [2021/05/10 08:24] Ivo Blöchliger [Rasenmähen] |
||
---|---|---|---|
Line 13: | Line 13: | ||
<WRAP info> | <WRAP info> | ||
<code python> | <code python> | ||
- | hell = ls.getValue() | + | hell = ls.getValue() |
</ | </ | ||
Die gelieferten Werte können fluktuieren (je nach Distanz vom Sensor zum Boden, Umgebungslicht etc.). | Die gelieferten Werte können fluktuieren (je nach Distanz vom Sensor zum Boden, Umgebungslicht etc.). | ||
Sinnvolle Werte müssen erst gemessen werden, indem der Roboter auf verschiedenem Untergrund getestet wird. | Sinnvolle Werte müssen erst gemessen werden, indem der Roboter auf verschiedenem Untergrund getestet wird. | ||
- | </ | + | </ |
=== Kalibrierung === | === Kalibrierung === | ||
<WRAP todo> | <WRAP todo> | ||
- | Mit folgendem | + | Mit folgendem Programm können die Sensorwerte in Echtzeit angezeigt und getestet werden. |
<code python kalibrierung.py> | <code python kalibrierung.py> | ||
from ev3robot import * | from ev3robot import * | ||
Line 44: | Line 44: | ||
########################################### | ########################################### | ||
- | while not robot.isEscapeHit(): | + | while True: |
- | l = " | + | l = ls.getValue() |
- | print(l) | + | print(l) |
- | robot.drawString(l, | + | robot.drawString(str(l), 0, 3) # Ausgeben auf dem Roboter-Display |
- | Tools.delay(100) | + | Tools.delay(100) |
- | robot.exit() | + | # robot.exit() |
</ | </ | ||
- | </ | + | </ |
===== Aufgaben ===== | ===== Aufgaben ===== | ||
Line 66: | Line 66: | ||
gears.forward() | gears.forward() | ||
while True: # Unendlich wiederholen | while True: # Unendlich wiederholen | ||
- | # Lichtsensor auslesen | + | # Lichtsensor auslesen, Wert in eine Variable speichern |
- | # Darauf reagieren: | + | # Darauf reagieren |
if roboter_sieht_klebestreifen: | if roboter_sieht_klebestreifen: | ||
| | ||
Line 75: | Line 75: | ||
</ | </ | ||
</ | </ | ||
+ | ==== Rasenmähen ==== | ||
<WRAP todo> | <WRAP todo> | ||
- | Programmieren Sie den Roboter so, dass er losfährt, | + | Viele Rasenmähroboter funktionieren nach dem folgenden Prinzip: |
+ | * Fahren | ||
+ | * Ein bisschen zurücksetzen (rückwärts fahren). | ||
+ | * Um einen zufälligen Winkel drehen (wobei hier wohl Werte zwischen 40° und 160° sinnvoll sind). | ||
+ | * Wiederholen | ||
+ | |||
+ | Unser Rasen soll hier eine weisse Blache (oder Papier) sein, die nicht verlassen werden soll. Der Roboter | ||
+ | |||
+ | Programmieren Sie einen «Rasenmäher», | ||
+ | |||
+ | Eine Zufallszahl kann wie folgt bestimmt werden: | ||
+ | <code python> | ||
+ | # Am Anfang vom Code: | ||
+ | from random import randrange | ||
+ | |||
+ | # Im Code | ||
+ | winkel = randrange(40,171) # Zufälliger, | ||
+ | # Winkel in Zeit oder Strecke umrechnen, um effektiv um diesen Winkel zu drehen. | ||
+ | </ | ||
</ | </ | ||
+ | |||
+ | ==== Der Linie folgen ==== | ||
+ | Die Idee ist, dem Rand einer Linie zu folgen und den Sensor zu platzieren, dass dieser grau sieht. Das passiert, wenn der Sensor genau auf der Grenze zwischen Weiss und Schwarz misst. | ||
+ | Zu hell heisst, zu viel rechts, zu dunkel heisst zu viel links (oder umgekehrt). | ||
+ | |||
+ | Arbeiten Sie mit '' | ||
+ | |||