int LinxChipkit::WS2812Refresh() { #ifdef _BOARD_WF32_ | _BOARD_MEGA_ while(!m_ws2812.updateLEDs(m_WS2812Buffer)); return L_OK; #else return L_FUNCTION_NOT_SUPPORTED; #endif }
void loop() { strip.setRGB(3, 10, 0, 0); strip.sync(); delay(1000); strip.setRGB(3, 0, 10, 0); strip.sync(); delay(1000); strip.setRGB(3, 0, 0, 10); strip.sync(); delay(1000); }
int LinxChipkit::WS2812WriteOnePixel(unsigned short pixelIndex, unsigned char red, unsigned char green, unsigned char blue, unsigned char refresh) { #ifdef _BOARD_WF32_ | _BOARD_MEGA_ m_WS2812Buffer[pixelIndex].red = red; m_WS2812Buffer[pixelIndex].green = green; m_WS2812Buffer[pixelIndex].blue = blue; if(refresh != 0) { while(!m_ws2812.updateLEDs(m_WS2812Buffer)); } return L_OK; #else return L_FUNCTION_NOT_SUPPORTED; #endif }
int LinxChipkit::WS2812WriteNPixels(unsigned short startPixel, unsigned short numPixels, unsigned char* data, unsigned char refresh) { #ifdef _BOARD_WF32_ | _BOARD_MEGA_ if(startPixel+numPixels <= m_numPixels) { memcpy(&m_WS2812Buffer[startPixel], data, sizeof(WS2812::GRB)*numPixels); } else { memcpy(&m_WS2812Buffer[startPixel], data, sizeof(WS2812::GRB)*m_numPixels-startPixel); } if(refresh != 0) { while(!m_ws2812.updateLEDs(m_WS2812Buffer)); } return L_OK; #else return L_FUNCTION_NOT_SUPPORTED; #endif }
int LinxChipkit::WS2812Open(unsigned short numLeds, unsigned char dataChan) { #ifdef _BOARD_WF32_ | _BOARD_MEGA_ m_numPixels = numLeds; m_WS2812Buffer = (WS2812::GRB*)malloc(numLeds * sizeof(WS2812::GRB)); m_rgbPatternBuffer = (uint8_t*)malloc(CBWS2812PATBUF(numLeds)); //Check If Memory Was Allocated Successfully if(m_WS2812Buffer == 0 || m_rgbPatternBuffer == 0) { return 0x81; } else { m_ws2812.begin(numLeds, m_rgbPatternBuffer, CBWS2812PATBUF(numLeds), false); } return L_OK; #else return L_FUNCTION_NOT_SUPPORTED; #endif }
void setup() { strip.begin(2, 12); }