// Variable hält Zeitpunkt, an dem als nächstes was gemacht werden soll
unsigned long nextActiveMillis;
// Variable hält aktuellen Zustand der LEDs (aktuellen Schritt in der Schrittkette)
bool LEDsOn;
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
nextActiveMillis = millis(); // wir beginnen sofort mit der ersten Aktion
LEDsOn = false; // anfänglich sind die LEDs aus
}
void loop() {
// prüfen, ob wir aktiv werden müssen
if (millis() >= nextActiveMillis) {
// welchen Schritt führen wir als nächstes aus
if (LEDsOn) {
// LEDs sind an, schalte sie aus
digitalWrite(8, LOW);
digitalWrite(9, LOW);
LEDsOn = false;
// warte 300 ms bis zur nächsten Aktion
nextActiveMillis = millis() + 300;
}
else {
// LEDs sind aus, schalte sie an
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
LEDsOn = true;
// warte 1000 ms bis zur nächsten Aktion
nextActiveMillis = millis() + 1000;
}
}
// hier könnten wir jetzt noch anderes Zeug machen, während wir auf das Eintreten des
// nächsten Schaltzustandes warten
}