Sub blade question

Hello all,

Today I decided to tear down my graflex and add some more sub blade. The crystal chamber has 2 pixels that are GRB order, is it possible to add another sub blade to the same data line that is wGRB?

And if it is, I assume instead of NULL I’d put the pixels type?
Thanks.

I believe I answered my own question, seems to be working with the config below:

BladeConfig blades[] = {
 { 732, WS281XBladePtr<108, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(), 			//Main Blade
	WS281XBladePtr<5, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),				//Shtok NPXL Hilt
	SubBlade(0,0, WS281XBladePtr<2, blade4Pin, Color8::GRB, PowerPINS<bladePowerPin6> >()),					//Crystal Chamber1
	SubBlade(1,1, WS281XBladePtr<2, blade4Pin, Color8::GRBw, PowerPINS<bladePowerPin6> >())																						//Crystal Chamber2
, CONFIGARRAY(presets) },

That’s absolutely amazing!! I was not expecting it to work so well. Thanks!

This won’t work the way you expect.
Since you’re not using any NULLs in your SubBlades(), ProffieOS will consider these completely separate, and send data to them separately. If this ends up actually working, it’s just because of luck.

That explains the behaviour I was just experiencing, is there a way to do that? I’m assuming not because there’s only one data line?

Theoretically the order is the same apart from the white diode, so if I put grb instead of wGRB would that work?

Or Is this a situation where I’ll have to get more pixels?

So, this has been on the todo/wishlist for a while.
Also, it’s possible that there are hardware reasons why this might not work properly.
I’m not sure if a neopixel cares how many bytes are in the data that goes through it or not.
(Like does a 3-color neopixel get confused if I send 4 bytes through it to the next neopixel?) Also, it means re-writing some parts of the proffieos neopixel support which currently counts everything in pixels, for this to work it has to count bytes instead.

In your particular case, the solution might be to make sure that the RGB pixel is after the RGBW pixel, and then make sure to set the byte order in such a way that the “W” is the byte that gets ignored. This only works because it’s only one RGB pixel. Note that you need to use GRBW, not GRBw byte orders for this, otherwise white will become 0,0,0,255, which will be black if you ignore the white channel. Also, this only works if the rgbw pixel wants the white at the end.

Basically:

GRBWGRBW
|--||-|
1st 2nd

If that doesn’t work, then you either need to use two data lines, or replace one of the pixels so that they are both the same type.

1 Like

Gotcha Thanks!! Appreciate the help!