Increase number of output pins [ESP32]

Hi there,

a few years ago we overhauled our main stairway. Every single step has an integrated RGBWW strip (SK6812) at the bottom. The number of pixels per step differs between 55 and 78. All in all, we have a total of 841 pixels.
At the time of assembly, I thought it was clever to give every single step its own output pin (stupid me!).

In the past, I used an ESP32 in combination with the Neopixel Library to control everything.
Now I would like to switch to the much more sophisticated WLED project, but ran into the limit of 10 output pins - I would need 14 to address each strip individually.
Unfortunately, rewiring is not an option, since I would have to disassemble the whole stairway.

Do you see a chance to increase the number of output pins to at least 14?
Any kind of suggestion is greatly appreciated.

Thanks in advance,
Sebastian

You don’t necessarily have to rewire every step.

If we number your strips from top to bottom as 1 - 14, then:

Either reverse the direction of #2 or add a data line that takes the output of #1 to the input of #2.
Join the data output of #2 to the input of #3. Note you only need to worry about data, power remains the same. This makes steps 1,2, and 3 a single strip to WLED. You can use segments to address them separately.

That takes you from 14 outputs down to 12. You can do it one more time, either with #4 to join in #4 and #5 to #1,#2,#3 or create a separate 4,5,6 (or some other set). That will take you down to 10 strips (or less if you combine more) without disassembling the whole thing.

The other option is to try to use virtual DDP with 2 ESP32 boards, but getting precise syncing may be difficult.

Hi divsys,
thanks for your reply!

Now, that I know more about how to wire strips properly, I would have chosen exactly your suggestion.
But, as soon as I got the POC running, I encased everything to keep the wife happy :wink:

That´s why I would really like to avoid rewiring. Even if it´s only about connecting a few outputs to the inputs of the following strips.

I would not mind to patch the code and go on with a slightly customized version. But I did not see anything like #define MAX_OUTPUT_PINS 10.

Regarding the overall small amount of pixels (841), the ESP should be able to handle it easily, right?

Has anyone ever done this before?