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

Das passt dazu:

Derzeit sind noch keine passenden Beiträge vorhanden.

Beiträge in der Kategorie "Arduino":

Atmega328p minimal Schaltung mit Quarz

Der Chip Atmega328P, kann auch ohne Entwickler-Board einzeln betrieben werden. Die minimale Beschaltung mit externen 16MHz Oszillator.

Atmega328p ohne Quarz

Sie können den Atmega328p DIL Chip auch ohne den externen 16MHz Quarz benutzen, damit ist der Chip ohne externe Oszillator-Beschaltung bei 8MHz nutzbar.

DFPlayer Mini Pinout Datasheet

Der DFPlayer mini ist eine kleine Platine die einen SD-Kartenshacht, einen MP3-Enocder und Stiftleisten zum einlöten oder aufstecken für kleine Projekte bereit hält.

Zeitstabiler Timer mit dem Arduino

So programmieren Sie einen wirklich zeitstabilen Timer mit dem Arduino UNO oder MEGA

Der ARDUINO GIGIA R1 ist da

Der neue ARDUINO Giga kommt in wenigen Wochen auf den Markt und führt die Produktlinie des ARDUINO MEGA weiter fort und erweitert das Entwickler-Board um nützliche Kommunikationsprotokolle wie WLAN und BLE.

Probleme mit random() am ARDUINO

In der EDV gibt es keinen echten Zufallsgenerator, der Werte tatsächlich zufällig erzeugt, so auch beim Arduino. Das sollten Sie wissen in Projekten mit Zufallswerten.

AVR ISP Shield mit der ARDUINO IDE

So brennen Sie den Bootloader für den ARDUINO ATmel ATMega328P mit einem AVR ISP Shield

Daten auf die SD Karte mit dem Arduino schreiben

Der ATMEGA328 Nano aus dem renomierten Hause MAKERFACTORY bei mir im Test - ist er doch nur ein Clone und was taugt er?

Atmega328p Minimalschaltung mit ISP

Minimalschaltung des Atmega 328P mit Quarz und einem ISP-Anschluss, für die Programmierung im fest verbauten Projekt für Software-Updates und ähnliches.

Der ARDUINO Nano Clone

Der ATMEGA328 Nano aus dem renomierten Hause MAKERFACTORY bei mir im Test - ist er doch nur ein Clone und was taugt er?

AT Befehle HC-05, HC-06 mit ARDUINO

Der HC-05 ist ein preiswertes Bluetooth Modul und kann, im Gegensatz zum HC-06, sowohl als Master und auch als Slave arbeiten.