How many WS2812b connected in PARALLEL can Arduino Mega Control?

Hi community,

I want to have around 2800 LEDs on 50 separate ws2812b strips controlled by ONE Arduino Mega (connected to external power source in parallel) and want to know if this is achievable.

My last project I had around 1000 LEDs and hooked them up to an external power source and a mega in parallel (so I connected all the data wires in parallel to one single data wire, which is then connected to the Arduino Mega). This setup worked fine. One thing interesting tho that I can’t wrap my head around is how these 1000 or so LEDs were “perceived” by the mega and how the mega was controlling these lights.

I used the FastLed library and realized that for 1000 lights which is around 18 strips of each 2meter of ws2812 strips, the argument I had to give to FastLED.addLeds<NEOPIXEL,6>(leds, NUM_LEDS); was only 57 for NUM_LEDS, which is the amount of LEDs on 1 strip of 2m ws2812.

This got me thinking whether the Arduino Mega was seeing just 1 of the strips and the data signal for that strip is duplicated to the other 17 strips. If this is the case, then is it correct thinking that there’s no limit in terms of the memory of the mega to control more leds as long as the external power source can sustain the lights? To sum up again, if this is true, then it shouldn’t matter if this time I want to connect 50 separate ws2812 strips in parallel to an Arduino because the data signal for the first strip will be duplicated to the rest 49 strips? So to the Arduino Mega, it was really just controlling 1 strip of 57 lights.

Is my understanding correct?

I appreciate the help and your time.

mchangxe:
I appreciate the help and your time.

We don't appreciate seeing the same question asked in different parts of the forum.

DO NOT CROSS-POST, CROSS-POSTING WASTES TIME.

Duplicate deleted.

The WS2812's don't send any data back. It's one way communication. neither the mega nor the other strings has any way of knowing that the data line happens to be connected to multiple strings.

At a certain point, as you add more and more strings, it will stop working due to the lengths of wire involved; I don't think this is spec'ed though, you'd have to experimentally determine it (and it will depend on things like the length and geometry of the wires). Past this limit, you could use some opamps to buffer the signal and get more "groups" of strings controlled from the same signal.

DrAzzy:
The WS2812's don't send any data back. It's one way communication. neither the mega nor the other strings has any way of knowing that the data line happens to be connected to multiple strings.

At a certain point, as you add more and more strings, it will stop working due to the lengths of wire involved; I don't think this is spec'ed though, you'd have to experimentally determine it (and it will depend on things like the length and geometry of the wires). Past this limit, you could use some opamps to buffer the signal and get more "groups" of strings controlled from the same signal.

right, I understand that mega does not know how many strings the data line is connected to. But by adding more and more strings, do you mean connecting the strings one end to another in a chain or in parallel? Because I think what you said is true for the chain case but not for my case, since I'm connecting strings in parallel.

What I say applies to strings with the data lines connected in parallel at the start of the string (the only way parallel strings should be done). The "limit" to this is probably quite large, but is not infinite.

In series (a bad use of the term, but I don't know what better term to use), you can connect as many as your controller has the memory to store the buffer for and you're willing to put up with the time to update (which becomes an issue with very long strings). The controller in the LEDs reshapes the signal, so there's nothing other than the above mentioned practical issues with connecting an arbitrary number of strings end to end.

Power supply is always an issue (you need to inject power at the start of every string, because of the resistance of the power wires in the strings), but this is an issue regardless.

I think your frame rate would start to drop, even though you are only writing out the same array each time, it takes a certain ammount of time to write out the leds to each strip...

My maths may be wrong, but from what i can find it takes about 30 microseconds to write out each “pixel”. You have 56 leds per strip, so that is 1680 microseconds, then you need 50 more microseconds to latch the new colors, which is 1730 microsecons per strip, times 50 strips is 86500 microseconds... which is .0865 second which would limit your frame rate to around 10fps. That may be acceptable, it just depends.

ws2812 regenerates own signal so you do not have to worry about data degradation, unless you are running long jumper wires between leds.