Out of specification timing but it works
Dependencies: WS2812 PixelArray
main.cpp
- Committer:
- chris
- Date:
- 2014-08-18
- Revision:
- 1:bf4d674d3692
- Parent:
- 0:6b847e039b3b
- Child:
- 2:57db905622ca
File content as of revision 1:bf4d674d3692:
#include "mbed.h" #include "WS2812.h" #include "PixelArray.h" #define WS2812_BUF 60 WS2812 ws(p5,WS2812_BUF); PixelArray px(WS2812_BUF); DigitalOut led(LED1); int main() { int ctr=0; ws.useII(2); // use per-pixel intensity scaling // set up the colours we want to draw with int colorbuf[6] = {0x2f0000,0x2f2f00,0x002f00,0x002f2f,0x00002f,0x2f002f}; int h=0; // for each of the colours (j) write out 10 of them // the pixel get written at the rotation offset, plus the colour*10, plus the colour position // all modulus 60 so it wraps around for (int i =0; i<6; i++) { for (int j=0; j<10; j++) { px.Set((h+(i*10)+j)%60,colorbuf[i]); } } // now all the colours are computed, add a fade effect // compute and write the II value for each pixel for (int j=0; j<60; j++) { // px.SetI(pixel position, II value) px.SetI( (h+j)%60, 0xf+(0xf*(j%10))); } // the buffer is written // rotate by writing it out with an increasing offset while (1) { for (int z=59; z >= 0 ; z--) { ws.write_offsets(px.getBuf(),z,z,z); // write out the buffer wait(0.075); if (ctr==1000) { ctr=0; led=!led; } else { ctr++; } } } }