diff --git a/wled00/WS2812FX.cpp b/wled00/WS2812FX.cpp index 4d430d0c..9d8bc5e7 100644 --- a/wled00/WS2812FX.cpp +++ b/wled00/WS2812FX.cpp @@ -402,8 +402,8 @@ void WS2812FX::mode_breath(void) { void WS2812FX::mode_fade(void) { int y = _counter_mode_step - 127; - y = 255 - (abs(y) * 2); - double z = (double)y/255; + y = 256 - (abs(y) * 2); + double z = (double)y/256; uint8_t w = ((_color >> 24) & 0xFF), ws = ((_color_sec >> 24) & 0xFF); uint8_t r = ((_color >> 16) & 0xFF), rs = ((_color_sec >> 16) & 0xFF); uint8_t g = ((_color >> 8) & 0xFF), gs = ((_color_sec >> 8) & 0xFF); @@ -794,14 +794,13 @@ void WS2812FX::mode_blink_rainbow(void) { if (!_locked[i]) setPixelColor(i, color_wheel(_counter_mode_call % 256)); } - show(); } else { for(uint16_t i=0; i < _led_count; i++) { if (!_locked[i]) setPixelColor(i, _color_sec); } } - + show(); _mode_delay = 100 + ((1986 * (uint32_t)(SPEED_MAX - _speed)) / SPEED_MAX); } @@ -1545,7 +1544,7 @@ void WS2812FX::mode_circus_combustus(void) { for(uint16_t i=0; i < _led_count; i++) { if((i + _counter_mode_step) % 6 < 2) { if (!_locked[i]) - setPixelColor(i, 255, 0, 0); + setPixelColor(i, _color); } else if((i + _color) % 6 < 4){ if (!_locked[i]) setPixelColor(i, _color_sec); diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 3106ae9a..64850411 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -20,7 +20,7 @@ #include "CallbackFunction.h" //version in format yymmddb (b = daily build) -#define VERSION 1711281 +#define VERSION 1711282 //If you have an RGBW strip, uncomment first line in WS2812FX.h! diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index 515bcd1f..8246aab8 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -26,7 +26,7 @@ void notify(uint8_t callMode) udpOut[8] = effectCurrent; udpOut[9] = effectSpeed; udpOut[10] = white; - udpOut[11] = 1; //boolean byte, lowest bit to confirm white value compatibility + udpOut[11] = 2; //compatibilityVersionByte: 0: old 1: supports white 2: supports secondary color udpOut[12] = col_sec[0]; udpOut[13] = col_sec[1]; udpOut[14] = col_sec[2]; @@ -52,13 +52,16 @@ void handleNotifications() col[0] = udpIn[3]; col[1] = udpIn[4]; col[2] = udpIn[5]; - col_sec[0] = udpIn[12]; - col_sec[1] = udpIn[13]; - col_sec[2] = udpIn[14]; - if (udpIn[11] %2 == 1) //check if sending modules white val is inteded + if (udpIn[11] > 1) + { + col_sec[0] = udpIn[12]; + col_sec[1] = udpIn[13]; + col_sec[2] = udpIn[14]; + white_sec = udpIn[15]; + } + if (udpIn[11] > 0) //check if sending modules white val is inteded { white = udpIn[10]; - white_sec = udpIn[15]; } if (udpIn[8] != effectCurrent) {