@@ -148,7 +148,7 @@ void wakeOledDim(void){
148148
149149void handleOledDim (void ){
150150#ifndef ST7565
151- uint16_t brightness = getDisplayContrastOrBrightness ();
151+ int16_t brightness = getDisplayContrastOrBrightness ();
152152 if (!getDisplayPower () && getCurrentMode ()> mode_sleep ){ // If screen turned off and not in sleep mode, wake it.
153153 wakeOledDim (); // (Something woke the station from sleep)
154154 }
@@ -158,20 +158,21 @@ void handleOledDim(void){
158158 return ;
159159 }
160160 // If idle timer expired, start decreasing brightness
161- if (brightness > 5 && (( current_time - dim .timer )> getSystemSettings ()-> dim_Timeout ) ){
161+ if (( current_time - dim .timer )> getSystemSettings ()-> dim_Timeout ){
162162 dim .step = -5 ;
163163 }
164164 // If min. brightness reached and Oled power is disabled in sleep mode, turn off screen if temp<100ºC or error active
165- else if (dim .min_reached && getCurrentMode ()== mode_sleep && getSystemSettings ()-> dim_inSleep == disable && (last_TIP_C < 100 || (getIronErrorFlags ().active ))){
165+ else if (dim .min_reached && ( current_time - dim . timer > getSystemSettings () -> dim_Timeout / 2 ) && getCurrentMode ()== mode_sleep && getSystemSettings ()-> dim_inSleep == disable && (last_TIP_C < 100 || (getIronErrorFlags ().active ))){
166166 setDisplayPower (disable );
167167 dim .min_reached = 0 ;
168168 }
169169 }
170170 // Smooth screen brightness dimming
171- else if ((current_time - dim .stepTimer )> 19 ){
171+ else if ( dim . step != 0 && (current_time - dim .stepTimer )> 19 ){
172172 dim .stepTimer = current_time ;
173- brightness += dim .step ;
174- if (brightness > 4 && brightness < getSystemSettings ()-> contrastOrBrightness ){
173+ if ( (dim .step < 0 && brightness > - dim .step ) ||
174+ (dim .step > 0 && brightness + dim .step < getSystemSettings ()-> contrastOrBrightness )){
175+ brightness += dim .step ;
175176 setDisplayContrastOrBrightness (brightness );
176177 }
177178 else {
0 commit comments