From d3416a8dfe11f534eee59f712cd62c5cd0520c5d Mon Sep 17 00:00:00 2001 From: GlassOnTin Date: Sat, 28 Mar 2026 16:15:41 +0000 Subject: [PATCH] Add home button: short-press BOOT returns to watch face GPIO 0 (BOOT button) now serves as the home/wake button: - Short press when blanked: wake display - Short press when on sub-screen: animate back to watch face - Long press (2s): screenshot to SD (unchanged) Addresses spurious navigation from USB disconnect noise on the capacitive touch panel. --- RNode_Firmware.ino | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/RNode_Firmware.ino b/RNode_Firmware.ino index 432e685..3a33007 100644 --- a/RNode_Firmware.ino +++ b/RNode_Firmware.ino @@ -2048,17 +2048,27 @@ void loop() { #if HAS_SD && HAS_DISPLAY { static uint32_t btn_down_since = 0; - static bool btn_screenshot_taken = false; + static bool btn_action_taken = false; if (digitalRead(0) == LOW) { if (btn_down_since == 0) btn_down_since = millis(); - if (!btn_screenshot_taken && millis() - btn_down_since > 2000) { - btn_screenshot_taken = true; + // Long press (2s): screenshot to SD + if (!btn_action_taken && millis() - btn_down_since > 2000) { + btn_action_taken = true; if (drv2605_ready) drv2605_play(HAPTIC_DOUBLE_CLICK); gui_screenshot_sd(); } } else { + // Short press: navigate home + if (btn_down_since > 0 && !btn_action_taken && millis() - btn_down_since > 50) { + if (display_blanked) { + display_unblank(); + } else { + lv_tileview_set_tile(gui_tileview, gui_tile_watch, LV_ANIM_ON); + if (drv2605_ready) drv2605_play(HAPTIC_LIGHT_CLICK); + } + } btn_down_since = 0; - btn_screenshot_taken = false; + btn_action_taken = false; } } #endif