![](/media/cache/profiles/9bd5ee6fe55aaeb673025dbcb8f939c1.50x50_q85.jpg)
mbed Christmas tree using NeoPixel
Fork of JBB_SerialLED_test by
main.cpp
- Committer:
- MACRUM
- Date:
- 2015-12-04
- Revision:
- 1:789215018659
- Parent:
- 0:57df396a2de8
- Child:
- 2:435f94e9bb06
File content as of revision 1:789215018659:
/** * X'mas tree LED blinky using NeoPixel * * Copyright (C) 2015 Toyomasa Watarai (MACRUM) */ #include "mbed.h" #include "LEDStrip.h" #define START_ID 2 #define NUM_LEDS 10 #define MAX_LEVEL 100 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; } } }