diff options
Diffstat (limited to 'usb-i2c-sl018')
-rw-r--r-- | usb-i2c-sl018/ledmatrix.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/usb-i2c-sl018/ledmatrix.c b/usb-i2c-sl018/ledmatrix.c index 78a70a1..cc0abd2 100644 --- a/usb-i2c-sl018/ledmatrix.c +++ b/usb-i2c-sl018/ledmatrix.c @@ -32,9 +32,11 @@ #define LEDMATRIX_GREEN 7 #define LEDMATRIX_NUM_LEDS 6 #define LEDMATRIX_MASK 0x3F +#define BLINK_DELAY 3 ledmatrix_mode_t mode = off; uint8_t moving_cnt = 0; +uint8_t wait_cnt = 0; void ledmatrix_start_timer(void) { @@ -83,13 +85,17 @@ void ledmatrix_red_moving_handle(void) void ledmatrix_red_blink_init(void) { + wait_cnt = 0; ledmatrix_red_init(); ledmatrix_start_timer(); } void ledmatrix_red_blink_handle(void) { - LEDMATRIX_PORT ^= 1<<LEDMATRIX_RED; + if(++wait_cnt >= BLINK_DELAY) { + LEDMATRIX_PORT ^= 1<<LEDMATRIX_RED; + wait_cnt = 0; + } } @@ -118,13 +124,17 @@ void ledmatrix_green_moving_handle(void) void ledmatrix_green_blink_init(void) { + wait_cnt = 0; ledmatrix_green_init(); ledmatrix_start_timer(); } void ledmatrix_green_blink_handle(void) { - LEDMATRIX_PORT ^= 1<<LEDMATRIX_GREEN; + if(++wait_cnt >= BLINK_DELAY) { + LEDMATRIX_PORT ^= 1<<LEDMATRIX_GREEN; + wait_cnt = 0; + } } @@ -152,13 +162,17 @@ void ledmatrix_rg_moving_handle(void) void ledmatrix_rg_blink_init(void) { + wait_cnt = 0; ledmatrix_red_init(); ledmatrix_start_timer(); } void ledmatrix_rg_blink_handle(void) { - LEDMATRIX_PORT ^= ~(LEDMATRIX_MASK); + if(++wait_cnt >= BLINK_DELAY) { + LEDMATRIX_PORT ^= ~(LEDMATRIX_MASK); + wait_cnt = 0; + } } |