diff --git a/src/main.cpp b/src/main.cpp index 80dd36ac..fa782556 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -410,6 +410,13 @@ void loop() { if (currentActivity && currentActivity->skipLoopDelay()) { yield(); // Give FreeRTOS a chance to run tasks, but return immediately } else { - delay(10); // Normal delay when no activity requires fast response + static constexpr unsigned long IDLE_POWER_SAVING_MS = 3000; // 3 seconds + if (millis() - lastActivityTime >= IDLE_POWER_SAVING_MS) { + // If we've been inactive for a while, increase the delay to save power + delay(50); + } else { + // Short delay to prevent tight loop while still being responsive + delay(10); + } } }