mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 04:36:31 +00:00
parent
f6302dbeca
commit
8cf2d15ed1
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
- Fix slider for devices with one or two channels like only white or white/yellow
|
- Fix slider for devices with one or two channels like only white or white/yellow
|
||||||
- Fix TasmotaSlave buffer overrun on Tele
|
- Fix TasmotaSlave buffer overrun on Tele
|
||||||
|
- Fix light scheme 4 speed (#7072)
|
||||||
- Add support for TasmotaSlave executing commands on Tasmota
|
- Add support for TasmotaSlave executing commands on Tasmota
|
||||||
|
|
||||||
## Released
|
## Released
|
||||||
|
@ -242,6 +242,7 @@ struct LIGHT {
|
|||||||
uint8_t color_remap[LST_MAX];
|
uint8_t color_remap[LST_MAX];
|
||||||
|
|
||||||
uint8_t wheel = 0;
|
uint8_t wheel = 0;
|
||||||
|
uint8_t random = 0;
|
||||||
uint8_t subtype = 0; // LST_ subtype
|
uint8_t subtype = 0; // LST_ subtype
|
||||||
uint8_t device = 0;
|
uint8_t device = 0;
|
||||||
uint8_t old_power = 1;
|
uint8_t old_power = 1;
|
||||||
@ -1541,28 +1542,19 @@ void LightCycleColor(int8_t direction)
|
|||||||
if (Light.strip_timer_counter % (Settings.light_speed * 2)) {
|
if (Light.strip_timer_counter % (Settings.light_speed * 2)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Light.wheel += direction;
|
|
||||||
|
if (0 == direction) {
|
||||||
|
if (Light.random == Light.wheel) {
|
||||||
|
Light.random = random(255);
|
||||||
|
}
|
||||||
|
Light.wheel += (Light.random < Light.wheel) ? -1 : 1;
|
||||||
|
} else {
|
||||||
|
Light.wheel += direction;
|
||||||
|
}
|
||||||
LightWheel(Light.wheel);
|
LightWheel(Light.wheel);
|
||||||
memcpy(Light.new_color, Light.entry_color, sizeof(Light.new_color));
|
memcpy(Light.new_color, Light.entry_color, sizeof(Light.new_color));
|
||||||
}
|
}
|
||||||
|
|
||||||
void LightRandomColor(void)
|
|
||||||
{
|
|
||||||
bool update = false;
|
|
||||||
for (uint32_t i = 0; i < LST_RGB; i++) {
|
|
||||||
if (Light.new_color[i] != Light.current_color[i]) {
|
|
||||||
update = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!update) {
|
|
||||||
Light.wheel = random(255);
|
|
||||||
LightWheel(Light.wheel);
|
|
||||||
memcpy(Light.current_color, Light.entry_color, sizeof(Light.current_color));
|
|
||||||
}
|
|
||||||
|
|
||||||
memcpy(Light.new_color, Light.current_color, sizeof(Light.new_color));
|
|
||||||
}
|
|
||||||
|
|
||||||
void LightSetPower(void)
|
void LightSetPower(void)
|
||||||
{
|
{
|
||||||
// Light.power = XdrvMailbox.index;
|
// Light.power = XdrvMailbox.index;
|
||||||
@ -1652,7 +1644,7 @@ void LightAnimate(void)
|
|||||||
LightCycleColor(-1);
|
LightCycleColor(-1);
|
||||||
break;
|
break;
|
||||||
case LS_RANDOM:
|
case LS_RANDOM:
|
||||||
LightRandomColor();
|
LightCycleColor(0);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
XlgtCall(FUNC_SET_SCHEME);
|
XlgtCall(FUNC_SET_SCHEME);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user