From 7fe0123c637650eb3bc4deeff738ea4bd81c033c Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Wed, 23 Aug 2023 18:13:15 +0200 Subject: [PATCH 01/15] modified: wled00/FX.cpp modified: wled00/FX.h --- wled00/FX.cpp | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++ wled00/FX.h | 4 ++- 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index dc92c216..47545c5a 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1915,6 +1915,96 @@ uint16_t mode_pride_2015(void) { } static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; +////////////////////// +// JBL // +////////////////////// + + +uint16_t pos = 0; +uint8_t hue = 0; +int hueDelay = 0; + +uint8_t red(uint32_t c) +{ + return (c >> 16); +} +uint8_t green(uint32_t c) +{ + return (c >> 8); +} +uint8_t blue(uint32_t c) +{ + return (c); +} + +uint16_t mode_jbl() +{ + + um_data_t *um_data; + if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { + // add support for no audio + um_data = simulateSound(SEGMENT.soundSim); + } + uint8_t samplePeak = *(uint8_t*)um_data->u_data[3]; + uint8_t *maxVol = (uint8_t*)um_data->u_data[6]; + uint8_t *binNum = (uint8_t*)um_data->u_data[7]; + float volumeSmth = *(float*) um_data->u_data[0]; + + + + + hueDelay++; + + if (hue > 254) + { + hue = 0; + } + + if (hueDelay > SEGMENT.custom1) + { + hueDelay = 0; + hue++; + } + + float speed = 0; + + uint16_t counter = 0; + + if (volumeSmth * SEGMENT.intensity > (255 - SEGMENT.speed)) + { + speed = 1000; + } + else + { + speed = 20; + }; + + pos += speed; + + counter = pos; + counter = counter >> 8; + + for (uint16_t i = 0; i < SEGLEN; i++) + { + uint8_t colorIndex = (i * 255 / SEGLEN) - counter; + + uint32_t paletteColor = SEGMENT.color_from_palette(colorIndex, false, true, 255); + + uint8_t r = red(paletteColor); + uint8_t g = green(paletteColor); + uint8_t b = blue(paletteColor); + + uint8_t activeColor = max(r, max(g, b)); + + CRGB rgb(CHSV(hue, 255, activeColor)); + + SEGMENT.setPixelColor(i, rgb.r, rgb.g, rgb.b); + }; + + return FRAMETIME; +} // mode_jbl() + +static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Sensitivity 1,Sensivity 2,Color change speed;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { @@ -8060,6 +8150,7 @@ void WS2812FX::setupEffectData() { // --- 1D audio effects --- addEffect(FX_MODE_PIXELS, &mode_pixels, _data_FX_MODE_PIXELS); addEffect(FX_MODE_PIXELWAVE, &mode_pixelwave, _data_FX_MODE_PIXELWAVE); + addEffect(FX_MODE_JBL, &mode_jbl, _data_FX_MODE_JBL); addEffect(FX_MODE_JUGGLES, &mode_juggles, _data_FX_MODE_JUGGLES); addEffect(FX_MODE_MATRIPIX, &mode_matripix, _data_FX_MODE_MATRIPIX); addEffect(FX_MODE_GRAVIMETER, &mode_gravimeter, _data_FX_MODE_GRAVIMETER); diff --git a/wled00/FX.h b/wled00/FX.h index 1175157e..c68c2694 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -335,7 +335,9 @@ void strip_wait_until_idle(String whoCalledMe); // WLEDMM implemented in FX_fcn. #define FX_MODE_2DAKEMI 186 #define FX_MODE_ARTIFX 187 //WLEDMM ARTIFX -#define MODE_COUNT 188 +#define FX_MODE_JBL 188 + +#define MODE_COUNT 189 typedef enum mapping1D2D { M12_Pixels = 0, From 05f5237971581d3ea9e9900e4061c8984d88488b Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Wed, 23 Aug 2023 21:37:35 +0200 Subject: [PATCH 02/15] modified: wled00/FX.cpp --- wled00/FX.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 47545c5a..7bbd3e06 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1960,7 +1960,7 @@ uint16_t mode_jbl() hue = 0; } - if (hueDelay > SEGMENT.custom1) + if (hueDelay > SEGMENT.speed) { hueDelay = 0; hue++; @@ -1970,7 +1970,7 @@ uint16_t mode_jbl() uint16_t counter = 0; - if (volumeSmth * SEGMENT.intensity > (255 - SEGMENT.speed)) + if (volumeSmth * 2 > (255 - SEGMENT.intensity)) { speed = 1000; } @@ -2004,7 +2004,7 @@ uint16_t mode_jbl() return FRAMETIME; } // mode_jbl() -static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Sensitivity 1,Sensivity 2,Color change speed;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; +static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Sensitivity 1,Sensivity 2;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { From d64b6b3511de98daaf472de9409d81e4306f4f2c Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Wed, 23 Aug 2023 21:46:35 +0200 Subject: [PATCH 03/15] fixed slider names --- wled00/FX.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 7bbd3e06..c7216be3 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2004,7 +2004,7 @@ uint16_t mode_jbl() return FRAMETIME; } // mode_jbl() -static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Sensitivity 1,Sensivity 2;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; +static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Color change speed,Sensivity;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { From 1d61351903b8344f895254cdaada36c37e2690b7 Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Thu, 24 Aug 2023 20:19:41 +0200 Subject: [PATCH 04/15] Code improvement changes --- wled00/FX.cpp | 70 +++++++++++++++++++-------------------------------- 1 file changed, 26 insertions(+), 44 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c7216be3..5811e687 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1920,25 +1920,16 @@ static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; ////////////////////// -uint16_t pos = 0; -uint8_t hue = 0; -int hueDelay = 0; -uint8_t red(uint32_t c) -{ - return (c >> 16); -} -uint8_t green(uint32_t c) -{ - return (c >> 8); -} -uint8_t blue(uint32_t c) -{ - return (c); -} +uint16_t mode_jbl() { -uint16_t mode_jbl() -{ + static uint16_t mode_jbl_pos = 0; + + /* + * use of persistent variables: + * aux0: hueDelay + * aux1: hue + */ um_data_t *um_data; if (!usermods.getUMData(&um_data, USERMOD_ID_AUDIOREACTIVE)) { @@ -1950,53 +1941,44 @@ uint16_t mode_jbl() uint8_t *binNum = (uint8_t*)um_data->u_data[7]; float volumeSmth = *(float*) um_data->u_data[0]; + SEGENV.aux0++; - - - hueDelay++; - - if (hue > 254) - { - hue = 0; + if (SEGENV.aux1 > 254) { + SEGENV.aux1 = 0; } - if (hueDelay > SEGMENT.speed) - { - hueDelay = 0; - hue++; + if (SEGENV.aux0 > SEGMENT.speed) { + SEGENV.aux1 = 0; + SEGENV.aux0++; } - float speed = 0; + uint_fast32_t speed = 0; uint16_t counter = 0; - if (volumeSmth * 2 > (255 - SEGMENT.intensity)) - { + if (volumeSmth * 2 > (255 - SEGMENT.intensity)) { speed = 1000; - } - else - { + } else { speed = 20; }; - pos += speed; + mode_jbl_pos += speed; - counter = pos; - counter = counter >> 8; + counter = mode_jbl_pos >> 8; + + for (uint16_t i = 0; i < SEGLEN; i++) { - for (uint16_t i = 0; i < SEGLEN; i++) - { uint8_t colorIndex = (i * 255 / SEGLEN) - counter; uint32_t paletteColor = SEGMENT.color_from_palette(colorIndex, false, true, 255); - uint8_t r = red(paletteColor); - uint8_t g = green(paletteColor); - uint8_t b = blue(paletteColor); + uint8_t r = R(paletteColor); + uint8_t g = G(paletteColor); + uint8_t b = B(paletteColor); uint8_t activeColor = max(r, max(g, b)); - CRGB rgb(CHSV(hue, 255, activeColor)); + CRGB rgb(CHSV(SEGENV.aux1, 255, activeColor)); SEGMENT.setPixelColor(i, rgb.r, rgb.g, rgb.b); }; @@ -2031,7 +2013,7 @@ static const char _data_FX_MODE_JUGGLE[] PROGMEM = "Juggle@!,Trail;;!;;sx=64,ix= uint16_t mode_palette() { - uint16_t counter = 0; + uint16_t counter = 0; if (SEGMENT.speed != 0) { counter = (strip.now * ((SEGMENT.speed >> 3) +1)) & 0xFFFF; From 7f0191bd118b7a1fae6b130e87475095f4cd7e30 Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Thu, 24 Aug 2023 23:47:57 +0200 Subject: [PATCH 05/15] Minor code modifications/clean up --- wled00/FX.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 5811e687..1e74b4c7 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1923,12 +1923,18 @@ static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; uint16_t mode_jbl() { - static uint16_t mode_jbl_pos = 0; - + if (SEGENV.call == 0) { + SEGMENT.fill(BLACK); // clear LEDs + SEGENV.aux0 = 0; + SEGENV.aux1 = 0; + SEGENV.step = 0; + } + /* * use of persistent variables: * aux0: hueDelay * aux1: hue + * step: pos */ um_data_t *um_data; @@ -1962,9 +1968,9 @@ uint16_t mode_jbl() { speed = 20; }; - mode_jbl_pos += speed; + SEGENV.step += speed; - counter = mode_jbl_pos >> 8; + counter = SEGENV.step >> 8; for (uint16_t i = 0; i < SEGLEN; i++) { From 350e20544dfb6b40c750e898ed6174664727660b Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Fri, 25 Aug 2023 00:04:05 +0200 Subject: [PATCH 06/15] Fixing effect speed issues --- .vscode/extensions.json | 10 ---------- wled00/FX.cpp | 8 ++++---- 2 files changed, 4 insertions(+), 14 deletions(-) delete mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 080e70d0..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - // See http://go.microsoft.com/fwlink/?LinkId=827846 - // for the documentation about the extensions.json format - "recommendations": [ - "platformio.platformio-ide" - ], - "unwantedRecommendations": [ - "ms-vscode.cpptools-extension-pack" - ] -} diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 1e74b4c7..757e618b 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1953,7 +1953,7 @@ uint16_t mode_jbl() { SEGENV.aux1 = 0; } - if (SEGENV.aux0 > SEGMENT.speed) { + if (SEGENV.aux0 > SEGMENT.custom1) { SEGENV.aux1 = 0; SEGENV.aux0++; } @@ -1963,9 +1963,9 @@ uint16_t mode_jbl() { uint16_t counter = 0; if (volumeSmth * 2 > (255 - SEGMENT.intensity)) { - speed = 1000; + speed = SEGMENT.speed * 50; } else { - speed = 20; + speed = SEGMENT.speed; }; SEGENV.step += speed; @@ -1992,7 +1992,7 @@ uint16_t mode_jbl() { return FRAMETIME; } // mode_jbl() -static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Color change speed,Sensivity;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; +static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Effect speed,Sensivity,Color change speed;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { From 3499c38fed243409a1840adf156230a8b8f94e74 Mon Sep 17 00:00:00 2001 From: tonyxforce <77063724+tonyxforce@users.noreply.github.com> Date: Fri, 25 Aug 2023 01:03:14 +0200 Subject: [PATCH 07/15] Fix deleted file --- .vscode/extensions.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .vscode/extensions.json diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..080e70d0 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": [ + "platformio.platformio-ide" + ], + "unwantedRecommendations": [ + "ms-vscode.cpptools-extension-pack" + ] +} From 6a37f814653b820d0be254455273198cdf068db6 Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Fri, 25 Aug 2023 01:03:40 +0200 Subject: [PATCH 08/15] Renamed the effect, biased the sliders, so it looks best with all sliders in the middle, added option to change the effect speed multiplier --- wled00/FX.cpp | 18 +++++++++--------- wled00/FX.h | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 757e618b..737e97ee 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1916,12 +1916,12 @@ uint16_t mode_pride_2015(void) { static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; ////////////////////// -// JBL // +// PARTYBOX // ////////////////////// -uint16_t mode_jbl() { +uint16_t mode_partybox() { if (SEGENV.call == 0) { SEGMENT.fill(BLACK); // clear LEDs @@ -1953,9 +1953,9 @@ uint16_t mode_jbl() { SEGENV.aux1 = 0; } - if (SEGENV.aux0 > SEGMENT.custom1) { - SEGENV.aux1 = 0; - SEGENV.aux0++; + if (SEGENV.aux0 > map(255-SEGMENT.custom1, 0, 255, 0, 140)) { + SEGENV.aux0 = 0; + SEGENV.aux1++; } uint_fast32_t speed = 0; @@ -1963,7 +1963,7 @@ uint16_t mode_jbl() { uint16_t counter = 0; if (volumeSmth * 2 > (255 - SEGMENT.intensity)) { - speed = SEGMENT.speed * 50; + speed = SEGMENT.speed * map(SEGMENT.custom2, 0, 255, 0, 100); } else { speed = SEGMENT.speed; }; @@ -1990,9 +1990,9 @@ uint16_t mode_jbl() { }; return FRAMETIME; -} // mode_jbl() +} // mode_partybox() -static const char _data_FX_MODE_JBL[] PROGMEM = "JBL@Effect speed,Sensivity,Color change speed;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; +static const char _data_FX_MODE_PARTYBOX[] PROGMEM = "partybox@Effect speed,Sensivity,Color change speed,Effect speed active multiplier;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { @@ -8138,7 +8138,7 @@ void WS2812FX::setupEffectData() { // --- 1D audio effects --- addEffect(FX_MODE_PIXELS, &mode_pixels, _data_FX_MODE_PIXELS); addEffect(FX_MODE_PIXELWAVE, &mode_pixelwave, _data_FX_MODE_PIXELWAVE); - addEffect(FX_MODE_JBL, &mode_jbl, _data_FX_MODE_JBL); + addEffect(FX_MODE_PARTYBOX, &mode_partybox, _data_FX_MODE_PARTYBOX); addEffect(FX_MODE_JUGGLES, &mode_juggles, _data_FX_MODE_JUGGLES); addEffect(FX_MODE_MATRIPIX, &mode_matripix, _data_FX_MODE_MATRIPIX); addEffect(FX_MODE_GRAVIMETER, &mode_gravimeter, _data_FX_MODE_GRAVIMETER); diff --git a/wled00/FX.h b/wled00/FX.h index c68c2694..c9de50cd 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -335,7 +335,7 @@ void strip_wait_until_idle(String whoCalledMe); // WLEDMM implemented in FX_fcn. #define FX_MODE_2DAKEMI 186 #define FX_MODE_ARTIFX 187 //WLEDMM ARTIFX -#define FX_MODE_JBL 188 +#define FX_MODE_PARTYBOX 188 #define MODE_COUNT 189 From e5ca80c035aa58ab4d067bb0770dcfc5fc951221 Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Fri, 25 Aug 2023 01:18:05 +0200 Subject: [PATCH 09/15] Bias value changes --- wled00/FX.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 737e97ee..aef9f69b 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1953,7 +1953,7 @@ uint16_t mode_partybox() { SEGENV.aux1 = 0; } - if (SEGENV.aux0 > map(255-SEGMENT.custom1, 0, 255, 0, 140)) { + if (SEGENV.aux0 > map(SEGMENT.custom1, 0, 255, 0, 14)) { SEGENV.aux0 = 0; SEGENV.aux1++; } From c07a8ae263eb451ceaf36139bc60ad4e7384ba03 Mon Sep 17 00:00:00 2001 From: tonyxforce Date: Fri, 25 Aug 2023 20:26:16 +0200 Subject: [PATCH 10/15] Fixed possible naming legal issues --- wled00/FX.cpp | 10 +++++----- wled00/FX.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index aef9f69b..96a2726d 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1916,12 +1916,12 @@ uint16_t mode_pride_2015(void) { static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; ////////////////////// -// PARTYBOX // +// PARTYJERK // ////////////////////// -uint16_t mode_partybox() { +uint16_t mode_partyjerk() { if (SEGENV.call == 0) { SEGMENT.fill(BLACK); // clear LEDs @@ -1990,9 +1990,9 @@ uint16_t mode_partybox() { }; return FRAMETIME; -} // mode_partybox() +} // mode_partyjerk() -static const char _data_FX_MODE_PARTYBOX[] PROGMEM = "partybox@Effect speed,Sensivity,Color change speed,Effect speed active multiplier;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; +static const char _data_FX_MODE_PARTYJERK[] PROGMEM = "Party jerk@Effect speed,Sensivity,Color change speed,Effect speed active multiplier;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { @@ -8138,7 +8138,7 @@ void WS2812FX::setupEffectData() { // --- 1D audio effects --- addEffect(FX_MODE_PIXELS, &mode_pixels, _data_FX_MODE_PIXELS); addEffect(FX_MODE_PIXELWAVE, &mode_pixelwave, _data_FX_MODE_PIXELWAVE); - addEffect(FX_MODE_PARTYBOX, &mode_partybox, _data_FX_MODE_PARTYBOX); + addEffect(FX_MODE_PARTYJERK, &mode_partyjerk, _data_FX_MODE_PARTYJERK); addEffect(FX_MODE_JUGGLES, &mode_juggles, _data_FX_MODE_JUGGLES); addEffect(FX_MODE_MATRIPIX, &mode_matripix, _data_FX_MODE_MATRIPIX); addEffect(FX_MODE_GRAVIMETER, &mode_gravimeter, _data_FX_MODE_GRAVIMETER); diff --git a/wled00/FX.h b/wled00/FX.h index c9de50cd..ff9ee811 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -335,7 +335,7 @@ void strip_wait_until_idle(String whoCalledMe); // WLEDMM implemented in FX_fcn. #define FX_MODE_2DAKEMI 186 #define FX_MODE_ARTIFX 187 //WLEDMM ARTIFX -#define FX_MODE_PARTYBOX 188 +#define FX_MODE_PARTYJERK 188 #define MODE_COUNT 189 From 782628b6aae2cc4ec81bba3db0b7151e02dcc373 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Sun, 10 Dec 2023 14:40:36 +0100 Subject: [PATCH 11/15] UM battery: changed default for auto-off feature to "disabled" Especially on 8266, the usermod can cause unexpected shut-downs in default configuration, when A0 is not connected to a battery voltage measurement circuit. --- usermods/Battery/battery_defaults.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usermods/Battery/battery_defaults.h b/usermods/Battery/battery_defaults.h index c1e3c6bb..60dd4c4b 100644 --- a/usermods/Battery/battery_defaults.h +++ b/usermods/Battery/battery_defaults.h @@ -56,7 +56,7 @@ // auto-off feature #ifndef USERMOD_BATTERY_AUTO_OFF_ENABLED - #define USERMOD_BATTERY_AUTO_OFF_ENABLED true + #define USERMOD_BATTERY_AUTO_OFF_ENABLED false #endif #ifndef USERMOD_BATTERY_AUTO_OFF_THRESHOLD @@ -78,4 +78,4 @@ #ifndef USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION #define USERMOD_BATTERY_LOW_POWER_INDICATOR_DURATION 5 -#endif \ No newline at end of file +#endif From 90b52b3a0d3e39578cf5925b29b61c5fde8d2277 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Sun, 10 Dec 2023 14:54:35 +0100 Subject: [PATCH 12/15] Changed some usermods to be "disabled" by default Some usermods may cause unexpected behaviour if not configured properly. * Battery: can cause unexpected shutdowns if no voltage measurement circuit connected * RTC: can cause unexpected time &date changes if no RTC connected to I2C * mcu temp: can cause hight CPU load, and may cause instabilities due to use of an "unsupported" API from espressif --- wled00/usermods_list.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index 95ebfb5d..74afd5de 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -225,7 +225,7 @@ void registerUsermods() */ //usermods.add(new MyExampleUsermod()); #ifdef USERMOD_BATTERY - usermods.add(new UsermodBattery("Battery", true)); + usermods.add(new UsermodBattery("Battery", false)); // WLEDMM #endif #ifdef USERMOD_DALLASTEMPERATURE @@ -293,7 +293,7 @@ void registerUsermods() #endif #ifdef USERMOD_RTC - usermods.add(new RTCUsermod("RTC", true)); + usermods.add(new RTCUsermod("RTC", false)); //WLEDMM #endif #ifdef USERMOD_ELEKSTUBE_IPS @@ -385,7 +385,7 @@ void registerUsermods() #endif #ifdef USERMOD_MCUTEMP - usermods.add(new mcuTemp("MCUTemp", true)); + usermods.add(new mcuTemp("MCUTemp", false)); #endif //#ifdef USERMOD_INTERNAL_TEMPERATURE From e4cb0929c322a6ed7df8cde161264ecde4d63ddf Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 10 Dec 2023 16:49:13 +0100 Subject: [PATCH 13/15] PartyJerk: minor code style improvements * fix some too-long tabs *author info added * shrunk number of blank lines * removed unused audio variables * colorIndex : better accuracy by first doing multiply, then divide --- wled00/FX.cpp | 35 +++++++++++------------------------ wled00/FX.h | 3 +-- 2 files changed, 12 insertions(+), 26 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 84bd4a8c..a5926f4b 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1921,21 +1921,20 @@ uint16_t mode_pride_2015(void) { } static const char _data_FX_MODE_PRIDE_2015[] PROGMEM = "Pride 2015@!;;"; + ////////////////////// // PARTYJERK // ////////////////////// - - - +// by @tonyxforce +// NB: This effects expects a palette that starts with black and then ramps up brightness. +// Currently works best with the "color gradient" and the "colors 1&2" palettes uint16_t mode_partyjerk() { - if (SEGENV.call == 0) { SEGMENT.fill(BLACK); // clear LEDs SEGENV.aux0 = 0; SEGENV.aux1 = 0; SEGENV.step = 0; } - /* * use of persistent variables: * aux0: hueDelay @@ -1948,24 +1947,18 @@ uint16_t mode_partyjerk() { // add support for no audio um_data = simulateSound(SEGMENT.soundSim); } - uint8_t samplePeak = *(uint8_t*)um_data->u_data[3]; - uint8_t *maxVol = (uint8_t*)um_data->u_data[6]; - uint8_t *binNum = (uint8_t*)um_data->u_data[7]; - float volumeSmth = *(float*) um_data->u_data[0]; + float volumeSmth = *(float*) um_data->u_data[0]; SEGENV.aux0++; - if (SEGENV.aux1 > 254) { SEGENV.aux1 = 0; } - if (SEGENV.aux0 > map(SEGMENT.custom1, 0, 255, 0, 14)) { SEGENV.aux0 = 0; SEGENV.aux1++; } uint_fast32_t speed = 0; - uint16_t counter = 0; if (volumeSmth * 2 > (255 - SEGMENT.intensity)) { @@ -1975,30 +1968,24 @@ uint16_t mode_partyjerk() { }; SEGENV.step += speed; - counter = SEGENV.step >> 8; - for (uint16_t i = 0; i < SEGLEN; i++) { - - uint8_t colorIndex = (i * 255 / SEGLEN) - counter; - - uint32_t paletteColor = SEGMENT.color_from_palette(colorIndex, false, true, 255); - + for (unsigned i = 0; i < SEGLEN; i++) { + uint8_t colorIndex = ((i * 255) / SEGLEN) - counter; + uint32_t paletteColor = SEGMENT.color_from_palette(colorIndex, false, PALETTE_MOVING_WRAP, 255); uint8_t r = R(paletteColor); uint8_t g = G(paletteColor); uint8_t b = B(paletteColor); - uint8_t activeColor = max(r, max(g, b)); CRGB rgb(CHSV(SEGENV.aux1, 255, activeColor)); - - SEGMENT.setPixelColor(i, rgb.r, rgb.g, rgb.b); + SEGMENT.setPixelColor((uint16_t)i, rgb.r, rgb.g, rgb.b); }; return FRAMETIME; } // mode_partyjerk() +static const char _data_FX_MODE_PARTYJERK[] PROGMEM = "Party jerk@Effect speed,Sensitivity,Color change speed,Effect speed active multiplier;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; -static const char _data_FX_MODE_PARTYJERK[] PROGMEM = "Party jerk@Effect speed,Sensivity,Color change speed,Effect speed active multiplier;!,!;!;1v;c1=8,c2=48,m12=0,si=0"; //eight colored dots, weaving in and out of sync with each other uint16_t mode_juggle(void) { @@ -2025,7 +2012,7 @@ static const char _data_FX_MODE_JUGGLE[] PROGMEM = "Juggle@!,Trail;;!;;sx=64,ix= uint16_t mode_palette() { - uint16_t counter = 0; + uint16_t counter = 0; if (SEGMENT.speed != 0) { counter = (strip.now * ((SEGMENT.speed >> 3) +1)) & 0xFFFF; diff --git a/wled00/FX.h b/wled00/FX.h index 353b40b8..ac72422e 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -334,8 +334,7 @@ void strip_wait_until_idle(String whoCalledMe); // WLEDMM implemented in FX_fcn. #define FX_MODE_ROCKTAVES 185 #define FX_MODE_2DAKEMI 186 #define FX_MODE_ARTIFX 187 //WLEDMM ARTIFX - -#define FX_MODE_PARTYJERK 188 +#define FX_MODE_PARTYJERK 188 #define MODE_COUNT 189 From d2c9c9ee71ae52de9b6b4de0e3fd3e02f3f47603 Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 10 Dec 2023 16:50:49 +0100 Subject: [PATCH 14/15] fix small typo --- wled00/FX.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/FX.h b/wled00/FX.h index ac72422e..3e4df0e7 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -398,7 +398,7 @@ typedef struct Segment { uint16_t aux0; // custom var uint16_t aux1; // custom var byte* data = nullptr; // effect data pointer // WLEDMM initialize to nullptr - CRGB* ledsrgb = nullptr; // local leds[] array (may be a pointer to global) //WLEDMM rename to ledsrgb to search on them (temp?), and initialilize to nullptr + CRGB* ledsrgb = nullptr; // local leds[] array (may be a pointer to global) //WLEDMM rename to ledsrgb to search on them (temp?), and initialize to nullptr size_t ledsrgbSize; //WLEDMM static CRGB *_globalLeds; // global leds[] array static uint16_t maxWidth, maxHeight; // these define matrix width & height (max. segment dimensions) From d63b716cd0f57b67514e39d9630b4e31f17780ad Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 11 Dec 2023 11:22:39 +0100 Subject: [PATCH 15/15] Slightly reduce json buffer size on boards with PSRAM Found out that the main JSON 'doc' is still living in normal RAM, even when PSRAM is available... This results is very low RAM especially on -S2. This change tries to find a balance between "need large json buffer" and "other features become unstable when free RAM is low". --- wled00/const.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/const.h b/wled00/const.h index 2f210508..b06c4aa8 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -423,12 +423,12 @@ #if defined(BOARD_HAS_PSRAM) && (defined(WLED_USE_PSRAM) || defined(WLED_USE_PSRAM_JSON)) #if defined(ARDUINO_ARCH_ESP32S2) || defined(ARDUINO_ARCH_ESP32C3) #if defined(ARDUINO_ARCH_ESP32C3) - #define JSON_BUFFER_SIZE 46000 // WLEDMM - max 46KB on -C3 with PSRAM (chip has 400kb RAM) + #define JSON_BUFFER_SIZE 44000 // WLEDMM - max 44KB on -C3 with PSRAM (chip has 400kb RAM) #else - #define JSON_BUFFER_SIZE 36000 // WLEDMM - max 36KB on -S2 with PSRAM (chip has 320kb RAM) + #define JSON_BUFFER_SIZE 32000 // WLEDMM - max 32KB on -S2 with PSRAM (chip has 320kb RAM) #endif #else - #define JSON_BUFFER_SIZE 56000 // WLEDMM (was 60000) slightly reduced to avoid build error "region dram0_0_seg overflowed" + #define JSON_BUFFER_SIZE 54000 // WLEDMM (was 60000) slightly reduced to avoid build error "region dram0_0_seg overflowed" #endif #else #define JSON_BUFFER_SIZE 24576