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:
https://gist.github.com/nocduro/f26f8dbdd156ad73955f8288b138ba83
And a slightly modified test example also from OctoWS2811:
https://gist.github.com/nocduro/9b15ba001f52465897c56ba58b9d4d26
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.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
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