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

Ich habe hier ein Beispiel für eine sehr einfache Klasse

Es geht auch einfacher, und braucht auch keine Extra-Dateien

class Blink {
private:
  unsigned long prevtime;
  unsigned int zyklus;
  unsigned int an;
public:
   Blink(unsigned int _an, unsigned int _zyklus) { zyklus=_zyklus; an = _an;}
   boolean currentState () { 
     // sollte häufig aufgerufen werden, damit der jeweils aktuelle Zustand zurückgeliefert wird 
     if (millis() - prevtime >= zyklus) {
       prevtime = millis();
     }
     if (millis() - prevtime < an) return true;
     else return false;
   }  
};

Blink blitz(20,2000); // ein Blitz alle 2 sec
Blink schnell(100,200); // 50:50 mit 5 Hz

void loop() {
   digitalWrite(led1Pin, blitz.currentState() );
   digitalWrite(led2Pin, schnell.currentState() );
}
2 Likes