summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2013-02-06 03:54:47 +0000
committerChristian Pointner <equinox@spreadspace.org>2013-02-06 03:54:47 +0000
commit12f99e38f77f3c9c50812c5761cd6bf4c37c6747 (patch)
treea5af5278c1ea6dd1901c0f6312dacfbea98aa81b
parentcleanup (diff)
first working version for ledmatrix modes
git-svn-id: https://svn.spreadspace.org/avr/trunk@129 aa12f405-d877-488e-9caf-2d797e2a1cc7
-rw-r--r--usb-i2c-sl018/ledmatrix.c23
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));
+ }
}