diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-02-06 03:54:47 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-02-06 03:54:47 +0000 |
commit | 12f99e38f77f3c9c50812c5761cd6bf4c37c6747 (patch) | |
tree | a5af5278c1ea6dd1901c0f6312dacfbea98aa81b /usb-i2c-sl018 | |
parent | cleanup (diff) |
first working version for ledmatrix modes
git-svn-id: https://svn.spreadspace.org/avr/trunk@129 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018')
-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)); + } } |