RGB-W with an Output Expander

Hello,

I bought a bunch of Pixelblazes with Pixelblaze Pro Output Expanders. I’m using WS2812 strips with them. These strips are RGBW, and that’s how I have them configured in ElectroMage.

The “white” LEDs in the RGBW strips are supposed to be warm white, however, they are unfortunately not consistent. There are a few warm white LEDs and then a few that are a little cooler temperature, followed by warmer again, etc. I’m assuming they were not consistent when making the LEDs.

I can’t return the strips anymore, and I have them mounted, so I’m going to have to live with it, even though it is annoying me.

However, I see that ElectroMage has a RGB-W color mode, which looks to use just the RGB output on the RGB-W strips, ignoring the white output. I’d like to try that to see if I like how that looks better, however, it doesn’t seem to be working, probably because it looks like that mode only applies when you connect directly to the ElectroMage, not when you connect via the Output Expander.

When I try to select the output option for the Pro Output Expander, RGB-W is not in the list.

Does anyone know how I could do RGB-W with the Output Expander? Or does that need to be added to the ElectroMage code? Thanks.

I don’t have a Pro Expander handy, but the normal ones definitely don’t support the -W flavors, and I suspect the pro doesn’t either.

@wizard’s at Burning Man this week, and might have a better answer when he gets back. But the firmware is open source – available at GitHub - simap/pixelblaze_output_expander – so if there’s no easier solution, you could modify one of the expander’s existing RGBW options to skip the white calculation and zero out the W channel.

Thanks. In my brief looking at the expander code, it looks to me like it is just outputting whatever red/green/blue/white values it is given. I’m thinking the main PixelBlaze code must be the layer that calculates how much white to give the expander code? I don’t see that being in github so I’m thinking that part probably isn’t open source.

I imagine it would be basically require a small change in that PixelBlaze code to add an RGB-W option that just runs the normal RGB (not RGBW) logic but sets numElements to 4 instead of 3 in PBWS2812Channel.

You’re right - the W calculation is done on the PB, and the best solution is to talk @wizard into adding -W options for the output expander in the next firmware revsion. But in the meantime…

Communication from the PB to the expander is strictly one way – the Pixelblaze has no idea what the expander does with the data it sends. And it pulls the list of available options from its internal software, not from the expander itself.

So you could tell the Pixelblaze to send 3 element RGB in the proper order for your lights, and just change the way it is handled in the expander so it always operates in 4-element mode, copying R,G, and B from the incoming data stream, and putting a zero in the white position.

I see what you’re saying now. I’ll wait for @wizard to get back for now since changing it in the PixelBlaze firmware would be a cleaner solution and I’m not sure at the moment how to build new firmware for the expander board, but thanks for your feedback, I’m understanding how PixelBlaze talks to the Output Expander better now.

(I agree the build/flash thing is complicated right now. For one thing, STM has made a couple of rounds of changes to their IDE since those projects were checked in. I’ll write up a set of instructions and post them as a separate thread in case anybody wants to experiment.

My proposed RGB-W hack involves literally two lines in one c file, but actually getting it running on your expander is something of an adventure!)

(Built a firmware version that actually does this, just to make sure I could.)

1 Like