diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 682bb4c72..5263223f8 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -37,6 +37,9 @@ //Hardware-settings (only changeble via code) #define LEDCOUNT 84 uint8_t buttonPin = 0; //needs pull-up +uint8_t auxPin = 16; //use e.g. for external relay +uint8_t auxDefaultState = 0; //0: input 1: high 2: low +uint8_t auxTriggeredState = 0; //0: input 1: high 2: low //AP and OTA default passwords (change them!) String appass = "wled1234"; @@ -133,6 +136,9 @@ boolean nixiePause; long countdownTime = 1483225200L; boolean arlsTimeout = false; long arlsTimeoutTime; +uint8_t auxTime = 0; +long auxStartTime; +boolean auxActive, auxActiveBefore; ESP8266WebServer server(80); ESP8266HTTPUpdateServer httpUpdater; diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index 8d99086e6..7b51d29e7 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -281,6 +281,12 @@ boolean handleSet(String req) nightlightStartTime = millis(); } } + pos = req.indexOf("AX="); + if (pos > 0) { + auxTime = req.substring(pos + 3).toInt(); + auxActive = true; + if (auxTime == 0) auxActive = false; + } XML_response(); if (effectUpdated) { diff --git a/wled00/wled09_button.ino b/wled00/wled09_button.ino index aa43c0cd8..b5ddf6940 100644 --- a/wled00/wled09_button.ino +++ b/wled00/wled09_button.ino @@ -28,4 +28,31 @@ void handleButton() } } } + + //output + if (auxActive || auxActiveBefore) + { + if (!auxActiveBefore) + { + auxActiveBefore = true; + switch (auxTriggeredState) + { + case 0: pinMode(auxPin, INPUT); break; + case 1: pinMode(auxPin, OUTPUT); digitalWrite(auxPin, HIGH); break; + case 2: pinMode(auxPin, OUTPUT); digitalWrite(auxPin, LOW); break; + } + auxStartTime = millis(); + } + if ((millis() - auxStartTime > auxTime*1000 && auxTime != 255) || !auxActive) + { + auxActive = false; + auxActiveBefore = false; + switch (auxDefaultState) + { + case 0: pinMode(auxPin, INPUT); break; + case 1: pinMode(auxPin, OUTPUT); digitalWrite(auxPin, HIGH); break; + case 2: pinMode(auxPin, OUTPUT); digitalWrite(auxPin, LOW); break; + } + } + } }