Zeitstabiler Timer mit dem Arduino
So programmieren Sie einen wirklich zeitstabilen Timer mit dem Arduino UNO oder MEGA
Juli 17, 2023 - Lesezeit: ~1 Minute
Inhalt
Ungenauer Timer mit delay()
Ganz offensichtlich bietet der Arduino mit dem Befehl delay()
eine Möglichkeit ein Timing zu starten, bzw. zyklische Events auszulösen.
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(1000);
}
Allerdings hat der delay()
ein kleines Problem, denn er ist sehr ungenau und dessen Ganggenauigkeit hängt sehr stark davon ab, welche Befehle im loop()
noch so verarbeitet werden müssen. Im Zuge dessen, kann das Timing etwas schwanken.
In vielen Projekten ist eine stabile Zeitbasis wirklich unerläßlich, besonders in musikalischen Projekten, denn dort muss der Controller unter Umständen mit anderen Taktgeneratoren präziese über mehrere Minuten zusammenarbeiten können.
Zeitgenauer Timer mit millis()
Der Atmega328 bietet noch eine erheblich genauere Zeitbasis. Nach dem Einschalten des Chip, startet er automatisch einen unabhängigen und stabilen Timer auf der Basis der abgelaufenen Millisekunden. Alle 50 Tage (etwa) wird dieser interne Timer, bedingt durch den Überlauf, auf 0 zurück gesetzt.
int led = 13;
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
if (millis() % 1000 > 500) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
Der große Vorteil des Befehls millis()
liegt darin, das das Timing unabhängig vom ausführenden Programmcode und dessen Struktur stabil weiter läuft. Mit Hilfe des Modulo-Operators kann dann Zeitstabil der Sekundentakt abgefragt werden und weitere Events ausgelöst werden.
Ein zeitgenaues Timing ist besonders dann wichtig, wenn der Atmega beispielsweise in der Musik verwendet wird und er den Takt präziese über mehrere Minuten halten muss. Eine Abweichung wäre in solchen Projekten schnell für den Zuhörer wahrnehmbar.
Links
Wenn Sie genauere Informationen zum Thema Timer suchen, dann schauen Sie sich auch gerne die folgenden Links an:
Schlagworte:
Timer Zeit