Wie zeitliche Abläufe ohne delay() einfach gestalten?

Das BlinkWithoutDelay-Beispiel funktioniert folgendermaßen.
Die Funktion millis() gibt die Millisekunden zurück, die vergangen sind seitdem Arduino eingeschaltet oder resetiert wurde.

Du speicherst die Startzeit ab un kontrolliest durch subtrahieren der Startzeit von der jetztzeit ob die Wartezeit schon vorbei ist.
Wenn Du mehrere solche Abläufe kontrollieren willst ( 2 LED unterschiedlich blinken) dann verwende mehrere variablen für die Startzeiten.

Zu Deinem Problem: Ich bräuchte aber beispielsweise 1 Sekunden ein und 5 Sekunden aus. Ändere das http://arduino.cc/en/Tutorial/BlinkWithoutDelay BEispiel folgendermaßen:

intervallon = 1000;
intervalloff = 5000;

...

void loop()
{
    unsigned long currentMillis = millis();
 
  if(ledState == HIGH && currentMillis - previousMillis > intervalon ) {
     previousMillis = currentMillis;  
     ledState = LOW;
     digitalWrite(ledPin, ledState);
  }
   if(ledState == LOW && currentMillis - previousMillis > intervaloff) {
     previousMillis = currentMillis;  
     ledState = HIGH;
     digitalWrite(ledPin, ledState);
  }
}

Grüße Uwe