Coder Social home page Coder Social logo

fab_led's People

Contributors

per1234 avatar rlogiacco avatar sonyhome avatar spencekonde avatar susch19 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fab_led's Issues

Provide Simple Code Examples

It would be nice for some very easy example Scripts . That are easy to understand

For Example a single APA106 with some fixed colors
Blue, Red, Green, White, some Fading and Blinking.

Another Example the same for manyPort

Would be very usefull for all who dont use strips and want to use APA106 LED only for Status Lamp and saving some Digital Ports (one old RGB LED need 3) with the APA106 only one.

Thank you and Best Regards

Teensy 3.2 support?

Currently Teensy 3.2 board looks like not supported. I've tried to compile the library with PlatformIO (platform = teensy, framework = arduino, board = teensy31) with these errors in result:

lib/FAB_LED/src/FAB_LED.h:684:1: error: prototype for 'void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::debug()' does not match any in class 'avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>'
avrBitbangLedStrip<FAB_TVAR>::debug(void)
^
lib/FAB_LED/src/FAB_LED.h:406:21: error: candidate is: template<short int high1, short int low1, short int high0, short int low0, long unsigned int minMsRefresh, avrLedStripPort dataPortId, unsigned char dataPortPin, avrLedStripPort clockPortId, unsigned char clockPortPin, pixelFormat colors, ledProtocol protocol> template<void (* printChar)(const char*), void (* printInt)(uint32_t)> static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::debug()
static inline void debug(void);
^

Is there any plan to add support for Teensy 3.2? Or do you have any ideas to quick-fix these errors (sorry, I'm not familiar with low-level programming so much)?

Combining a WS2812 strip in series with a SK6812 strip

Hello.
I modified your example a bit.
Here it is.
To be honest, I'm mostly lost so far.

My setup is following: 12x WS2812b + 30x SK6812 in series.

Modified test do following:
All 12pixels of WS2812b light up by RED color, together with first 12pixels of SK6812 which lights WHITE and little, little bit of BLUE.
Wait one sec, Clean.

May be that after some good sleep I will understand more, but so far I'm stacked with NUMPIXELS.
Basically, both kind of strips have to be identical length, otherwise I'm not able to control them.

What I miss is simple declaration like this:
"light up pixel no.10, type WS2812b, color RGB 255,0,0"
"light up pixel no.12, type SK6812, color RGBW 0,0,10,255"

I didn't study your library much. All my current project used Adafruit library so far, so please apologize my silly questions.

B.R. Lukas

Example Code produces lots of compiling errors

I tried to compile and upload the raw24Bit example but it just threw errors at me.

Here are the error messages:

In file included from test.ino:1:0: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:348:2: error: #error "Unsupported Architecture" #error "Unsupported Architecture" ^ In file included from test.ino:1:0: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:69:23: error: static data member ‘<anonymous struct>::type’ in unnamed class [-fpermissive] static const uint8_t type = PT_RGB; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:68:16: note: unnamed class defined here typedef struct { ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:77:23: error: static data member ‘<anonymous struct>::type’ in unnamed class [-fpermissive] static const uint8_t type = PT_GRB; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:76:16: note: unnamed class defined here typedef struct { ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:84:23: error: static data member ‘<anonymous struct>::type’ in unnamed class [-fpermissive] static const uint8_t type = PT_BGR; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:83:16: note: unnamed class defined here typedef struct { ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:92:23: error: static data member ‘<anonymous struct>::type’ in unnamed class [-fpermissive] static const uint8_t type = PT_RGB | PT_XXXW; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:91:16: note: unnamed class defined here typedef struct { ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:101:23: error: static data member ‘<anonymous struct>::type’ in unnamed class [-fpermissive] static const uint8_t type = PT_GRB | PT_XXXW; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:100:16: note: unnamed class defined here typedef struct { ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:110:23: error: static data member ‘<anonymous struct>::type’ in unnamed class [-fpermissive] static const uint8_t type = PT_BGR | PT_BXXX; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:109:16: note: unnamed class defined here typedef struct { ^ In file included from test.ino:1:0: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In constructor ‘avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::avrBitbangLedStrip()’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: error: there are no arguments to ‘SET_DDR_HIGH’ that depend on a template parameter, so a declaration of ‘SET_DDR_HIGH’ must be available [-fpermissive] SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:655:42: error: there are no arguments to ‘SET_DDR_HIGH’ that depend on a template parameter, so a declaration of ‘SET_DDR_HIGH’ must be available [-fpermissive] SET_DDR_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:656:41: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:657:42: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:660:28: error: there are no arguments to ‘FAB_DDR’ that depend on a template parameter, so a declaration of ‘FAB_DDR’ must be available [-fpermissive] FAB_DDR(dataPortId, 0xFF); // all pins out ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:661:29: error: there are no arguments to ‘FAB_PORT’ that depend on a template parameter, so a declaration of ‘FAB_PORT’ must be available [-fpermissive] FAB_PORT(dataPortId, 0x00); // all pins low ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:665:40: error: there are no arguments to ‘SET_DDR_HIGH’ that depend on a template parameter, so a declaration of ‘SET_DDR_HIGH’ must be available [-fpermissive] SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:666:42: error: there are no arguments to ‘SET_DDR_HIGH’ that depend on a template parameter, so a declaration of ‘SET_DDR_HIGH’ must be available [-fpermissive] SET_DDR_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:672:40: error: there are no arguments to ‘SET_DDR_HIGH’ that depend on a template parameter, so a declaration of ‘SET_DDR_HIGH’ must be available [-fpermissive] SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:673:40: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::spiSoftwareSendFrame(uint16_t, bool)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:830:40: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:832:39: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:836:41: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:837:42: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::spiSoftwareSendBytes(uint16_t, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:856:42: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:858:42: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:860:41: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:862:43: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::twoPortSoftwareSendBytes(uint16_t, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:901:58: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] if (isbitDhigh) SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:902:60: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] if (isbitChigh) SET_PORT_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:905:43: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:906:27: error: ‘sbiCycles’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:906:36: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:907:42: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:910:45: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:911:27: error: ‘sbiCycles’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:911:36: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:912:44: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:914:28: error: ‘sbiCycles’ was not declared in this scope DELAY_CYCLES(high1 - 2*sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:914:37: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(high1 - 2*sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:915:41: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:916:43: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:917:27: error: ‘cbiCycles’ was not declared in this scope DELAY_CYCLES(low1 - 2*cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:917:36: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(low1 - 2*cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::eightPortSoftwareSendBytes(uint16_t, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1120:31: error: there are no arguments to ‘FAB_PORT’ that depend on a template parameter, so a declaration of ‘FAB_PORT’ must be available [-fpermissive] FAB_PORT(dataPortId, onMask); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1121:25: error: ‘sbiCycles’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1121:34: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1123:32: error: there are no arguments to ‘FAB_PORT’ that depend on a template parameter, so a declaration of ‘FAB_PORT’ must be available [-fpermissive] FAB_PORT(dataPortId, bitmask); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1124:43: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES( high1 - high0 + sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1126:29: error: there are no arguments to ‘FAB_PORT’ that depend on a template parameter, so a declaration of ‘FAB_PORT’ must be available [-fpermissive] FAB_PORT(dataPortId, 0x00); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1128:24: error: ‘cbiCycles’ was not declared in this scope DELAY_CYCLES(low0 - cbiCycles - 20); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1128:38: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(low0 - cbiCycles - 20); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::onePortSoftwareSendBytes(uint16_t, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1148:42: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1150:26: error: ‘sbiCycles’ was not declared in this scope DELAY_CYCLES(high1 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1150:35: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(high1 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1152:41: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1154:25: error: ‘cbiCycles’ was not declared in this scope DELAY_CYCLES(low1 - cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1154:34: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(low1 - cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1159:42: error: there are no arguments to ‘SET_PORT_HIGH’ that depend on a template parameter, so a declaration of ‘SET_PORT_HIGH’ must be available [-fpermissive] SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1161:26: error: ‘sbiCycles’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1161:35: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1163:41: error: there are no arguments to ‘SET_PORT_LOW’ that depend on a template parameter, so a declaration of ‘SET_PORT_LOW’ must be available [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1165:25: error: ‘cbiCycles’ was not declared in this scope DELAY_CYCLES(low0 - cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1165:34: error: there are no arguments to ‘DELAY_CYCLES’ that depend on a template parameter, so a declaration of ‘DELAY_CYCLES’ must be available [-fpermissive] DELAY_CYCLES(low0 - cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::clear(uint16_t)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1183:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1187:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::grey(uint16_t, uint8_t)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1197:2: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1201:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1211:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1213:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const rgbw*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1219:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; \ ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1262:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_4B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1279:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_4B’ SEND_REMAPPED_PIXELS_4B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1259:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1262:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_4B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1279:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_4B’ SEND_REMAPPED_PIXELS_4B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const grbw*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1219:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; \ ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1262:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_4B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1295:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_4B’ SEND_REMAPPED_PIXELS_4B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1259:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1262:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_4B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1295:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_4B’ SEND_REMAPPED_PIXELS_4B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const hbgr*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1219:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; \ ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1262:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_4B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1311:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_4B’ SEND_REMAPPED_PIXELS_4B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1259:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1262:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_4B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1311:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_4B’ SEND_REMAPPED_PIXELS_4B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const rgb*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1219:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; \ ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1263:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_3B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, ) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1327:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_3B’ SEND_REMAPPED_PIXELS_3B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1259:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1263:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_3B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, ) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1327:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_3B’ SEND_REMAPPED_PIXELS_3B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const grb*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1219:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; \ ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1263:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_3B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, ) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1340:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_3B’ SEND_REMAPPED_PIXELS_3B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1259:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1263:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_3B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, ) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1340:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_3B’ SEND_REMAPPED_PIXELS_3B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const bgr*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1219:4: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; \ ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1263:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_3B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, ) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1353:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_3B’ SEND_REMAPPED_PIXELS_3B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1259:3: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1263:51: note: in expansion of macro ‘SEND_REMAPPED_PIXELS’ #define SEND_REMAPPED_PIXELS_3B(numPixels, array) SEND_REMAPPED_PIXELS(numPixels, array, ) ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1353:3: note: in expansion of macro ‘SEND_REMAPPED_PIXELS_3B’ SEND_REMAPPED_PIXELS_3B(numPixels, array); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint32_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1364:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1378:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*, const uint8_t*, const uint8_t*, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1406:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1431:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*, const uint8_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1456:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1476:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*, const T*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1500:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1520:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixelsRemap(uint16_t, const uint16_t*, const pixelType*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1534:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1539:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixelsRemap(uint16_t, const uint16_t*, const uint8_t*, const pixelType*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1559:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1569:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixelsRemap(uint8_t, const uint8_t*, const uint8_t*, const pixelType*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1589:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1599:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In static member function ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(int, uint16_t*)’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1618:3: error: ‘DISABLE_INTERRUPTS’ was not declared in this scope DISABLE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1629:2: error: ‘RESTORE_INTERRUPTS’ was not declared in this scope RESTORE_INTERRUPTS; ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In instantiation of ‘avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::avrBitbangLedStrip() [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u]’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1668:51: required from ‘ws2812b<dataPortId, dataPortBit>::ws2812b() [with avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortBit = 13u]’ test.ino:3:15: required from here /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: error: ‘SET_DDR_HIGH’ was not declared in this scope SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:655:42: error: ‘SET_DDR_HIGH’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_DDR_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: note: ‘SET_DDR_HIGH’ declared here, later in the translation unit SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:656:41: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:657:42: error: ‘SET_PORT_LOW’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:656:41: note: ‘SET_PORT_LOW’ declared here, later in the translation unit SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:660:28: error: ‘FAB_DDR’ was not declared in this scope FAB_DDR(dataPortId, 0xFF); // all pins out ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:661:29: error: ‘FAB_PORT’ was not declared in this scope FAB_PORT(dataPortId, 0x00); // all pins low ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:665:40: error: ‘SET_DDR_HIGH’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: note: ‘SET_DDR_HIGH’ declared here, later in the translation unit SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:666:42: error: ‘SET_DDR_HIGH’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_DDR_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: note: ‘SET_DDR_HIGH’ declared here, later in the translation unit SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:672:40: error: ‘SET_DDR_HIGH’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:654:41: note: ‘SET_DDR_HIGH’ declared here, later in the translation unit SET_DDR_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:673:40: error: ‘SET_PORT_LOW’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:656:41: note: ‘SET_PORT_LOW’ declared here, later in the translation unit SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In instantiation of ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::onePortSoftwareSendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:809:41: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1212:44: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ test.ino:21:39: required from here /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1148:42: error: ‘SET_PORT_HIGH’ was not declared in this scope SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1150:35: error: ‘DELAY_CYCLES’ was not declared in this scope DELAY_CYCLES(high1 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1152:41: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1154:34: error: ‘DELAY_CYCLES’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] DELAY_CYCLES(low1 - cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1150:35: note: ‘DELAY_CYCLES’ declared here, later in the translation unit DELAY_CYCLES(high1 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1159:42: error: ‘SET_PORT_HIGH’ was not declared in this scope SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1161:35: error: ‘DELAY_CYCLES’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1163:41: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1165:34: error: ‘DELAY_CYCLES’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] DELAY_CYCLES(low0 - cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1161:35: note: ‘DELAY_CYCLES’ declared here, later in the translation unit DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In instantiation of ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::twoPortSoftwareSendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:814:41: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1212:44: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ test.ino:21:39: required from here /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:901:58: error: ‘SET_PORT_HIGH’ was not declared in this scope if (isbitDhigh) SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:902:60: error: ‘SET_PORT_HIGH’ was not declared in this scope if (isbitChigh) SET_PORT_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:905:43: error: ‘SET_PORT_HIGH’ was not declared in this scope SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:906:36: error: ‘DELAY_CYCLES’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:907:42: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:910:45: error: ‘SET_PORT_HIGH’ was not declared in this scope SET_PORT_HIGH(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:911:36: error: ‘DELAY_CYCLES’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:912:44: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:914:37: error: ‘DELAY_CYCLES’ was not declared in this scope DELAY_CYCLES(high1 - 2*sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:915:41: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:916:43: error: ‘SET_PORT_LOW’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:915:41: note: ‘SET_PORT_LOW’ declared here, later in the translation unit SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:917:36: error: ‘DELAY_CYCLES’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] DELAY_CYCLES(low1 - 2*cbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:914:37: note: ‘DELAY_CYCLES’ declared here, later in the translation unit DELAY_CYCLES(high1 - 2*sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In instantiation of ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::eightPortSoftwareSendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:817:43: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1212:44: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ test.ino:21:39: required from here /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1120:31: error: ‘FAB_PORT’ was not declared in this scope FAB_PORT(dataPortId, onMask); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1121:34: error: ‘DELAY_CYCLES’ was not declared in this scope DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1123:32: error: ‘FAB_PORT’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] FAB_PORT(dataPortId, bitmask); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1120:31: note: ‘FAB_PORT’ declared here, later in the translation unit FAB_PORT(dataPortId, onMask); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1124:43: error: ‘DELAY_CYCLES’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] DELAY_CYCLES( high1 - high0 + sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1121:34: note: ‘DELAY_CYCLES’ declared here, later in the translation unit DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1126:29: error: ‘FAB_PORT’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] FAB_PORT(dataPortId, 0x00); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1120:31: note: ‘FAB_PORT’ declared here, later in the translation unit FAB_PORT(dataPortId, onMask); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1128:38: error: ‘DELAY_CYCLES’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] DELAY_CYCLES(low0 - cbiCycles - 20); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1121:34: note: ‘DELAY_CYCLES’ declared here, later in the translation unit DELAY_CYCLES(high0 - sbiCycles); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h: In instantiation of ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::spiSoftwareSendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’: /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:820:37: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendBytes(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:1212:44: required from ‘static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const uint8_t*) [with int high1 = 8; int low1 = 2; int high0 = 2; int low0 = 4; long unsigned int minMsRefresh = 20ul; avrLedStripPort dataPortId = (avrLedStripPort)4u; unsigned char dataPortPin = 13u; avrLedStripPort clockPortId = (avrLedStripPort)1u; unsigned char clockPortPin = 0u; pixelFormat colors = (pixelFormat)2u; ledProtocol protocol = (ledProtocol)1u; uint16_t = unsigned int; uint8_t = unsigned char]’ test.ino:21:39: required from here /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:856:42: error: ‘SET_PORT_LOW’ was not declared in this scope SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:858:42: error: ‘SET_PORT_HIGH’ was not declared in this scope SET_PORT_HIGH(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:860:41: error: ‘SET_PORT_LOW’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive] SET_PORT_LOW(dataPortId, dataPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:856:42: note: ‘SET_PORT_LOW’ declared here, later in the translation unit SET_PORT_LOW(clockPortId, clockPortPin); ^ /home/erik/sketchbook/libraries/FAB_LED/FAB_LED.h:862:43: error: ‘SET_PORT_HIGH’ was not declared in this scope SET_PORT_HIGH(clockPortId, clockPortPin); ^

Library is Not comfortable for newbies

Please, make library more comfortable: write functions, like in NeoPixel library: they are simple to use.
Like: strip.clear(), strip.fill(255,255,255), strip.show(), strip.setPixelColor(pixel, 255,255,255)

APA102 not working

Could you please help me get the APA102 option working? I use the "apa102.ino" example sketch with an Uno. I attach one APA102 LED to pin 6 and 5 per the sketch notes:
apa102<D,6,D,5> strip; and use pins D6 DATA, D5 CLK.

The sketch does not run correctly, I just get a constant on green color. I tried modifying the sketch with serial print commands to debug, and found the loop is running correctly, and tried using different pins. I also increased the delay to 1 second and I get the same problem.

If I upload the Adafruit Dotstar library example sketch, the AF sketch runs perfectly, with the exact same hardware setup, and it runs on any pins.

Question on the usage of custom palettes.

In a nutshell:

  • I have a 16x16 WS2812b LEDs array I want to control with an ATtiny84.

  • I only display monochromatic images which can be of 3 different colors with the same brightness (red, green and white). That is, a only red image, a only white image or an only green image. (On OTHER libraries I'm running out of memory (SRAM/DRAM?), I can only control up to 112 LEDs.)

  • If I understood the docs correctly, I only need a 2-bit per pixel pallete (as this gives me 4 colors). That's (256 LEDs) x (2-bits/LEDs) = 512 bits = 64 bytes. Is this logic correct?

  • I dont fully follow the logic behind G_testPalette.ino, it's a bit elaborated for me to be an example IMHO. Would someone help me out a bit on this task? I dont need the full working code, just a hint on how to define the LEDs.

Thank you in advance!
-A

Thank you

I just would like to say thank you for your wonderful library.

It works like a charm, it is small and effective, easy-to-use.

Great work.

Péter

Looking for other developpers

If anyone with good C/C++ experience wants to help maintain and improve this library it would be great to have more hands on deck.

Main goal:

  • Make sure issues are resolved/answered

Extended goals:

  • Do some R&D to add support for other platforms
  • Add features and grow the library
  • Fine tune the code for speed and compactness
  • Add support for 2D and 3D mapping

Doesn't work on ATmega328 @ 8mhz with internal oscillator

I'm using a bare ATmega328 board with the internal oscillator fuse set running at 8mhz. The FAB_LED library doesn't work. I've tried 3 other libraries all coded using assembly (light_ws2812, Adafruit_NeoPixel, FastLED) and all work properly on the same chip with the same settings. I've compiled in both Arduino and in GNU-AVR. It seems the code generation isn't correct. A pity, I really enjoy using this on the ATtiny85 and it works great at 16mhz.

Probably the documentation needs to be updated.

Need program for stair led project.

I need example for using two PIR motion sesors and WS2812B led (600 pixels in total). I tried Adafruit library and I was unable to go beyond 548 leds using Arduino Uno. One member in Arduino forum mentioned about this library but I cannot find sufficient example for my setup to work.

Question about direct controll

I'm working on a project using the sk6812 where I can't use the entire FAB_LED library.
I trying to use part of code , specifically sendByte().
For some reason, the LEDs flash, but this is not interference, because when I use the FAB_LED library, they work as they should

Does anyone know what the difference might be between using a function from a library and using a function directly?

Mi code (the definitions are directly from the FAB_LED library) :

#define sbiCycles 2

#define NS_PER_SEC          1000000000ULL
#define CYCLES_PER_SEC      ((uint64_t) (F_CPU))
#define CYCLES(time_ns)     (((CYCLES_PER_SEC * (time_ns)) + NS_PER_SEC - 1ULL) / NS_PER_SEC)

#define SK6812_1H_CY CYCLES(1210) // 500ns 1210ns-1510ns _----------__
#define SK6812_1L_CY CYCLES(200)  // 125ns  200ns-500ns  .    .    .
#define SK6812_0H_CY CYCLES(200)  // 125ns  200ns-500ns  _-----_______
#define SK6812_0L_CY CYCLES(1210) // 500ns 1210ns-1510ns .    .    .
#define SK6812_MS_REFRESH 84      //  84,000ns Minimum wait time to reset LED strip
#define SK6812_NS_RF  833333      // Max refresh rate for all pixels to light up 2msec (LED PWM is 500Hz)

    void sendByte(uint8_t val){
      for(int8_t b=7; b>=0; b--) {
        const bool bit = (val>>b) & 0x1;
        if (bit) { // Send a ONE
          // HIGH with ASM sbi (2 words, 2 cycles)
          PORTB |= (1 << STRIP_PIN); // STRIP_PINgoes high 
          // Wait exact number of cycles specified
          __builtin_avr_delay_cycles(SK6812_1H_CY - sbiCycles);
          //  LOW with ASM cbi (2 words, 2 cycles)
          PORTB &= ~(1 << STRIP_PIN); // STRIP_PINgoes low
          // Wait exact number of cycles specified
          __builtin_avr_delay_cycles(SK6812_1L_CY - sbiCycles );
        } else {  // Send a ZERO
          // HIGH with ASM sbi (2 words, 2 cycles)
          PORTB |= (1 << STRIP_PIN); // STRIP_PIN goes high 
          // Wait exact number of cycles specified
          __builtin_avr_delay_cycles(SK6812_0H_CY - sbiCycles);
          //  LOW with ASM cbi (2 words, 2 cycles)
          PORTB &= ~(1 << STRIP_PIN); // STRIP_PINgoes low
          // Wait exact number of cycles specified
          __builtin_avr_delay_cycles(SK6812_0L_CY - sbiCycles);
        }
      }  
    }
  
    void sendLed(uint8_t r,uint8_t g,uint8_t b,uint8_t w){ //BRGW
     sendByte(b);
     sendByte(r);
     sendByte(g);
     sendByte(w);
    }
    
    
    void endTransmition(){  // automatic ended after 80µs
      PORTB &= ~(1 << STRIP_PIN); // PD0 goes low
      // Wait exact number of cycles specified
      __builtin_avr_delay_cycles(CYCLES(833333)); //80µs
    }


    void fillAllLes(uint8_t r,uint8_t g,uint8_t b,uint8_t w){
      for(int i = 0; i < LED_COUNT; i++ ){
        sendLed(r,g,b,w);
        }
        endTransmition();
    }

Library Code :

avrBitbangLedStrip<FAB_TVAR>::onePortSoftwareSendBytes(const uint16_t count, const uint8_t * array)
{

	for(uint16_t c=0; c < count; c++) {
		const uint8_t val = array[c];
		for(int8_t b=7; b>=0; b--) {
			const bool bit = (val>>b) & 0x1;

 			if (bit) {
				// Send a ONE

				// HIGH with ASM sbi (2 words, 2 cycles)
				SET_PORT_HIGH(dataPortId, dataPortPin);
				// Wait exact number of cycles specified
				DELAY_CYCLES(high1 - sbiCycles);
				//  LOW with ASM cbi (2 words, 2 cycles)
				SET_PORT_LOW(dataPortId, dataPortPin);
				// Wait exact number of cycles specified
				DELAY_CYCLES(low1 - cbiCycles);
			} else {
				// Send a ZERO

				// HIGH with ASM sbi (2 words, 2 cycles)
				SET_PORT_HIGH(dataPortId, dataPortPin);
				// Wait exact number of cycles specified
				DELAY_CYCLES(high0 - sbiCycles);
				//  LOW with ASM cbi (2 words, 2 cycles)
				SET_PORT_LOW(dataPortId, dataPortPin);
				// Wait exact number of cycles specified
				DELAY_CYCLES(low0 - cbiCycles);
			}
		}
	}
}

Thanks for the reply.

Doesn't work on Attiny84 @ 8mhz

Tested:

Attiny84 with 16mhz crystal: Works as expected.

Attiny84 without crystal @ 8mhz: All LEDS bright white no matter what.
Attiny84 without crystal @ 1mhz: All LEDS bright white no matter what.

ESP8266 support

Any thoughts on on whether FAB_LED could be made to work on an ESP8266? Particularly looking at the NODEMCU devkits, which expose most of the pins. The Adafruit library is supposed to work (per http://www.instructables.com/id/ESP8266-controlling-Neopixel-LEDs-using-Arduino-ID/ ).

Installing the FAB_LED library and compiling the example AA_SimpleDemo against the NODEMCU device results in a slew of compile errors, most seeming to relate to digitalWriteFast.

Unfortunately I'm not familiar with this level of programming, so I can't investigate more deeply at the moment. Having a lighter-weight library on the versatile but resource-limited ESP8266 chip would be incredibly useful, though. Let me know if there's any way I can help.

Using an Arduino Mega 2560

I can get the same installation to work great on an uno, but i ran out of memory after 250 LED's (sk6812). So i upgraded to the Mega, and i cannot get the library to work. Any suggestions?

Thanks so much for the fantastic library!

Question : Control individual LEDs

Hello!

Is it possible to control many individual LEDs?

I don't want to make strips or led matrixes, I just want to place leds in certain places and I want to be able to control each one individually, some leds might display status from certain sensors, others might display twitter notifications maybe ?

Is this possible with this library.

(Disclaimer, just bought a batch of SK6812 and an ESP-14, never issued a microcontroller before and I don't own an Arduino, I do have an Raspberry Pi Zero W which I plan to control all my micro devices using ESPs, I am comfortable with programing PHP/JavaScript and others)

Thanks!

Missed bitshift optimization

Hello! I really love how tidy and efficient FAB LED is, but I found a missed optimization in the core loops, where it loops over the individual bits of each color byte.

For example, here, in onePortSoftwareSendBytes:

const uint8_t val = array[c];
for(int8_t b=7; b>=0; b--) {
    const bool bit = (val>>b) & 0x1;

The problem is that AVR has no instruction to shift by more than 1 bit at a time, so val >> b compiles to an additional loop that executes for every bit to be sent.

The extra loop can be eliminated by changing to:

uint8_t val = array[c];
for(uint8_t b=0; b<8; b++, val <<= 1) {
    const bool bit = val & 0x80;

does it work with esp32?

Hi, your lib looks great. Now I ordered a ESP32-POE and waiting for it. In the meantime I looking for a lib that support RGBW SK6812 LEDs and wana try the lib with a tiny or atmega.

Will the lib work later with esp32 too?

SEND_REMAPPED_PIXELS macro compilation error

Ive tried various adaptions right in sources, replacing "" with spaces (suspect those are used for compiler to see 2 line code on 1 line) but after each modification i get new errors.

For starters, im using Uno and Pro mini but wont get compiler to work for neither of them,
heres a output...

Any ideas why ??

`
In file included from /Users/deko/Documents/Arduino/libraries/FAB_LED-master/Examples/0_simpleExamples/sk6812b/sk6812b.ino:31:0:
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h: In static member function 'static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const rgbw*)':
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:126: error: 'else' without a previous 'if'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^

/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1284:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h: In static member function 'static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const grbw*)':
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:126: error: 'else' without a previous 'if'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1303:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h: In static member function 'static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const hbgr*)':
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:126: error: 'else' without a previous 'if'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1322:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h: In static member function 'static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const rgb*)':
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:126: error: 'else' without a previous 'if'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1338:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const rgb' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1243:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1338:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const rgb' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1249:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1338:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const rgb' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1252:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1338:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h: In static member function 'static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const grb*)':
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:126: error: 'else' without a previous 'if'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1351:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const grb' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1243:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1351:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const grb' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1249:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1351:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const grb' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1252:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1351:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h: In static member function 'static void avrBitbangLedStrip<high1, low1, high0, low0, minMsRefresh, dataPortId, dataPortPin, clockPortId, clockPortPin, colors, protocol>::sendPixels(uint16_t, const bgr*)':
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:126: error: 'else' without a previous 'if'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1364:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const bgr' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1243:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1364:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const bgr' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1249:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1364:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1263:47: error: 'const bgr' has no member named 'w'
#define sendWhiteMacro sendBytes(1, &array[i].w)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1252:6: note: in definition of macro '_SEND_REMAPPED_PIXELS'
sendWhite;
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1264:91: note: in expansion of macro 'sendWhiteMacro'
#define SEND_REMAPPED_PIXELS_4B(numPixels, array) _SEND_REMAPPED_PIXELS(numPixels, array, sendWhiteMacro)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1266:131: note: in expansion of macro 'SEND_REMAPPED_PIXELS_4B'
#define SEND_REMAPPED_PIXELS(color, numPixels, array) if IS_PIXEL_FORMAT_3B(color) SEND_REMAPPED_PIXELS_3B(numPixels, array) else SEND_REMAPPED_PIXELS_4B(numPixels, array)
^
/Users/deko/Documents/Arduino/libraries/FAB_LED-master/FAB_LED.h:1364:3: note: in expansion of macro 'SEND_REMAPPED_PIXELS'
SEND_REMAPPED_PIXELS(colors, numPixels, array);
^
exit status 1
Error compiling for board Arduino/Genuino Uno.
`

No support for post-2016 AVR parts (PR #35 will fix this)

I submitted a PR several months ago which adds support for what Arduino calls the "megaavr" architecture, including the Uno Wifi Rev. 2, Nano Every, numerous third party boards, and at least one upcoming official board as well. (this covers the megaAVR 0-series, tinyAVR 0, 1, and 2-series, the current flagship 8-bit parts in the AVR DA and DB-series, as well as the upcoming AVR DD-series low-pincount parts and upcoming AVR EA series (the first full-size parts with the fancy ADC the 2-series has). Since 2016, all AVR devices released have been of this architecture, and all new AVR products for the foreseeable future will be as well. With the tinyAVR range reaching down into 2k and 4k, (and the 8-pin parts limited to 4k) there's a good deal of interest in non-buffered libraries (my adaptation of Adafruit Neopixel doesn't cut it on those parts)

Thanks to your clear comments and the similarity between modern and classic AVRs, adding support for the new architecture was straightforward, and it's been tested by the person who originally reported the issue to me. Is there any chance of getting #35 merged?

Thanks

Clarify license

This repository has a copy of the GPL as "LICENSES," which is the standard way to indicate that the contents are licensed under the GPL. But FAB_LED.h has a comment at the top: "Licence: limited use is authorized for the purpose of beta testing." That statement isn't consistent with the GPL. Which is it? Are others allowed to modify, use, and redistribute this code like the GPL permits, or are we only allowed to use it (unmodified?) for beta testing? I'd quite like to use this library as part of a bigger open-source project, but I can't unless it's got a clear license that's compatible with the license covering the rest of the project.

Also, I'd encourage you to consider changing the license to MIT (which FastLED uses), LGPL 3.0 (which Adafruit_NeoPixel uses), or at the very least GPL 3.0. The choice of license is obviously yours to make, but GPL 2.0 code is incompatible with virtually all of the other licenses out there; it can't even be used in a GPL 3.0 project. If copyleft is important to you, LGPL preserves that for your code, while making it open to a much wider audience. There's a summary of various licenses at https://choosealicense.com/, which seems pretty good. (But their frontpage description of GPL is wrong: it doesn't just prohibit distributing closed-source programs, it prohibits using the code in anything that's not licensed under the same GPL license, which none of the other common licenses require.)

Palette based not working

First of all thanks a million for this library!
I'm having difficulties in making your library work on an Arduino Nano with a 288 WS2812B led strip.
Due to memory limitations, I'm using the palette based implementation, but my led strip is flickering at the beginning, then behaving as expected mid way the loop() function and finally behaving erratically at the end.

Here is my sketch, I tried to keep it simple for demonstration purposes:

#include <FAB_LED.h>

ws2812b<D,6> myLeds;
const uint16_t numPixels = 288;
const uint8_t bitsPerPixel = 4;
const uint8_t numColors = 1<<bitsPerPixel;

grb  palette[2*numColors] = {};
uint8_t pixels[ARRAY_SIZE(numPixels, bitsPerPixel)];

void setup() {
	myLeds.clear(numPixels);
	for (uint8_t i = 0; i < numColors; i++)  {
		palette[i] = {255/i,0,0}; // gradient of green
	}
}

void loop() {
	for (uint8_t c = 0; c <= numColors; c++) {
		for (uint16_t i = 0; i < numPixels; ++i) {
			SET_PIXEL(pixels, i, bitsPerPixel, c);
			myLeds.sendPixels<bitsPerPixel,grb>(numPixels, pixels, palette);
		}
		delay(1000);
	}
}

I was expecting to see the strip fill up of green and then fill up again of a darker shade of green and so forth, down to black and then back again.
I started having a compilation issue in line 1523
sendBytes(bytesPerPixel, &palette[bytesPerPixel*colorIndex]);
Which I solved with a cast
sendBytes(bytesPerPixel, (uint8_t*)(&palette[bytesPerPixel*colorIndex]));

Either my fix is wrong and I don't understand your library principles or the problem lies somewhere else...

BTW, your library deserves some proper documentation: it is really promising for low memory consumption.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.