From b2de3abe0833a0fc3c310e6a71ebdc0c4e9c6c91 Mon Sep 17 00:00:00 2001 From: true Date: Fri, 8 May 2026 22:12:06 -0700 Subject: [PATCH] fix buttons working, add basic brightness control --- firmware/app/led/matrix.h | 3 +++ firmware/app/main.c | 4 ++++ firmware/app/ui/btn.c | 8 ++++---- firmware/app/ui/temp_ui.c | 43 +++++++++++++++++++++++++++++++++++++++ firmware/app/ui/temp_ui.h | 1 + 5 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 firmware/app/ui/temp_ui.c create mode 100644 firmware/app/ui/temp_ui.h diff --git a/firmware/app/led/matrix.h b/firmware/app/led/matrix.h index 785db4d..abadac1 100644 --- a/firmware/app/led/matrix.h +++ b/firmware/app/led/matrix.h @@ -7,6 +7,7 @@ #include +#include "driver/aw20xxx.h" @@ -21,6 +22,8 @@ typedef struct LedMap { +extern AW20x awled; + extern LedMap led_set; extern uint8_t awled_fade[6*12]; diff --git a/firmware/app/main.c b/firmware/app/main.c index 206b66d..d17d701 100644 --- a/firmware/app/main.c +++ b/firmware/app/main.c @@ -27,6 +27,7 @@ #include "led/ledprog.h" #include "ui/btn.h" +#include "ui/temp_ui.h" /* *@Note @@ -162,6 +163,9 @@ int main(void) // set up accelerometer spim_init(); + // set up user interface + tempui_init(); + // configure AWU to provide ~997Hz wakeup interrupt for main program // TODO: confirm if the counter is reset / preloaded awu_init(); diff --git a/firmware/app/ui/btn.c b/firmware/app/ui/btn.c index 6db4676..d7c40c7 100644 --- a/firmware/app/ui/btn.c +++ b/firmware/app/ui/btn.c @@ -62,18 +62,18 @@ void btn_process() btn[i].hold++; if (btn[i].hold == DEBOUNCE) { - btn_state[1] |= (1 << (i + 3)); + btn_state[1] |= (1 << i); } } // is held? if (btn[i].hold == HOLD_COUNTS) { - btn_state[2] |= (1 << (i + 3)); + btn_state[2] |= (1 << i); } // is repeated? if (btn[i].repeat && (btn[i].hold == (HOLD_COUNTS + btn[i].repeat))) { - btn_state[2] |= (1 << (i + 3)); + btn_state[2] |= (1 << i); btn[i].hold = HOLD_COUNTS; } @@ -81,7 +81,7 @@ void btn_process() if (!x) { if (btn[i].hold) { btn[i].hold = 0; - btn_state[3] |= (1 << (i + 3)); + btn_state[3] |= (1 << i); } } } diff --git a/firmware/app/ui/temp_ui.c b/firmware/app/ui/temp_ui.c new file mode 100644 index 0000000..c2ab37e --- /dev/null +++ b/firmware/app/ui/temp_ui.c @@ -0,0 +1,43 @@ +/* + * temp_ui.c: temporary ui shit until I can write something better + */ + +#include "ch32x035_conf.h" +#include "btn.h" + +#include "led/matrix.h" + + + +static uint32_t brt = 28; + + + +void brt_set(uint8_t idx) +{ + switch (idx) { + case 1: { + if (brt > 4) + brt--; + break; + } + case 2: { + brt++; + if (brt > 44) brt = 44; + break; + } + } + + aw20x_set_dim_global(&awled, brt); +} + +void tempui_init() +{ + btn[2].cb_push = brt_set; + btn[2].cb_hold = brt_set; + btn[2].repeat = 200; + + btn[1].cb_push = brt_set; + btn[1].cb_hold = brt_set; + btn[1].repeat = 200; +} \ No newline at end of file diff --git a/firmware/app/ui/temp_ui.h b/firmware/app/ui/temp_ui.h new file mode 100644 index 0000000..acd91a9 --- /dev/null +++ b/firmware/app/ui/temp_ui.h @@ -0,0 +1 @@ +void tempui_init(); \ No newline at end of file