diff --git a/wled00/button.cpp b/wled00/button.cpp index d544dd73ab..fb0c89dca1 100644 --- a/wled00/button.cpp +++ b/wled00/button.cpp @@ -379,7 +379,7 @@ void handleOnOff(bool forceOff) if (rlyPin>=0) { // note: pinMode is set in first call to handleOnOff(true) in beginStrip() digitalWrite(rlyPin, rlyMde); // set to on state - delay(RELAY_DELAY); // let power stabilize before sending LED data (#346 #812 #3581 #3955) + delay(relayDelay); // let power stabilize before sending LED data (#346 #812 #3581 #3955) } offMode = false; } diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 2e458e7da9..ff14d581dd 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -461,6 +461,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { JsonObject relay = hw[F("relay")]; rlyOpenDrain = relay[F("odrain")] | rlyOpenDrain; + CJSON(relayDelay, relay[F("del")]); int hw_relay_pin = relay["pin"] | -2; if (hw_relay_pin > -2) { PinManager::deallocatePin(rlyPin, PinOwner::Relay); @@ -1049,6 +1050,7 @@ void serializeConfig(JsonObject root) { hw_relay["pin"] = rlyPin; hw_relay["rev"] = !rlyMde; hw_relay[F("odrain")] = rlyOpenDrain; + hw_relay[F("del")] = relayDelay; hw[F("baud")] = serialBaud; diff --git a/wled00/const.h b/wled00/const.h index 04ff8ded61..65d346fd76 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -129,7 +129,9 @@ static_assert(WLED_MAX_BUSSES <= 32, "WLED_MAX_BUSSES exceeds hard limit"); #endif #endif -#define RELAY_DELAY 50 // delay in ms between switching on relay and sending data to LEDs +#ifndef RELAY_DELAY +#define RELAY_DELAY 50 // default delay in ms between switching on relay and sending data to LEDs +#endif #if defined(ESP8266) || defined(CONFIG_IDF_TARGET_ESP32S2) #define WLED_MAX_COLOR_ORDER_MAPPINGS 5 diff --git a/wled00/data/settings_leds.htm b/wled00/data/settings_leds.htm index 03fae259c4..446282777e 100644 --- a/wled00/data/settings_leds.htm +++ b/wled00/data/settings_leds.htm @@ -811,6 +811,7 @@ d.getElementsByName("RL")[0].value = rl.pin; d.getElementsByName("RM")[0].checked = rl.rev; d.getElementsByName("RO")[0].checked = rl.odrain; + d.getElementsByName("RLD")[0].value = rl.del; } let li = c.light; if (li) { @@ -1115,7 +1116,8 @@