I have some 5v 4 watt Neopixel RGBW single LEDS that I am attaching as final LEDS on strings of 100 WS2811 12V RGB LEDS.
I have a 12v to 5v converter at the end of each string, so the NeoPixel just gets 5v.
I am having trouble with how to define the color overall in Pixelblaze (ie: all RGB or all RGBW).
When I define the entire string as RGB, I can easily turn off all the pixels - RGB(0,0,0) - but the final RGBW pixel will not cooperate and stays with some lower-intensity white combination.
When I define the entire string as RGBW, I can easily turn off the final pixel via RGB(0,0,0) but the rest of the RBG pixels don’t respond.
I understand that there are no functions to explicitly treat a pixel as RGBW, and that one must compute the white channel and use rgb(r,g,b). Unless I am missing something…
Can I programmatically set different color orders (RGB->RGBW->RGB) for a range of pixels in a string?
Also- is there anyway to determine what the color order set in the pixelblaze interface is for a string, and if so, can I do that by each channel 0-7 in the expander?
Pixelblaze only supports one LED type and color order, though with the output expander it can change those from channel to channel, but still only one per channel and can’t change it mid-string currently with either method. It may be a lot easier to use an output expander and run a dedicated channel out to your RGBW LEDs. You could still power them like you have now, so would need only 1 additional wire.
You can kind of fake it in pattern code mid string. Set the string to RGB (or whatever 3 element color order your big 100 pixel string uses), and in the pattern check the index in the render function. Using rgb(first, second, third) you can send 3 elements at a time, but they won’t actually match to RGB colors, you’ll have to keep track and use some math to figure out the actual pixel(s) being rendered. The color order setting will still take effect, so you may need to re-order your rgb() parameters to account for that. You’ll also need to inflate the pixel count to add 1/3rd more pixels for each RGBW pixel.
Using this method you could control the white element fully and independently of the RGB elements.
Your first 100 pixels can use hsv() or paint(), but if you wanted to work in those color spaces for your RGBW pixels, you’d need to have a version of them in pattern code that converts to rgb (there are examples of these around).
Ah, thanks for the super fast response. I will try this method but I realized that the 3watt version of these from adafruit RGB, and fairly cheap so I’ll grab those as well. My current implementation can’t support a dedicated channel out to the end unfortunately.