From e9aec3d1a0f8534ddcf4cd36a73b7605e5ff199b Mon Sep 17 00:00:00 2001
From: "tom.tiltmann" <tom.tiltmann@th-koeln.de>
Date: Thu, 22 Dec 2022 11:32:05 +0100
Subject: [PATCH] blink() kann jetzt ganz an/ausschalten

---
 led_controller.h | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/led_controller.h b/led_controller.h
index daa7dd2..74edb10 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:
-- 
GitLab