Modifying OctoWS2811 to work with RGBW led strips

A project log for LED Light Rod

Battery powered led light that looks like a fluorescent tube light.

Mackenzie HauckMackenzie Hauck 06/12/2016 at 23:371 Comment

When using these single data line led strips a problem arises when using hundreds (or more) leds off a single data line. The 800kHz signal is too slow to update all the leds at a high framerate. The way to get around this is driving strips in parallel which is what products like the Fadecandy or the software OctoWS2811 for Teensy solve.

However, both of these solutions are currently only compatible with rgb strips (24 bits per pixel) so I had to modify OctoWS2811 to work with rgbw (32 bits per pixel). It was a pretty simple modification of using a variable to set the bits per pixel instead of a hard coded value of 24, as well as adding a way to convert from RGBW to GRBW which my strips were wired as. I renamed the library to OctoSK6812 since I took out the compatibility with 400kHz strips, and to differentiate from the official release of OctoWS2811 since my additions might break things since it hasn't been fully tested. It's OctoSK6812 since that is the driver chip inside these new rgbw leds, and this chip is also found in the mini rgb single data line leds.

Here's the code:

And a slightly modified test example also from OctoWS2811:

This test lights up the first 4 pixels to help identify the arrangement of the colours for a particular strip. If the leds show as: RGBWW then the correct configuration is set.

This modified version should also still work with the rgb variants of the SK6812 driver chip.


AT wrote 11/08/2017 at 17:44 point

Hi ! Thanks for sharing this work. Did you ever notice that leds.setPixel(0, color); actually lights up the second led on the strip ? And so on. There is some kind of general +1 led offset when applied to the strip...

  Are you sure? yes | no