Für ganz einfache Zwecke (z. B. um eine LED blinken zu lassen) reicht die leicht verständliche Delay-Funktion völlig aus. Dabei muss berücksichtigt werden, dass während der Verzögerungszeit keine weiteren Befehle vom Arduino ausgeführt werden, er also blockiert ist. Ein Tastendruck wird also während der Ablaufzeit des Timers nicht angenommen. Für umfangreichere Anwendung bietet sich an, einen der integrierten Timer des Arduino zu verwenden. Damit werden die v. g. Probleme vermieden.
In diesem dokumentierten Beispiel blinken zwei LEDs mit unterschiedlichen On/Off-Zeiten:
/* Beispiel für 2 LEDs mit unterschiedlichen Blinkzeiten (ohne Delay) * Version 1.0 * Datum: 20.11.2019 * Autor: Hans M. Herbrand * Website: herbrand.org * Credits: https://forum.arduino.cc/index.php?topic=360714.msg2487415#msg2487415 */ // LED 13 const int ledPin1 = 13; const unsigned long onTime_1 = 500; // LED On in ms const unsigned long offTime_1 = 5000; // LED Off in ms unsigned long previousMillis_1; // LED 12 const int ledPin2 = 12; const unsigned long onTime_2 = 500; // LED On in ms const unsigned long offTime_2 = 1000; // LED Off in ms unsigned long previousMillis_2; void setup() { pinMode(ledPin1,13); pinMode(ledPin2,12); } void loop() { // LED 13 if (millis() - previousMillis_1 > onTime_1){ digitalWrite(ledPin1, LOW); } if (millis() - previousMillis_1 > offTime_1){ previousMillis_1 = millis(); digitalWrite(ledPin1, HIGH); } // LED 12 if (millis() - previousMillis_2 > onTime_2){ digitalWrite(ledPin2, LOW); } if (millis() - previousMillis_2 > offTime_2){ previousMillis_2 = millis(); digitalWrite(ledPin2, HIGH); } }
Die jeweiligen Werte lassen sich ändern und das Script kann für eigene Zwecke angepasst werden.