diff --git a/led_controller.h b/led_controller.h index daa7dd2ac7ddef059fe0a41cc34e9836fc5f9039..74edb10468be56a87fd3c917d2994041d6cc2879 100644 --- a/led_controller.h +++ b/led_controller.h @@ -22,23 +22,31 @@ public: void blink(uint16_t interval_off, uint16_t interval_on) { - switch (digitalRead(PIN)) - { - case HIGH: - if ((millis() - timestamp) > interval_on) - { - digitalWrite(PIN, !digitalRead(PIN)); - timestamp = millis(); - } - break; - case LOW: - if ((millis() - timestamp) > interval_off) + // 1. Fall: Keine Zeitintervall für den Zustand AUS-> LED ist also dauerhaft angeschaltet! + if (interval_off==0) + digitalWrite(PIN, HIGH); + // 2. Fall: Keine Zeitintervall für den Zustand EIN-> LED ist also dauerhaft ausgeschaltet! + else if (interval_on==0) + digitalWrite(PIN, LOW); + // 3. Fall: Es gibt Zeitintervalle EIN und AUS: + else + switch (digitalRead(PIN)) { - digitalWrite(PIN, !digitalRead(PIN)); - timestamp = millis(); + case HIGH: + if ((millis() - timestamp) > interval_on) + { + digitalWrite(PIN, !digitalRead(PIN)); + timestamp = millis(); + } + break; + case LOW: + if ((millis() - timestamp) > interval_off) + { + digitalWrite(PIN, !digitalRead(PIN)); + timestamp = millis(); + } + break; } - break; - } } private: