for led jacket
Fork of WS2812 by
WS2812.cpp
- Committer:
- devararendy
- Date:
- 2016-12-10
- Revision:
- 1:8910a1fcbdb0
- Parent:
- 0:f080cb888db6
- Child:
- 2:645ab1279245
File content as of revision 1:8910a1fcbdb0:
#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(); } void WS2812::sendColors(uint32_t * ColorBuffer) { for(int x=0;x<LED_Qty;x++) { writeColor(*(&ColorBuffer[x])); } sendReset(); }