Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: STM32FC_RGB_WS2812
WS2812.cpp
- Committer:
- devararendy
- Date:
- 2016-12-10
- Revision:
- 1:8910a1fcbdb0
- Parent:
- 0:f080cb888db6
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();
}