diff --git a/Display.h b/Display.h index fbd5bab..ccb20f7 100644 --- a/Display.h +++ b/Display.h @@ -201,7 +201,7 @@ uint8_t display_contrast = 0x00; void set_contrast(ST7789Spi *display, uint8_t value) { } #elif BOARD_MODEL == BOARD_TECHO void set_contrast(void *display, uint8_t value) { - if (value == 0) { digitalWrite(pin_backlight, LOW); } + if (value == 0) { analogWrite(pin_backlight, 0); } else { analogWrite(pin_backlight, value); } } #elif BOARD_MODEL == BOARD_TDECK @@ -274,7 +274,7 @@ bool display_init() { display.epd2.setBusyCallback(busyCallback); #if HAS_BACKLIGHT pinMode(pin_backlight, OUTPUT); - digitalWrite(pin_backlight, LOW); + analogWrite(pin_backlight, 0); #endif #elif BOARD_MODEL == BOARD_TBEAM_S_V1 Wire.begin(SDA_OLED, SCL_OLED); @@ -414,7 +414,7 @@ bool display_init() { #if BOARD_MODEL == BOARD_TECHO #if HAS_BACKLIGHT - if (display_intensity == 0) { digitalWrite(pin_backlight, LOW); } + if (display_intensity == 0) { analogWrite(pin_backlight, 0); } else { analogWrite(pin_backlight, display_intensity); } #endif #endif @@ -906,10 +906,16 @@ void display_recondition() { bool epd_blanked = false; #if BOARD_MODEL == BOARD_TECHO - void epd_blank() { + void epd_blank(bool full_update = true) { display.setFullWindow(); display.fillScreen(SSD1306_WHITE); - display.display(true); + display.display(full_update); + } + + void epd_black(bool full_update = true) { + display.setFullWindow(); + display.fillScreen(SSD1306_BLACK); + display.display(full_update); } #endif diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino index 3132d4f..8d39fd1 100644 --- a/RNode_Firmware.ino +++ b/RNode_Firmware.ino @@ -1631,8 +1631,10 @@ void sleep_now() { digitalWrite(PIN_T114_TFT_BLGT, HIGH); digitalWrite(PIN_T114_TFT_EN, HIGH); #elif BOARD_MODEL == BOARD_TECHO - digitalWrite(pin_backlight, LOW); - epd_blank(); + for (uint8_t i = display_intensity; i > 0; i--) { analogWrite(pin_backlight, i-1); delay(1); } + epd_black(true); delay(300); epd_black(true); + analogWrite(PIN_VEXT_EN, 0); + delay(100); #endif sd_power_gpregret_set(0, 0x6d); nrf_gpio_cfg_sense_input(pin_btn_usr1, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_LOW);