for led jacket
Fork of WS2812 by
Diff: WS2812.cpp
- Revision:
- 0:f080cb888db6
- Child:
- 1:8910a1fcbdb0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WS2812.cpp Sat Dec 10 08:18:58 2016 +0000 @@ -0,0 +1,250 @@ +#include "WS2812.h" + + +WS2812::WS2812(PinName pin, int qty):dataOut(pin) +{ + dataPin = pin; + LED_Qty = qty; +} +WS2812::~WS2812() +{ + +} +void WS2812::sendReset() +{ + dataOut = 0; + wait_us(60); +} +void WS2812::writeColor(uint32_t RGB) +{ + Red = ((RGB&0xFF0000)>>16); + Green = ((RGB&0xFF00)>>8); + Blue = (RGB&0xFF); + + writeByte(Green); + writeByte(Red); + writeByte(Blue); + +} +void WS2812::send0() +{ + dataOut = 1; + //asm("nop"); +// asm("nop"); +// asm("nop"); + +//--------------hitung manual + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + dataOut = 0; + //asm("nop"); +// asm("nop"); +// asm("nop"); +// asm("nop"); +// asm("nop"); +// asm("nop"); +// +// asm("nop"); +// asm("nop"); +// asm("nop"); + +//-----------------hitung manual + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); +} +void WS2812::send1() +{ + dataOut = 1; + //asm("nop"); +// asm("nop"); +// asm("nop"); +// asm("nop"); +// +// asm("nop"); +// asm("nop"); +// asm("nop"); +//----------------------------------- + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + dataOut = 0; + // asm("nop"); +// asm("nop"); +// asm("nop"); +// +// asm("nop"); +// asm("nop"); +// asm("nop"); +//-----------------hitung manual + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +} +void WS2812::writeByte(uint8_t data) +{ + for(int x=7;x>=0;x--) + { + if(data&(1<<x)) + { + //bit is high + send1(); + } + else + { + //bit is low + send0(); + } + } +} +void WS2812::send1Color(uint32_t RGB) +{ + writeColor(RGB); + sendReset(); +} \ No newline at end of file