Als zusätzliche Herausforderung haben wir dem Arduino beigebracht, die Strecke möglichst schnell zu fahren. Um die aktuelle Autoposition festzustellen, verwendet der Arduino die Daten der Lichtschranken. Zu jeder Lichtschranke ordnet der Arduino drei Arrays zu: Das erste Array enthält die Geschwindigkeit, mit der das Auto fahren soll, sobald es die Lichtschranke passiert. Das zweite Array beinhaltet einen Delay, also eine Zeitverzögerung (in Millisekunden). Nach Ablauf der dort angegebenen Zeit beschleunigt das Auto auf den Wert, welcher im dritten Array gespeichert ist. Dieser Ansatz wurde gewählt, da es so mit relativ wenig Lichtschranken möglich ist, ein gutes Fahrverhalten zu realisieren.
Der Arduino bietet zwar keinen analogen Ausgang, die Geschwindigkeit kann jedoch mittels PWM-Signal gesteuert werden.
Das Programm ist in Form eines Arduino Sketches erhältlich.
Aktuell ist die Streckenfreigabe nur für die manuell gesteuerten Fahrzeuge umgesetzt, der Arduino lässt sich nicht stoppen. Grundsätzlich gibt es zwei Möglichkeiten, dieses Problem zu lösen. Zum einen elektrotechnisch, indem abhängig vom Signal des UE9 der Arduino physikalisch von der Strecke getrennt wird. Dies würde keine Änderungen der Software erfordern. Der andere Ansatz ist, ein einziges Kabel direkt zwischen Arduino und UE9 zu verlegen. Über dieses Kabel ist zwar keine physikalische Trennung möglich, wie sie bei den menschlichen Spielern angewandt wird, es kann jedoch eine “Bitte” in Form eines Signals (HIGH oder LOW) an den Arduino gesendet werden. Die Software des Arduinos müsste nun lediglich durch eine einfache Abfrage erweitert werden, welche abhängig von diesem Signal fährt oder stehen bleibt.
Mittlerweile wurder der zweite Ansatz umgesetzt und um ein weiteres Feature erweitert: Fehlt dem Arduino die „Fahrerlaubnis”, fährt er bis zur Startlinie weiter, und wartet dort auf das nächste Rennen. Das ersparte uns oftmals das auflesen des Autos per Hand.
Ein größeres und für uns derzeit unlösbares Problem stellt die „Lernfähigkeit“ des Arduinos da. Aktuell müssen die Werte für die einzelnen Lichtschranken per Hand ausprobiert und eingegeben werden. Eine zunächst scheinbar naheliegende Lösung stellte sich nach den manuellen Tests als ungenügend heraus:
Man könnte doch einfach die gesamte Strecke zunächst langsam abfahren, und nach jeder Runde ein wenig beschleunigen. Fällt der Wagen nach einer bestimmten Lichtschranke aus der Bahn, kann an dieser Stelle nicht weiter beschleunigt werden. Dies wird solange durchgeführt, bis für jede Lichtschranke die Maximalgeschwindigkeit gefunden wurde.
All dies kann nicht mithilfe der Lichtschranken erfasst werden, sondern erfordert manuelle Analysen und Tests oder mehr Daten.