Das gesamte Programm wird aus einzelnen Funktionen zusammengesetzt. Die erste Funktion gib_licht fragt die beiden Farbsensoren ab, speichert die Werte und berechnet die Differenz und die Summe der beiden Lichtwerte. Zur Kontrolle der einzelnen Funktionen zeigt die Funktion zeige_licht die licht_differenz und die licht_summe auf dem Bildschirm an.
Zuvor müssen die Variablen eingerichtet werden. v1 ist die Geschwindigkeit, mit der der Roboter fährt. v2 ist etwas kleiner (80% von v1) und dient dem Steuern bei der Linienfahrt.
Um sicher zu gehen, dass der Roboter alle Abzweigungen und Kreuzungen erkennt, werden zuerst für die beiden
Farbsensoren jeweils der Dunkel- und der Hellwert gelesen und gespeichert. Dazu fährt der
Roboter soweit vor, bis er auf eine dunkle Linie trifft und liest die Dunkelwerte ein.
Danach fährt er zurück und liest die Hellwerte.
Zum Schluss fährt er wieder nach vorn und befindet sich außerhalb der Startfläche. Nun kann es losgehen.
Der Roboter liest die beiden Werte der Farbsensoren und berechnet die Differenz. Wenn die Differenz sehr klein ist, liefern beide Sensoren etwa den gleichen Wert und der Roboter ist auf der Linie. Wird ein Wert kleiner, kommt er auf dieser Seite auf die dunkle Linie. Damit wird der Wert der Differenz aber größer.
Das Startprogramm lässt den Roboter nach dem Drücken der mittleren Taste die Linie langfahren und fahren und fahren....
Ist alles o.k., kommt er nicht vom rechten Wege ab!
An einer Kreuzung gehen nach links und rechts schwarze Linien weg. Beide Lichtsensoren bekommen jetzt zusammen weniger Licht. Damit bleibt die Differenz zwar klein, die Summe wird aber auch sehr klein.
Die Funktion vorwärts_kreuzung fährt die Linie solange entlang, bis die Summe des Lichtes einen bestimmten Wert unterschritten hat. Der Faktor 1,5 macht die Summe der beiden Dunkelwerte etwas größer. Damit ist die aktuelle licht_summe mit Sicherheit kleiner. Falls es nicht sicher funktioniert, muss der Faktor verändert werden. Ausprobieren!