![](/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-05
- Revision:
- 2:435f94e9bb06
- Parent:
- 1:789215018659
- Child:
- 3:98b6f181c935
File content as of revision 2:435f94e9bb06:
/** * 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; #define led_event(i) \ tapeSet(START_ID + 0, led##i##_val, led##i##_val, led##i##_val); \ wakeup = 1; \ if (led##i##_val <= 0) \ led##i##_val = MAX_LEVEL; \ else \ led##i##_val -= INTERVAL##i; \ if (led##i##_val < 0) \ led##i##_val = 0; void led0_event() { led_event(0); } void led1_event() { led_event(1); } void led2_event() { led_event(2); } void led3_event() { led_event(3); } void led4_event() { led_event(4); } void led5_event() { led_event(5); } void led6_event() { led_event(6); } void led7_event() { led_event(7); } void led8_event() { led_event(8); } void led9_event() { led_event(9); } 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; } } }