Use light sleep to save battery in tracker

This commit is contained in:
Correl Roush 2023-01-31 13:00:33 -05:00
parent 971e8cf30e
commit b4273f4bdf

View file

@ -350,6 +350,7 @@ public:
} }
M5.Display.endWrite(); M5.Display.endWrite();
sleep();
} }
App::Choices loop () { App::Choices loop () {
@ -387,9 +388,25 @@ public:
next_clock_update = next_minute(current_time); next_clock_update = next_minute(current_time);
drawClock(current_time); drawClock(current_time);
drawBattery(); drawBattery();
} else {
sleep();
} }
return App::LifeTracker; return App::LifeTracker;
} }
void sleep() {
const time_t current_time = time(nullptr);
if (current_time >= next_clock_update) return;
int seconds = next_clock_update - current_time;
esp_sleep_enable_ext0_wakeup(GPIO_NUM_36, LOW); // Wake on touch
esp_sleep_enable_ext0_wakeup(GPIO_NUM_37, LOW); // Wake on button up
esp_sleep_enable_ext0_wakeup(GPIO_NUM_38, LOW); // Wake on button middle
esp_sleep_enable_ext0_wakeup(GPIO_NUM_39, LOW); // Wake on button down
esp_sleep_enable_timer_wakeup(seconds * 1000); // Wake up at the next clock update (in microseconds)
esp_light_sleep_start();
}
void shutdown() { void shutdown() {
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
delete players[i]; delete players[i];