diff options
Diffstat (limited to 'usb-i2c-sl018/ledmatrix.c')
-rw-r--r-- | usb-i2c-sl018/ledmatrix.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/usb-i2c-sl018/ledmatrix.c b/usb-i2c-sl018/ledmatrix.c index 767ba2b..78a70a1 100644 --- a/usb-i2c-sl018/ledmatrix.c +++ b/usb-i2c-sl018/ledmatrix.c @@ -77,7 +77,7 @@ void ledmatrix_red_moving_handle(void) moving_cnt++; if(moving_cnt >= LEDMATRIX_NUM_LEDS) moving_cnt = 0; - LEDMATRIX_PORT = (LEDMATRIX_PORT & ~LEDMATRIX_MASK) | (LEDMATRIX_MASK & (1<<moving_cnt)); + LEDMATRIX_PORT = (1<<LEDMATRIX_GREEN) | (LEDMATRIX_MASK & (1<<moving_cnt)); } @@ -103,16 +103,16 @@ void ledmatrix_green_init(void) void ledmatrix_green_moving_init(void) { moving_cnt = 0; - LEDMATRIX_PORT = (1<<LEDMATRIX_RED) | (LEDMATRIX_MASK & (1<<moving_cnt)); + LEDMATRIX_PORT = (1<<LEDMATRIX_RED) | (LEDMATRIX_MASK & (1<<(LEDMATRIX_NUM_LEDS - moving_cnt - 1))); ledmatrix_start_timer(); } void ledmatrix_green_moving_handle(void) { - moving_cnt--; + moving_cnt++; if(moving_cnt >= LEDMATRIX_NUM_LEDS) - moving_cnt = LEDMATRIX_NUM_LEDS-1; - LEDMATRIX_PORT = (LEDMATRIX_PORT & ~LEDMATRIX_MASK) | (LEDMATRIX_MASK & (1<<moving_cnt)); + moving_cnt = 0; + LEDMATRIX_PORT = (1<<LEDMATRIX_RED) | (LEDMATRIX_MASK & (1<<(LEDMATRIX_NUM_LEDS - moving_cnt - 1))); } @@ -130,10 +130,23 @@ void ledmatrix_green_blink_handle(void) void ledmatrix_rg_moving_init(void) { + moving_cnt = 0; + LEDMATRIX_PORT = (1<<LEDMATRIX_GREEN) | (LEDMATRIX_MASK & (1<<moving_cnt)); + ledmatrix_start_timer(); } void ledmatrix_rg_moving_handle(void) { + moving_cnt++; + if(moving_cnt >= 2*LEDMATRIX_NUM_LEDS) + moving_cnt = 0; + + if(moving_cnt >= LEDMATRIX_NUM_LEDS) { + uint8_t offset = moving_cnt - LEDMATRIX_NUM_LEDS; + LEDMATRIX_PORT = (1<<LEDMATRIX_RED) | (LEDMATRIX_MASK & (1<<(LEDMATRIX_NUM_LEDS - offset - 1))); + } else { + LEDMATRIX_PORT = (1<<LEDMATRIX_GREEN) | (LEDMATRIX_MASK & (1<<moving_cnt)); + } } |