RGB LEDS of the neopixels
Dependencies: C12832_lcd PixelArray WS2812 mbed
Fork of WS2812_Example by
Revision 5:60a9e2389a9c, committed 2015-04-21
- Comitter:
- cathal66
- Date:
- Tue Apr 21 13:26:10 2015 +0000
- Parent:
- 4:7a998a6934f1
- Commit message:
- function to control the leds;
Changed in this revision
C12832_lcd.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/C12832_lcd.lib Tue Apr 21 13:26:10 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/dreschpe/code/C12832_lcd/#8f86576007d6
--- a/main.cpp Thu Apr 16 09:23:20 2015 +0000 +++ b/main.cpp Tue Apr 21 13:26:10 2015 +0000 @@ -1,6 +1,7 @@ #include "mbed.h" #include "WS2812.h" #include "PixelArray.h" +#include "C12832_lcd.h" #define WS2812_BUF 3 #define NUM_COLORS 9 @@ -11,16 +12,19 @@ // The given numbers are for the K64F WS2812 ws(p9, WS2812_BUF, 5, 10, 10, 15); -int main() -{ +//LCD Setup +C12832_LCD lcd; + +Serial pc(USBTX, USBRX); // tx, rx - ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling +void LED_Colour(int red , int green ,int blue , int bright) + { + int colorbuf[NUM_COLORS] = {0x000000}; + //int colorbuf[NUM_COLORS] = {0x000000,0x00f0ff,0x00ff00,0x00ffff,0xffffff,0x00ff00,0x00ffff,0x0000ff,0xff00ff}; - // set up the colours we want to draw with - int colorbuf[NUM_COLORS] = {0xfe0000};//,0x00f0ff,0x00ff00,0x00ffff,0xffffff,0x00ff00,0x00ffff,0x0000ff,0xff00ff}; + colorbuf[0] = red*0xffff + green*0xff + blue*0x00; - - + pc.printf("Colour: %x \n\r",colorbuf[0]); // for each of the colours (j) write out 10 of them // the pixels are written at the colour*10, plus the colour position // all modulus 60 so it wraps around @@ -33,44 +37,17 @@ for (int j=0; j<WS2812_BUF; j++) { // px.SetI(pixel position, II value) //px.SetI(j%WS2812_BUF, 0xff+(0xf*(j%NUM_LEDS_PER_COLOR))); //full brightness - px.SetI(j%WS2812_BUF, 0xf+(0xf*(j%NUM_LEDS_PER_COLOR))); //Dim lighting - } + px.SetI(j%WS2812_BUF, 0xf +(0xf*(j%NUM_LEDS_PER_COLOR))); //Dim lighting + } +} +int main() +{ - - // Now the buffer is written, rotate it - // by writing it out with an increasing offset + ws.useII(WS2812::PER_PIXEL); // use per-pixel intensity scaling + while (1) { - if(colorbuf[0]>=0xfffffe) - { - //colorbuf[0]=0x000000; - } - - if(colorbuf[0]^0x000fff>=0x0001ff) - { - colorbuf[0]=colorbuf[0]+0x000001-0x010000; - //colorbuf[0] = 0x000000; - } - else if(colorbuf[0]^0x00ffff>=0x01ffff) - { - colorbuf[0]=colorbuf[0]+0x000100-0x000001; - } - else if(colorbuf[0]<=0xfffffe) - { - colorbuf[0]=colorbuf[0]+0x010001-0x000100; - } - - - - - for (int i = 0; i < WS2812_BUF; i++) { - px.Set(i, colorbuf[(i / NUM_LEDS_PER_COLOR) % NUM_COLORS]); - px.SetI(i%WS2812_BUF, 0xf+(0xf*(i%NUM_LEDS_PER_COLOR))); //Dim lighting - } - for (int z=WS2812_BUF; z >= 0 ; z--) { - ws.write_offsets(px.getBuf(),z,z,z); - //wait(0.5); - - } - wait(0.01); + + LED_Colour(125, 125 ,125 , 125); + wait(1); } }