Zum Inhalt springen
BetaEN
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

Ohne Hinweise gelöst gibt es einen ⭐ auf deiner Fortschrittsseite.

Lösung anzeigen

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)}")