LBotics.at

Um dennoch zeitgesteuerte Abläufe in ein Skript eines autonomen Roboters integrieren zu können - welche die Ausführung des Codes nicht an einer Stelle für eine bestimmte Zeit anhalten - empfiehlt es sich den Timer des Cyberpi Controllers zu verwenden. Dieser läuft in einem parallelen Prozess auf dem Mikrocontroller und beinflusst die Ausführung des Skripts nicht.

Im eigentlichen Skript kann man auf die aktuellen Werte des Timers zurückgreifen und diese für zeitgesteuerte Prozesse verwenden. Man kann sich diesen Timer auch wie eine Art Stoppuhr vorstellen, die mit Start des Skripts zu laufen beginnt und auf der man stets die vergangene Zeit seit dem Start des Skripts ablesen kann.

Der aktuelle Wert des Timers wird von der Funktion cyberpi.timer.get() in Form einer Dezimalzahl mit einer Genauigkeit von tausendstel Sekunden zurückgegeben. Auch ist es möglich den Timer wieder auf 0 zu setzen, indem man die Funktion cyberpi.timer.reset() aufruft.

Beispiel - Anzeige des aktuellen Werts des Timers und Zurücksetzen des Timers

Im folgenden Beispiel wird der aktuelle Wert des Timers am Display angezeigt. Durch Drücken des qadratischen Buttons am CyberPi kann der Timer zurückgesetzt werden.

import cyberpi

while True:
float_time = cyberpi.timer.get()
cyberpi.display.show_label(str(float_time),12,0,0)
if cyberpi.controller.is_press("a")==True:
       cyberpi.timer.reset()

 

Erklärungen zu diesem Programmbeispiel

Zeile 4: float_time = cyberpi.timer.get()

Auslesen des aktuellen Werts des Timers auch ablegen in der Variable float_time

Zeile 5: cyberpi.display.show_label(str(float_time),12,0,0)

Ausgabe des Werts der Variable float_time am Display

Zeile 6: if cyberpi.controller.is_press("a")==True:

Überprüfen, ob der quadratische Taster am Cyberpi Controller gedrückt wurde

Zeile 7: cyberpi.timer.reset()

Zurücksetzen des Timers auf den Wert 0