![](/media/cache/profiles/9bd5ee6fe55aaeb673025dbcb8f939c1.50x50_q85.jpg)
mbed Christmas tree using NeoPixel
Fork of JBB_SerialLED_test by
Diff: main.cpp
- Revision:
- 1:789215018659
- Parent:
- 0:57df396a2de8
- Child:
- 2:435f94e9bb06
--- a/main.cpp Mon May 12 11:01:44 2014 +0000 +++ b/main.cpp Fri Dec 04 14:08:03 2015 +0000 @@ -1,32 +1,310 @@ /** - * Jksoft Blue mbed Board + * X'mas tree LED blinky using NeoPixel * - * Serial LED test program - * - * Copyright (C) 2014 Junichi Katsu (JKSOFT) + * Copyright (C) 2015 Toyomasa Watarai (MACRUM) */ + #include "mbed.h" #include "LEDStrip.h" +#define START_ID 2 +#define NUM_LEDS 10 +#define MAX_LEVEL 100 -int main() { - tapeInit(0, 2); // freq( 0:default ) , SerialLED num - - while(1) - { - for( int i=0 ; i < 256 ; i++ ) - { - tapeSet(0,i,0,0); // LED No , Red , Green , Blue - tapeSet(1,0,i,0); // LED No , Red , Green , Blue - tapeSend(); // Send to LED - wait_ms(20); - } - for( int i=255 ; i > 0 ; i-- ) - { - tapeSet(0,i,0,0); // LED No , Red , Green , Blue - tapeSet(1,0,i,0); // LED No , Red , Green , Blue - tapeSend(); // Send to led - wait_ms(20); - } - } -} \ No newline at end of file +Ticker blinker0, blinker1, blinker2, blinker3, blinker4, blinker5, blinker6, blinker7, blinker8, blinker9; +int led0_val, led1_val, led2_val, led3_val, led4_val, led5_val, led6_val, led7_val, led8_val, led9_val; + +void blink_1() +{ + for( int i=0 ; i <= MAX_LEVEL ; i++ ) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, i, i, i); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(15); + } + for( int i=MAX_LEVEL ; i >= 0 ; i-- ) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, i, i, i); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(15); + } +} + +void blink_2() +{ + for( int i=0 ; i <= MAX_LEVEL ; i++ ) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, i, 0, 0); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(15); + } + for( int i=0 ; i <= MAX_LEVEL ; i++ ) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, MAX_LEVEL, i, 0); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(15); + } + for( int i=0 ; i <= MAX_LEVEL ; i++ ) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, MAX_LEVEL, MAX_LEVEL, i); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(15); + } + for( int i=MAX_LEVEL ; i >= 0 ; i-- ) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, i, i, i); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(15); + } +} + +void blink_3() +{ + for( int i = START_ID ; i <= (START_ID + NUM_LEDS); i++) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + if ( i == j) { + tapeSet(j, MAX_LEVEL, 0, 0); // LED No , Red , Green , Blue + } else { + tapeSet(j, 0, 0, 0); // LED No , Red , Green , Blue + } + + } + tapeSend(); + wait_ms(100); + } +} + +#define WAIT_TIME0 0.19 +#define WAIT_TIME1 0.25 +#define WAIT_TIME2 0.3 +#define WAIT_TIME3 0.2 +#define WAIT_TIME4 0.22 +#define WAIT_TIME5 0.3 +#define WAIT_TIME6 0.17 +#define WAIT_TIME7 0.24 +#define WAIT_TIME8 0.18 +#define WAIT_TIME9 0.28 + +#define INTERVAL0 9 +#define INTERVAL1 14 +#define INTERVAL2 20 +#define INTERVAL3 17 +#define INTERVAL4 30 +#define INTERVAL5 20 +#define INTERVAL6 25 +#define INTERVAL7 17 +#define INTERVAL8 22 +#define INTERVAL9 19 + +extern int wakeup; + +void led0_event() +{ + tapeSet(START_ID + 0, led0_val, led0_val, led0_val); + wakeup = 1; + + if (led0_val <= 0) + led0_val = MAX_LEVEL; + else + led0_val -= INTERVAL0; + + if (led0_val < 0) + led0_val = 0; +} + +void led1_event() +{ + tapeSet(START_ID + 1, led1_val, led1_val, led1_val); + wakeup = 1; + + if (led1_val <= 0) + led1_val = MAX_LEVEL; + else + led1_val -= INTERVAL1; + + if (led1_val < 0) + led1_val = 0; +} + +void led2_event() +{ + tapeSet(START_ID + 2, led2_val, led2_val, led2_val); + wakeup = 1; + + if (led2_val <= 0) + led2_val = MAX_LEVEL; + else + led2_val -= INTERVAL2; + + if (led2_val < 0) + led2_val = 0; +} + +void led3_event() +{ + tapeSet(START_ID + 3, led3_val, led3_val, led3_val); + wakeup = 1; + + if (led3_val <= 0) + led3_val = MAX_LEVEL; + else + led3_val -= INTERVAL3; + + if (led3_val < 0) + led3_val = 0; +} + +void led4_event() +{ + tapeSet(START_ID + 4, led4_val, led4_val, led4_val); + wakeup = 1; + + if (led4_val <= 0) + led4_val = MAX_LEVEL; + else + led4_val -= INTERVAL4; + + if (led4_val < 0) + led4_val = 0; +} + +void led5_event() +{ + tapeSet(START_ID + 5, led5_val, led5_val, led5_val); + wakeup = 1; + + if (led5_val <= 0) + led5_val = MAX_LEVEL; + else + led5_val -= INTERVAL5; + + if (led5_val < 0) + led5_val = 0; +} + +void led6_event() +{ + tapeSet(START_ID + 6, led6_val, led6_val, led6_val); + wakeup = 1; + + if (led6_val <= 0) + led6_val = MAX_LEVEL; + else + led6_val -= INTERVAL6; + + if (led6_val < 0) + led6_val = 0; +} + +void led7_event() +{ + tapeSet(START_ID + 7, led7_val, led7_val, led7_val); + wakeup = 1; + + if (led7_val <= 0) + led7_val = MAX_LEVEL; + else + led7_val -= INTERVAL7; + + if (led7_val < 0) + led7_val = 0; +} + +void led8_event() +{ + tapeSet(START_ID + 8, led8_val, led8_val, led8_val); + wakeup = 1; + + if (led8_val <= 0) + led8_val = MAX_LEVEL; + else + led8_val -= INTERVAL8; + + if (led8_val < 0) + led8_val = 0; +} + +void led9_event() +{ + tapeSet(START_ID + 9, led9_val, led9_val, led9_val); + wakeup = 1; + + if (led9_val <= 0) + led9_val = MAX_LEVEL; + else + led9_val -= INTERVAL9; + + if (led9_val < 0) + led9_val = 0; +} + +void blink_4() +{ + led0_val = MAX_LEVEL; + led1_val = MAX_LEVEL; + led2_val = MAX_LEVEL; + led3_val = MAX_LEVEL; + led4_val = MAX_LEVEL; + led5_val = MAX_LEVEL; + led6_val = MAX_LEVEL; + led7_val = MAX_LEVEL; + led8_val = MAX_LEVEL; + led9_val = MAX_LEVEL; + + blinker0.attach(&led0_event, WAIT_TIME0); + blinker1.attach(&led1_event, WAIT_TIME1); + blinker2.attach(&led2_event, WAIT_TIME2); + blinker3.attach(&led3_event, WAIT_TIME3); + blinker4.attach(&led4_event, WAIT_TIME4); + blinker5.attach(&led5_event, WAIT_TIME5); + blinker6.attach(&led6_event, WAIT_TIME6); + blinker7.attach(&led7_event, WAIT_TIME7); + blinker8.attach(&led8_event, WAIT_TIME8); + blinker9.attach(&led9_event, WAIT_TIME9); + + wait(8); + + blinker0.detach(); + blinker1.detach(); + blinker2.detach(); + blinker3.detach(); + blinker4.detach(); + blinker5.detach(); + blinker6.detach(); + blinker7.detach(); + blinker8.detach(); + blinker9.detach(); +} + +int main() +{ + const int loops = 3; + tapeInit(0, START_ID + NUM_LEDS); // freq( 0:default ) , SerialLED num + + int i = 0; + while(1) { + if ((i/loops) == 0) { + blink_4(); + } + if ((i/loops) == 1) { + blink_2(); + } + if ((i/loops) == 2) { + blink_3(); + } + if ((i/loops) == 3) { + blink_1(); + } + + i++; + if (i >= (loops * 4)) { + i = 0; + } + } +}