From a83614289e36fae20b56b73a9f6958bfc0964861 Mon Sep 17 00:00:00 2001 From: HrSh3rl0ck Date: Fri, 8 Sep 2023 22:26:33 +0200 Subject: [PATCH] Quality of Life Update QOL Update - i dont need the display to be always on... Push the middle Button (IO38) and the OLED Display will be deactivated or activated. --- src/LoRa_APRS_Tracker.cpp | 24 +++++++++++++++++++++++- src/display.cpp | 9 +++++++++ src/display.h | 2 ++ src/power_management.cpp | 6 ++++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp index da9d58b..be8a782 100644 --- a/src/LoRa_APRS_Tracker.cpp +++ b/src/LoRa_APRS_Tracker.cpp @@ -29,6 +29,8 @@ TinyGPSPlus gps; void setup_gps(); void load_config(); void setup_lora(); +bool OLED_deactivated = false; +int OLED_deactivatedTime = 0; String create_lat_aprs(RawDegrees lat); String create_long_aprs(RawDegrees lng); @@ -85,7 +87,7 @@ void setup() { show_display("OE5BPA", "LoRa APRS Tracker", "by Peter Buchegger", "Updated by HrSh3rl0ck", "Version: " VERSION, 2000); load_config(); - + setup_gps(); setup_lora(); @@ -132,6 +134,26 @@ void loop() { } } + pinMode(GPIO_NUM_38, INPUT_PULLUP); + int btn_pressenIO38 = analogRead(GPIO_NUM_38); + if(btn_pressenIO38 != 4095){ + if(OLED_deactivatedTime >= 180){ + if(OLED_deactivated) { + OLED_deactivated = false; + awake_display(); + OLED_deactivatedTime = 0; + } else { + OLED_deactivated = true; + sleep_display(); + OLED_deactivatedTime = 0; + }; + } else { + OLED_deactivatedTime += 1; + }; + } else { + OLED_deactivatedTime = 0; + }; + bool gps_time_update = gps.time.isUpdated(); bool gps_loc_update = gps.location.isUpdated(); static bool gps_loc_update_valid = false; diff --git a/src/display.cpp b/src/display.cpp index 5c3effa..6f2beb7 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -11,6 +11,15 @@ extern logging::Logger logger; Adafruit_SSD1306 display(128, 64, &Wire, OLED_RST); +void sleep_display() +{ + display.ssd1306_command(SSD1306_DISPLAYOFF); +}; +void awake_display() +{ + display.ssd1306_command(SSD1306_DISPLAYON); +}; + // cppcheck-suppress unusedFunction void setup_display() { pinMode(OLED_RST, OUTPUT); diff --git a/src/display.h b/src/display.h index d7681ca..fe36881 100644 --- a/src/display.h +++ b/src/display.h @@ -3,6 +3,8 @@ #define DISPLAY_H_ void setup_display(); +void sleep_display(); +void awake_display(); void display_toggle(bool toggle); void show_display(String header, int wait = 0); diff --git a/src/power_management.cpp b/src/power_management.cpp index 03ff3f3..523bee4 100644 --- a/src/power_management.cpp +++ b/src/power_management.cpp @@ -82,6 +82,9 @@ void PowerManagement::activateOLED() { #if defined(TTGO_T_Beam_V0_7) || defined(TTGO_T_Beam_V1_0) axp.setPowerOutPut(AXP192_DCDC1, AXP202_ON); #endif + #ifdef TTGO_T_Beam_V1_2 + PMU.enableDC1(); + #endif } // cppcheck-suppress unusedFunction @@ -89,6 +92,9 @@ void PowerManagement::decativateOLED() { #if defined(TTGO_T_Beam_V0_7) || defined(TTGO_T_Beam_V1_0) axp.setPowerOutPut(AXP192_DCDC1, AXP202_OFF); #endif + #ifdef TTGO_T_Beam_V1_2 + PMU.disableDC1(); + #endif } // cppcheck-suppress unusedFunction