LED per MILLIS blinken lassen. AN und AUS Zeit soll unterschiedlich sein

Ich dachte mir, dass ich die if-Schleife irgendwie in eine Funktion packe, die dann für beide LEDs per Parameter die Millis abfragt ...

Auch eine nette Alternative zur Schleife über beide Led.

Hat den kleinen Nachteil, dass die Funktion jedesmal ihr eigenes previousMillis braucht und das auch noch ändern muss.
Da kannst du schön lernen, wie man eine class schreibt.

Wenn dich das erstmal erschreckt: Gib previousMillis als Parameter mit (als Referenz, weil es geändert wird)
z.B. so

boolean blink(unsigned int an, unsigned int zyklus, unsigned long & prevtime) {
   if (millis() - prevtime >= zyklus) {
       prevtime += zyklus;
   }
   if (millis() - prevtime < an) return true;
   else return false;
} 

unsigned long prevtime1, prevtime2;
void loop() {
  digitlaWrite (led1Pin, blink(20, 2000, prevtime1)); // ein Blitz alle 2 sec
  digitlaWrite (led2Pin, blink(100, 200, prevtime2));  // 50:50 mit 5 Hz
}

setup() und die Pin-Definitionen fehlen

1 Like