]> git.tnoah.ca Git - lora-radio.git/commitdiff
Improved T-Echo e-ink sleep
authorMark Qvist <mark@unsigned.io>
Thu, 16 Jan 2025 10:00:39 +0000 (11:00 +0100)
committerMark Qvist <mark@unsigned.io>
Thu, 16 Jan 2025 10:00:39 +0000 (11:00 +0100)
Display.h
RNode_Firmware.ino

index fbd5bab914eab0e9323933f71a82e7cb71f07385..ccb20f72ba4752541f42ab9762ab8df2902bc717 100644 (file)
--- 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
 
index 3132d4fd57f721751528cffb984dfe7ff17a0921..8d39fd1bde866e4f9bed291f9303a253641a0f69 100644 (file)
@@ -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);