/*-------------------------------------------------------------------- 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