Lektion 4 von 5Robotik mit fischertechnik
Robotik mit fischertechnik · Lektion 4 · 30 Minuten
Spurfolger und Fototransistor
Das lernst du
- Mit dem Spurfolger erkennen, ob eine Linie unter dem Sensor ist
- Mit dem Fototransistor die Helligkeit als Spannung in mV messen
- Messwerte in einer Liste sammeln und auswerten
Der Code in dieser Lektion stammt aus dem Buch „Python für Roboter“, Kapitel 3.3, und läuft hier unverändert im Simulator. Zum Buch bei Amazon ↗
Sensoren: die Sinne des Roboters
Damit dein Modell auf seine Umgebung reagiert, braucht es Sensoren. Die zwei wichtigsten für Fischertechnik-Projekte sind der Spurfolger und der Fototransistor. Beide kommen an die Eingänge I1 bis I8.
Der Spurfolger
Der Spurfolger erkennt, ob unter ihm eine dunkle Linie ist oder heller Untergrund. trailfollower(...) liefert dafür gleich einen sauberen Wert: 0 für die Linie, 1 für hell.
import ftrobopy
from time import sleep
txt = ftrobopy.ftrobopy("localhost", 65000)
# Zwei Spurfolger-Sensoren links und rechts, an I1 und I2
spur_links = txt.trailfollower(1)
spur_rechts = txt.trailfollower(2)
while True:
wert_links = spur_links.state() # 0 = schwarze Linie, 1 = heller Untergrund
wert_rechts = spur_rechts.state()
print(f"Links: {wert_links}, Rechts: {wert_rechts}")
if wert_links == 0:
print("Linker Sensor ist auf der Linie.")
sleep(0.2)Im Schaltpult schaltest du die beiden Sensoren zwischen „hell“ und „Linie“ um. Schau, wie sich die Ausgabe ändert.
Der Fototransistor
Der Fototransistor misst, wie viel Licht auf ihn fällt. txt.voltage(...) gibt dir die Spannung in Millivolt (mV). Mit dem Regler im Schaltpult änderst du das Licht:
import ftrobopy
from time import sleep
txt = ftrobopy.ftrobopy("localhost", 65000)
fototransistor = txt.voltage(3) # Sensor an I3
while True:
spannung_mv = fototransistor.voltage()
print(f"Gemessene Spannung: {spannung_mv} mV")
sleep(0.3)Erst messen, dann Schwellwert festlegen: Je nach Verschaltung bedeutet mehr Licht eine höhere oder eine niedrigere Spannung. Halte deshalb erst etwas Helles und etwas Dunkles vor den Sensor und schau dir die Werte mit
print()an. Im Simulator gilt: hell = hohe Spannung (etwa 800 mV), dunkel = niedrige (etwa 200 mV).
Für die Aufgabe brauchst du append(), min(), max() und sum() aus dem Python-Teil.
Deine Aufgabe
Jetzt bist du dran
Übung 3.3 aus dem Buch: Schreib einen Sensor-Logger. Miss 20 Werte des Fototransistors an I3 hintereinander (mit kurzer Pause, z. B. sleep(0.1)) und sammle sie in der Liste messwerte. Gib am Ende aus: Kleinster Wert: …, Größter Wert: … und Durchschnitt: … (der Durchschnitt darf eine Kommazahl sein).
import ftrobopy
from time import sleep
txt = ftrobopy.ftrobopy("localhost", 65000)
fototransistor = txt.voltage(3)
messwerte = []
# 20 Werte messen und in messwerte sammeln
# Kleinsten, größten und durchschnittlichen Wert ausgeben- Denkanstoß
Eine
for-Schleife mitrange(20)– darinmesswerte.append(fototransistor.voltage()). - Welcher Befehl hilft?
min(messwerte),max(messwerte)undsum(messwerte)/len(messwerte)– und genau diese Wörter ausgeben. - Lückencode – ergänze die ___
import ftrobopy from time import sleep txt = ftrobopy.ftrobopy("localhost", 65000) fototransistor = txt.voltage(3) messwerte = [] for _ in ___: messwerte.append(___) sleep(___) print(___) print(___) print(___)
Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.
Lösung anzeigen🔒 Erst nach allen Hinweisen oder 2 Prüf-Versuchen
Versuch es erst selbst – aus Fehlern lernt man am meisten. Hier ist eine mögliche Lösung:
import ftrobopy
from time import sleep
txt = ftrobopy.ftrobopy("localhost", 65000)
fototransistor = txt.voltage(3)
messwerte = []
for _ in range(20):
messwerte.append(fototransistor.voltage())
sleep(0.1)
print(f"Kleinster Wert: {min(messwerte)}")
print(f"Größter Wert: {max(messwerte)}")
print(f"Durchschnitt: {sum(messwerte) / len(messwerte)}")