diff --git a/project/example/ble/ble_peripheral/app/src/light_transition.c b/project/example/ble/ble_peripheral/app/src/light_transition.c index 1ac2bef..88d7e76 100644 --- a/project/example/ble/ble_peripheral/app/src/light_transition.c +++ b/project/example/ble/ble_peripheral/app/src/light_transition.c @@ -6,6 +6,7 @@ volatile uint8_t Light_Transition_FadeActive; #define LIGHT_FADE_STEP 1U #define BRIGHTNESS_SMOOTH_SHIFT 4U +#define BREATH_MIN_OUTPUT 1U /* * Gamma 1.8, mapping APP levels 1..100 to a stable physical range of @@ -94,8 +95,25 @@ void Light_Transition_Task(void) (uint16_t)(((uint32_t)W_PWM * brightness_scale + 2048U) >> 12); target_c = (uint16_t)(((uint32_t)C_PWM * brightness_scale + 2048U) >> 12); - W_PWM_duty = approach_target(W_PWM_duty, target_w); - C_PWM_duty = approach_target(C_PWM_duty, target_c); + + if(Mode == mode1 && target_brightness != 0U) + { + if(W_PWM != 0U && target_w < BREATH_MIN_OUTPUT) + target_w = BREATH_MIN_OUTPUT; + if(C_PWM != 0U && target_c < BREATH_MIN_OUTPUT) + target_c = BREATH_MIN_OUTPUT; + } + + if(Mode == mode2 && deviceStatus != POWEROFF) + { + W_PWM_duty = target_w; + C_PWM_duty = target_c; + } + else + { + W_PWM_duty = approach_target(W_PWM_duty, target_w); + C_PWM_duty = approach_target(C_PWM_duty, target_c); + } Light_Transition_FadeActive = deviceStatus == POWEROFF && (W_PWM_duty != 0U || C_PWM_duty != 0U);