/*--------------------------------------------------------------------
The SK6812 library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
It is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
See .
--------------------------------------------------------------------*/
#ifndef SK6812_H
#define SK6812_H
#include
/*
* old version used 3 separate tables, one per byte of the 24 bit encoded data
*
static const uint8_t byte0Lookup[256]={0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x93,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9A,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0x9B,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDA,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB,0xDB};
static const uint8_t byte1Lookup[256]={0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x49,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x69,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D,0x6D};
static const uint8_t byte2Lookup[256]={0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6,0x24,0x26,0x34,0x36,0xA4,0xA6,0xB4,0xB6};
*/
// New version uses one large LUT as its faster index into sequential bytes for the GRB pattern
static uint8_t encoderLookup[256*11]={ 0 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
0 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,56 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,192 ,129 ,15 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,1 ,14 ,124 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,112 ,224 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,128 ,3 ,31 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,28 ,248 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,224 ,\
192 ,7 ,62 ,240 ,129 ,15 ,124 ,224 ,3 ,31 ,248 };
class SK6812 {
public:
// Constructor: number of LEDs
SK6812 (uint16_t number_of_leds);// Constuctor
~SK6812();
void
begin(void),
show(void),
setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b),
// setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w),
setPixelColor(uint16_t n, uint32_t c),
setBrightness(uint8_t),
clear(),
updateLength(uint16_t n);
uint8_t
// *getPixels(void) const,
getBrightness(void) const;
uint16_t
numPixels(void) const;
static uint32_t
Color(uint8_t r, uint8_t g, uint8_t b),
Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w);
// uint32_t
// getPixelColor(uint16_t n) const;
inline bool
canShow(void) { return (micros() - endTime) >= 300L; }
private:
boolean
begun; // true if begin() previously called
uint16_t
numLEDs, // Number of RGB LEDs in strip
numBytes; // Size of 'pixels' buffer
uint8_t
brightness,
*pixels, // Holds the current LED color values, which the external API calls interact with 9 bytes per pixel + start + end empty bytes
*doubleBuffer, // Holds the start of the double buffer (1 buffer for async DMA transfer and one for the API interaction.
rOffset, // Index of red byte within each 3- or 4-byte pixel
gOffset, // Index of green byte
bOffset, // Index of blue byte
wOffset; // Index of white byte (same as rOffset if no white)
uint32_t
endTime; // Latch timing reference
};
#endif // SK6812_H