diff --git a/include/display_ui.h b/include/display_ui.h index ff7641d..713e49f 100644 --- a/include/display_ui.h +++ b/include/display_ui.h @@ -12,6 +12,7 @@ void display_set_last_meter(const MeterData &data); void display_set_last_read(bool ok, uint32_t ts_utc); void display_set_last_tx(bool ok, uint32_t ts_utc); void display_set_receiver_status(bool ap_mode, const char *ssid, bool mqtt_ok); +void display_power_down(); void display_tick(); #ifdef ENABLE_TEST_MODE void display_set_test_code(const char *code); diff --git a/src/display_ui.cpp b/src/display_ui.cpp index bc98995..c012e8e 100644 --- a/src/display_ui.cpp +++ b/src/display_ui.cpp @@ -50,6 +50,17 @@ static void oled_set_power(bool on) { } } +void display_power_down() { + if (!g_display_ready) { + return; + } + display.clearDisplay(); + display.display(); + oled_set_power(false); + g_oled_on = false; + g_last_oled_on = false; +} + void display_init() { pinMode(PIN_OLED_CTRL, INPUT_PULLDOWN); Wire.begin(PIN_OLED_SDA, PIN_OLED_SCL); diff --git a/src/main.cpp b/src/main.cpp index 971ec81..dfa06b8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -121,6 +121,7 @@ static void sender_cycle() { } delay(50); + display_power_down(); lora_sleep(); go_to_deep_sleep(SENDER_WAKE_INTERVAL_SEC); }