mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Merge pull request #11076 from nohat/development
animate PWM dimmer brightness LEDs during transitions and with variable brightness
This commit is contained in:
commit
73e2e4ff9c
@ -505,9 +505,6 @@ class LightStateClass {
|
|||||||
uint8_t prev_bri = _briRGB;
|
uint8_t prev_bri = _briRGB;
|
||||||
_briRGB = bri_rgb;
|
_briRGB = bri_rgb;
|
||||||
if (bri_rgb > 0) { addRGBMode(); }
|
if (bri_rgb > 0) { addRGBMode(); }
|
||||||
#ifdef USE_PWM_DIMMER
|
|
||||||
if (PWM_DIMMER == TasmotaGlobal.module_type) PWMDimmerSetBrightnessLeds(-1);
|
|
||||||
#endif // USE_PWM_DIMMER
|
|
||||||
return prev_bri;
|
return prev_bri;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,9 +513,6 @@ class LightStateClass {
|
|||||||
uint8_t prev_bri = _briCT;
|
uint8_t prev_bri = _briCT;
|
||||||
_briCT = bri_ct;
|
_briCT = bri_ct;
|
||||||
if (bri_ct > 0) { addCTMode(); }
|
if (bri_ct > 0) { addCTMode(); }
|
||||||
#ifdef USE_PWM_DIMMER
|
|
||||||
if (PWM_DIMMER == TasmotaGlobal.module_type) PWMDimmerSetBrightnessLeds(-1);
|
|
||||||
#endif // USE_PWM_DIMMER
|
|
||||||
return prev_bri;
|
return prev_bri;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1958,6 +1952,10 @@ void LightSetOutputs(const uint16_t *cur_col_10) {
|
|||||||
if (!Settings.flag4.zerocross_dimmer) {
|
if (!Settings.flag4.zerocross_dimmer) {
|
||||||
analogWrite(Pin(GPIO_PWM1, i), bitRead(TasmotaGlobal.pwm_inverted, i) ? Settings.pwm_range - cur_col : cur_col);
|
analogWrite(Pin(GPIO_PWM1, i), bitRead(TasmotaGlobal.pwm_inverted, i) ? Settings.pwm_range - cur_col : cur_col);
|
||||||
}
|
}
|
||||||
|
#ifdef USE_PWM_DIMMER
|
||||||
|
// Animate brightness LEDs to follow PWM dimmer brightness
|
||||||
|
if (PWM_DIMMER == TasmotaGlobal.module_type) PWMDimmerSetBrightnessLeds(change10to8(cur_col));
|
||||||
|
#endif // USE_PWM_DIMMER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -167,6 +167,7 @@ void PWMDimmerSetBrightnessLeds(int32_t bri)
|
|||||||
uint32_t level = 0;
|
uint32_t level = 0;
|
||||||
led = -1;
|
led = -1;
|
||||||
mask = 0;
|
mask = 0;
|
||||||
|
uint16_t pwm_led_bri = 0;
|
||||||
for (uint32_t count = 0; count < leds; count++) {
|
for (uint32_t count = 0; count < leds; count++) {
|
||||||
level += step;
|
level += step;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
@ -175,7 +176,8 @@ void PWMDimmerSetBrightnessLeds(int32_t bri)
|
|||||||
if (!mask) mask = 1;
|
if (!mask) mask = 1;
|
||||||
if (Settings.ledmask & mask) break;
|
if (Settings.ledmask & mask) break;
|
||||||
}
|
}
|
||||||
SetLedPowerIdx(led, bri >= level);
|
pwm_led_bri = changeUIntScale((bri > level ? bri - level : 0), 0, step, 0, Settings.pwm_range);
|
||||||
|
analogWrite(Pin(GPIO_LED1, led), bitRead(TasmotaGlobal.led_inverted, led) ? Settings.pwm_range - pwm_led_bri : pwm_led_bri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -193,7 +195,6 @@ void PWMDimmerSetPoweredOffLed(void)
|
|||||||
void PWMDimmerSetPower(void)
|
void PWMDimmerSetPower(void)
|
||||||
{
|
{
|
||||||
DigitalWrite(GPIO_REL1, 0, bitRead(TasmotaGlobal.rel_inverted, 0) ? !TasmotaGlobal.power : TasmotaGlobal.power);
|
DigitalWrite(GPIO_REL1, 0, bitRead(TasmotaGlobal.rel_inverted, 0) ? !TasmotaGlobal.power : TasmotaGlobal.power);
|
||||||
PWMDimmerSetBrightnessLeds(-1);
|
|
||||||
PWMDimmerSetPoweredOffLed();
|
PWMDimmerSetPoweredOffLed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user