SK6812 RGBW LED Support

@wizard

I am confused about how SK6812 RGBW (4 LEDs version) is supported by Pixelblaze.
According to the spec SK6812_RGBW_REV01.pdf (1.0 MB) this LED required 32-bits of
data (this makes perfect sense) but Pixelblaze send only 24 bits.
I found next explanation on how Pixelblaze is dealing with SK6812 RGBW LEDs:

According to the above explanation it looks like there is no way to light up all 4 LEDs.

@wizard could you please briefly explain what is a real story?

I am looking for the simple RGBW Strip replacement but I need to max brightness.
Most of the time I will need Warm White (2700K) bright color for the entire strip.
Occasionally status for the appliances will be indicated with different colors
in areas right above the correspondent appliance.

Lighting up all 4 elements at 100% is not supported in Pixelblaze at this time. It’s technically possible, though the current draw is pretty large and they tend to get very warm. The color output of white with R+G+B+WW would be a bit cooler and wouldn’t have the same broader spectrum light.

I think you already know or thought about it, but posting it here for discussion (and for the benefit of others that find their way here): You could use multiple strips to increase brightness, and would spread heat better. It would also have parallel current paths, less resistance. You could drive them in parallel from the same output and treat them as if they where a single strip.

There are strips with WWA elements, while it wouldn’t give you RGB alone, I imagine those can put out more white light per milliamp than an RGBW could. These aren’t directly supported, but you could use the rgb function to send them data.

Another option would be to get a dumb non-addressable white LED strip for the lighting assuming you don’t need individual pixel control. You could drive the whole thing as a pixel using a WS2811 + power mosfet (I have breakouts for these on Tindie if you like).

You could have one or more of each in parallel, giving you some RGB color along side a dedicated white lighting strip (either type).

1 Like

This is exactly what I have now.
But for the project update I do need an individual color control.
You missed a bit my point from a original post.

Yes, of course I was/am thinking about running two strips in parallel with all good benefits you
described. But for this I will need to find really wide and nice looking LED conduit.
So far I did not find one. All they are designed for the single strip.
Please let me know if you have on in mind.

I realized this but reading forum but asked a question if I was missing something.

Yes, this is a downside but in my case LED strip is in a conduit with metal base.
This definitely helps for heat dissipation.

PS.
I demonstrated to my wife how the updated kitchen lighting will look with the
5V WS2812b and 24V WS2811 strips.
She really likes Status Indicators for running appliances (now this became a must have)
but rejected regular lighting because it is not bright enough.
Now I have to complete this project one or the other way.

@wizard

SK6812 RGBW testing update.
The strip is connected to the Ch-0 of IO Expander but I guess, this should not matter.
Strip works and the result is 100% expected but it is also 100% incorrect.
Here my very simple test pattern, only RED LEDs should be On:

export function beforeRender(delta)
{

}

export function render(index)
{

  r = 1
  g = 0
  b = 0
  
  rgb(r, g, b)
}

Instead they are sequentially Red, Green/White and Blue
This is 100% expected behavior. The reason is:
At least current FW version (3.2) of Pixelblase send 24-bit of data but
this LED expects 32-bit. And of course, number of LEDs must be set
to 400 in order to light up all LEDs.
Picture is attached:

In order to overcome this incompatibility some sort of RGB-to-RGBW re-mapping
function should be created (another words, 24-bit to 32-bit mapping is required)
I guess, this could be done because the sequence repeats every 96-bits.
Let me see how this will go.
But I am open to any other reasonable solution if anyone can suggest something.

PS,
Of course, I can switch to ESP8266 with Fast LEDs or WLED SW but I would
like to stay with Pixelblaze.

Do you have one of the color order options with a ‘W’ in it selected?

or without expander:

Screen Shot 2022-02-19 at 4.24.54 PM

Yes, I found this setting after I created my post.
And I am sorry, I said Pixelblaze does not support RGBW strips. It does!

It does work but as far as brightness consideration, it is about the same
as other 3 different strips I tested for this project.
Unfortunately brightness is not enough.

But I did created rgbw2rgb remapping function.
And it works with much higher brightness.
Tomorrow I will test my creation for “wife acceptance” hopping
this will work for her as well.
Here is my creation.
It is not really elegant (I think SW person can do much better job)
but it works:


// RGBW to RGB re-mapping
function rgbw2rgb(r, g, b, w, index)
{
  Idx = (index % 4)
  
  if (0 == Idx)
  {
    G = g
    R = r
    B = b
  }
  else if (1 == Idx)
  {
    G = w
    R = g
    B = r
  }
  else if (2 == Idx)
  {
    G = b
    R = w
    B = g
  }
  else if (3 == Idx)
  {
    G = r
    R = b
    B = w
  }

  rgb(R, G, B)
}

//---------------------------------------------------

export function beforeRender(delta)
{

}

//---------------------------------------------------

export function render(index)
{
  r = 1
  g = 0.4
  b = 0
  w = 0.4
  
  //rgb(r,g,b)
  
  rgbw2rgb(r, g, b, w, index)
}

//---------------------------------------------------

So, now I am able to control all 4 LEDs
Yes, this way strip eats more power but temperature is a bit
higher then body temp.