Xmas tree serial LED blinking example code
Fork of JBB_SerialLED_test by
Diff: main.cpp
- Revision:
- 1:832ea8c566a8
- Parent:
- 0:57df396a2de8
- Child:
- 2:20fc73d3b706
--- a/main.cpp Mon May 12 11:01:44 2014 +0000 +++ b/main.cpp Mon Dec 12 05:55:57 2016 +0000 @@ -1,32 +1,116 @@ /** - * Jksoft Blue mbed Board + * X'mas tree LED blinky using NeoPixel * - * Serial LED test program - * - * Copyright (C) 2014 Junichi Katsu (JKSOFT) + * Copyright (C) 2016 Toyomasa Watarai (MACRUM) */ + #include "mbed.h" #include "LEDStrip.h" +#define START_ID 2 +#define NUM_LEDS 40 +#define MAX_LEVEL 255 -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 +DigitalIn rip(p17); +DigitalOut myled(LED1); + +void blink_1(int); +void blink_2(int); +void blink_3(int); + +void blink_1(int loops) +{ + while(loops--) { + for (int idx = 0; idx < 8; idx++) { + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j += 7) { + tapeSet(j+((idx+0)%7), 0, 0, 0); + tapeSet(j+((idx+1)%7), 0, 0, MAX_LEVEL); + tapeSet(j+((idx+2)%7), 0, MAX_LEVEL, 0); + tapeSet(j+((idx+3)%7), 0, MAX_LEVEL, MAX_LEVEL); + tapeSet(j+((idx+4)%7), MAX_LEVEL, 0, 0); + tapeSet(j+((idx+5)%7), MAX_LEVEL, 0, MAX_LEVEL); + tapeSet(j+((idx+6)%7), MAX_LEVEL, MAX_LEVEL, 0); + tapeSet(j+((idx+7)%7), MAX_LEVEL, MAX_LEVEL, MAX_LEVEL); + } + tapeSend(); + wait_ms(300); + } + } +} + + +void blink_2(int loops) +{ + while(loops--) { + 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(10); + } + 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(10); + } + 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(10); + } + 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(10); + } + } +} + +void blink_3(int loops) +{ + while(loops--) { + for( int i = START_ID ; i <= (START_ID + NUM_LEDS); i++) { + for (int j = (START_ID + NUM_LEDS); j >= START_ID; j--) { + tapeSet(j, MAX_LEVEL / ((( j - i ) - 1) * 5), 0, 0); // LED No , Red , Green , Blue + } + tapeSend(); + wait_ms(50); + } + } +} + +void clear(void) +{ + for (int j = START_ID; j <= (START_ID + NUM_LEDS); j++) { + tapeSet(j, 0, 0, 0); // LED No , Red , Green , Blue + } + tapeSend(); +} + +int main() +{ + tapeInit(0, START_ID + NUM_LEDS); // freq( 0:default ) , SerialLED num + rip.mode(PullDown); + + int sensor = rip.read(); + while(1) { + if (sensor == 1) { + myled = 1; + blink_1(6); + blink_2(1); + blink_3(5); + clear(); + } + myled = 0; + wait(0.5); + sensor = rip.read(); + + } +}