Adds a rudimentary screen saver that briefly (500ms) inverts the screen every 10 minutes on OLED displays to prevent burn-in.

This commit is contained in:
jeremy 2024-08-29 18:41:52 -04:00
parent 55d0a41aa8
commit c80a4caab0

View File

@ -129,6 +129,8 @@ uint8_t disp_ext_fb = false;
unsigned char fb[512]; unsigned char fb[512];
uint32_t last_disp_update = 0; uint32_t last_disp_update = 0;
int disp_update_interval = 1000/disp_target_fps; int disp_update_interval = 1000/disp_target_fps;
uint32_t last_screensaver = 0;
uint32_t screensaver_interval = 600000;
uint32_t last_page_flip = 0; uint32_t last_page_flip = 0;
uint32_t last_interface_page_flip = 0; uint32_t last_interface_page_flip = 0;
int page_interval = 4000; int page_interval = 4000;
@ -1111,6 +1113,12 @@ void update_display(bool blank = false) {
update_stat_area(); update_stat_area();
update_disp_area(); update_disp_area();
display.display(); display.display();
if (millis()-last_screensaver >= screensaver_interval) {
display.invertDisplay(1);
delay(500);
display.invertDisplay(0);
last_screensaver = millis();
}
#elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C) #elif DISP_H == 122 && (DISPLAY == EINK_BW || DISPLAY == EINK_3C)
display.setFullWindow(); display.setFullWindow();
display.fillScreen(GxEPD_WHITE); display.fillScreen(GxEPD_WHITE);