WS2812B LEDs question - parallel vs series

I've used the WS2812 LEDs quite a few times, but always in "series" (I think that's a misnomer as I believe they are actually connected in parallel on the strtip, but what I mean is I always have the LEDs sequentially, so the first LED that's connected to the data wire is LED0, then 1, then 2 etc).

For a project I'm considering now it might be advantageous to connect two strips to a single data output. If I do this, am I right in thinking that the first LED on BOTH strips would regard itself as "LED 0", meaning they would BOTH (or indeed, all, if I have more than two) respond to RGB data sent to them?

For instance, if I currently send

strip.SetPixelcolor(0,255,0,0)

Then on a single strip, the first LED after the data pin will light up red.

But what if there are TWO LEDs attached directly to the data pin? Do the strips have some polite way of working out who goes first, or do they both agree they are pixel 0 and both light up red?

If I am to connect them in this way, are there any other issues I should be aware of? I know it will mean it is impossible to distinguish between the multiple "pixel zeroes", but in this instance since I want to drive all the strips with the same pattern all the time, that is not an issue.

Thanks!

GreyArea:
I've used the WS2812 LEDs quite a few times, but always in "series" (I think that's a misnomer as I believe they are actually connected in parallel on the strtip, but what I mean is I always have the LEDs sequentially, so the first LED that's connected to the data wire is LED0, then 1, then 2 etc).

If they're on a manufactured "strip", they are, most likely, in series. Series means DOUT to DIN from one to the next. The power and ground are in parallel, but it's the data lines that determine the type of connection.

GreyArea:
For a project I'm considering now it might be advantageous to connect two strips to a single data output. If I do this, am I right in thinking that the first LED on BOTH strips would regard itself as "LED 0", meaning they would BOTH (or indeed, all, if I have more than two) respond to RGB data sent to them?

For instance, if I currently send

strip.SetPixelcolor(0,255,0,0)

Then on a single strip, the first LED after the data pin will light up red.

That should work. The inputs require only 1µA, so ALL flavors of Arduino have plenty of "headroom" for driving these little guys. And yes, each parallel connected strip will address their LEDs beginning with LED 0, then LED 1, etc.

GreyArea:
But what if there are TWO LEDs attached directly to the data pin? Do the strips have some polite way of working out who goes first, or do they both agree they are pixel 0 and both light up red?

Since parallel connected strips have no "awareness" of their neighbor, they will behave as they would, if they were the only strip connected.

GreyArea:
If I am to connect them in this way, are there any other issues I should be aware of? I know it will mean it is impossible to distinguish between the multiple "pixel zeroes", but in this instance since I want to drive all the strips with the same pattern all the time, that is not an issue.

The only caveat is signal quality, and if parallel connection of strips will degrade the signal enough to push the waveshape [i.e. rise/fall time] outside the stringent specifications.

Keep the wires as short as possible, and a series resistor on each data line [that goes from the Arduino Out, to the first WS2812A DIN], at the WS2812A DIN side, might help. There's a lot of controversy about adding a series resistor. Some, say it's to limit the current should the dataline "ring" and produce voltages that exceed maximum values, or to reduce the slew rate -- presumably to reduce spike and/or ringing. It's more likely to tune "transmission impedance", and is all about snubbing reflections.

My advice? Adding a bit of resistance can't hurt. Adafruit recommends 300Ω to 500Ω. Though, I've seen forum posts by people reporting that much resistance made the LEDs go dark. I suggest trying it, and if the LED don't fire, try reducing it to 200Ω, then 100Ω, etc. The resistor is especially valid for long wire runs to the LEDs. In fact, if the run is very long, like in the range of meters, then you might need a transmission line driver.

Possibly the clearest, most concise and to the point answer I have yet received on this forum. Thank you sir!

Strip runs are likely to be in the cm/inch range...but I am looking at the 144 pitch LEDS, which means quite a few actual lights. IN fact...quick measuring maths exercise reveals I'm looking at 30x10=300 individual LEDs...

I'm guessing I've left the 5v out of the arduino far, far behind at that...? :slight_smile:

GreyArea:
I've used the WS2812 LEDs quite a few times, but always in "series" (I think that's a misnomer as I believe they are actually connected in parallel on the strtip, but what I mean is I always have the LEDs sequentially, so the first LED that's connected to the data wire is LED0, then 1, then 2 etc).

That's called "daisy-chaining", not series, as information is being handled, not an analog current.

For a project I'm considering now it might be advantageous to connect two strips to a single data output. If I do this, am I right in thinking that the first LED on BOTH strips would regard itself as "LED 0", meaning they would BOTH (or indeed, all, if I have more than two) respond to RGB data sent to them?

Both strips will work identically, they have no knowledge that another strip is connected

For instance, if I currently send

strip.SetPixelcolor(0,255,0,0)

Then on a single strip, the first LED after the data pin will light up red.

But what if there are TWO LEDs attached directly to the data pin? Do the strips have some polite way of working out who goes first, or do they both agree they are pixel 0 and both light up red?

Both light up red.

Given the high fanout of ATmega microcontroller output pins (40mA max), you can drive loads
of neopixels from one pin if you want.

GreyArea:
Possibly the clearest, most concise and to the point answer I have yet received on this forum. Thank you sir!

Strip runs are likely to be in the cm/inch range...but I am looking at the 144 pitch LEDS, which means quite a few actual lights. IN fact...quick measuring maths exercise reveals I'm looking at 30x10=300 individual LEDs...

I'm guessing I've left the 5v out of the arduino far, far behind at that...? :slight_smile:

Your welcome.

It sounds like you might be concerned about a long run of LEDs in a strip? No worries. Each WS2812A LED module has, within it, a signal conditioner. Thus, the signal is "spruced up" by each WS2812A unit. Theoretically, as long as you have enough current capability to run them, you should be able to cascade an infinite number of these little beauties. But, then you'll start getting into speed of light issues [I kid]. But, you also need to pay attention to max current issues through the power traces. The more of these guys you include in a strip, the higher the max current will be at the point where the supply is connected to the strip. For really long runs, it will be necessary to utilize multiple sources along the strip.
In fact, you may need to do that with 300 of these. Each of these has the potential to draw up to 60mA [20mA for each of three colors]. 300 x 60 = 18 Amps! You will, likely, need to spread that out. The current demand prognosis is a bit better if you know, for sure, that less than all three colors [Red/Green/Blue] will ever be on at the same time, or will always be proportioned to not exceed a certain level of current.

The "length of wire" concern is merely the wire between the Arduino Output, and the DIN input of the first WS2812A.

But, speaking of wires from the Arduino. There is no way the 5V output on a Arduino can drive 300 of these modules. You will need some sort of external power source. Also, be sure to connect the Arduino Gnd to the ground of this external power source. It is possible to also power the Arduino with this external source, but it's important to route power on separate lines. One set of power lines to the Arduino, and one set to the LED strip.

Adafruit talks about this on their NeoPixel catalog page: Adafruit NeoPixel Digital RGB LED Strip - White 60 LED [WHITE] : ID 1138 : $99.80 : Adafruit Industries, Unique & fun DIY electronics and kits