From c9b70b29f84739ab362a1d2931c2a0b52162fad9 Mon Sep 17 00:00:00 2001 From: Thomas Kolb Date: Mon, 20 May 2024 14:26:27 +0200 Subject: [PATCH] Improve display of large hour times --- src/main.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main.c b/src/main.c index 07692cc..330d7ae 100644 --- a/src/main.c +++ b/src/main.c @@ -75,13 +75,20 @@ static void show_time(uint32_t time_ms) sseg_set_char(0, '0' + days / 10, false); sseg_set_char(1, '0' + days % 10, blinking_dot_on); sseg_set_char(2, 'd', false); - } else if(time_ms >= 99 * ONE_HOUR / 10) { // 9.9 hours .. 9.9 days + } else if(time_ms >= 2*ONE_DAY) { // 2 days .. 9.9 days // show days with one decimal uint32_t decidays = (time_ms + ONE_DAY/20) * 10 / ONE_DAY; sseg_set_char(0, '0' + decidays / 10, blinking_dot_on); sseg_set_char(1, '0' + decidays % 10, false); sseg_set_char(2, 'd', false); + } else if(time_ms >= 99 * ONE_HOUR / 10) { // 9.9 hours .. 2.0 days + // show integer hours + uint32_t hours = (time_ms + ONE_HOUR/2) / ONE_HOUR; + + sseg_set_char(0, '0' + hours / 10, false); + sseg_set_char(1, '0' + hours % 10, blinking_dot_on); + sseg_set_char(2, 'H', false); } else if(time_ms >= 1000 * ONE_SECOND) { // 1000 seconds (0.27 hours) .. 9.9 hours // show hours with one decimal uint32_t decihours = (time_ms + ONE_HOUR/20) * 10 / ONE_HOUR; @@ -244,8 +251,8 @@ static void update_countdown_fsm(uint32_t time_ms) m_countdown_off_time *= 2; } - if(m_countdown_off_time > 10 * ONE_HOUR) { - m_countdown_off_time = 10 * ONE_HOUR; + if((m_countdown_off_time - time_ms) > 10 * ONE_HOUR) { + m_countdown_off_time = time_ms + 10 * ONE_HOUR; } } @@ -364,9 +371,10 @@ int main() buttons_init(); sseg_init(); - sseg_set_char(0, 'Z', false); - sseg_set_char(1, 'A', false); - sseg_set_char(2, 'M', false); + // display test + sseg_set_char(0, '8', true); + sseg_set_char(1, '8', true); + sseg_set_char(2, '8', true); buzzer_on(1000); @@ -386,6 +394,12 @@ int main() sleep_ms(400); + sseg_set_char(0, 'Z', false); + sseg_set_char(1, 'A', false); + sseg_set_char(2, 'M', false); + + sleep_ms(2000); + configure_ms_trig_alarm(); arm_ms_trig_alarm();