Jesus Christ
/
ws2811_Izebel
simple program to control Izebel's lights for Firefly
SimpleWS2811.cpp
- Committer:
- bollocks
- Date:
- 2016-06-19
- Revision:
- 0:02f4f92c778a
File content as of revision 0:02f4f92c778a:
#include "ws2811BitBang.h" static inline void send0(DigitalOut& ws2811Data){ ws2811Data=1; WAIT0H(); ws2811Data=0; WAIT0L(); } static inline void send1(DigitalOut& ws2811Data){ ws2811Data=1; WAIT1H(); ws2811Data=0; WAIT1L(); } static inline void sendByte(uint8_t b, DigitalOut& ws2811Data){ for(int i=0;i<8;i++){ if(b & (uint8_t)0x80){ send1(ws2811Data); }else{ send0(ws2811Data); } b = b << 1; } } static inline void sendLED(uint8_t red, uint8_t green, uint8_t blue,DigitalOut& ws2811Data){ sendByte(red,ws2811Data); sendByte(green,ws2811Data); sendByte(blue,ws2811Data); } static inline void sendLED(uint8_t *p,DigitalOut& ws2811Data){ sendLED(*p,*(p+1), *(p+2),ws2811Data); } void sendBuffer(uint8_t* rgbBuf,size_t len,DigitalOut& ws2812Data){ __disable_irq(); for(size_t i=0;i<len;i++){ sendLED(rgbBuf+3*i,ws2812Data); } __enable_irq(); }