I’m writing this half in the hope that explaining it will cause the solution to pop to mind. But if anyone has any advice I’d love to hear it.
I’m running a test pattern, and four strips in, the signal isn’t getting past the end of one particular strip. It was a bit of a problem child to start with—I was losing one colour channel at this point when the whole thing was lit up white, but with a single pixel lit at a time or a less dense pattern, everything worked ok. I de- and re-soldered its signal wire and it stopped working completely.
- I am getting 5V across the strip that’s not working and before and after the fault
- I can not see any shorts
- I am getting 10s or so of mV between the ground on each strip and between the +5V on each strip
- I have replaced the pixel before the fault and the pixel after the fault, no dice
- Both the replacement pixels and the adjacent strips are wired up the right way around (Dout to Din, etc)
Nope, I’m still stuck. I’ll solder on the 10uF caps I bought as suggested by someone the other day, and think harder.

Where are you injecting power? For long or multiple strips, it’s best to inject power at either both ends of the strip, or each strip separately. Signal degradation will also bite you with long strips. I’m now always using a 47K resistor as a pull-down at the end of the strip. Before I started doing that I was having all kinds of issues with the signals getting reflected and or not able to reach the end because it simple degraded and not providing the proper edges to be detected.
How long are your strips, and how frequently are you injecting power?
Have you tried to light up that strip by itself to rule out a problem there? I agree with @Ashley_M_Kirchner_No on the use of resistors at the end of the data line. Also consider a 220-1k Ohm resistor at the front of the data line. The resistor at the front helps control the data line ringing and cross-talk.
+1 on “sounds like a power problem”
Power is being injected at each strip, at the far end to the failure. The strips are 32 LEDs long, a bit over 1m. I’ve just added the caps (at the end with the failure), which didn’t seem to help.
Unfortunately I don’t have a 47k resistor to hand. I’ll try the 220k at the front and report back—but I don’t understand enough to know why this might help, as the fault is about a third of the way through the whole shebang.
One final question—if I wire the Arduino’s output to a data-in pad midway up a contiguous strip, should that work, with the pixels “before” the signal is injected simply being ignored? That’s an easy enough thing to try.
@Robert_Atkins When the micro-controller goes High the actual voltage delivered from the pin can exceed 5+ for a very short amount of time and this would display as a spike on an Oscilloscope and it is called ringing. Adding the resistor is just a method to minimize ringing in your circuit. This is just a best practice.
@Robert_Atkins I don’t know what everyone else does, but I test each segment separately before wiring everything together. My recommendation is to disconnect the problem section and test it separately.
If you cut the line, yes. Meaning, where you plan on connecting that wire, cut the connection to the previous LED/driver. Otherwise you’ll end up with two signals traveling down the line at the point where you attach that wire.
I’m assuming you made sure the power supply can actually feed that much current to the strips, yes? How many strips are you using, and are they all daisy chained together (making for one loooong data line, from beginning to end.)
When you say ‘a single pixel lit at a time or a less dense pattern, everything worked ok’, that surely points to power issues. On a strip of 32 pixels, lighting them all white, you’ll be pulling 1.92 Amps (assuming 20mA per channel.) Multiply that by the amount of strips you’re using.
I have plenty of headroom, power-wise. It’s all hooked up to a 200W power supply. I bought a “Kill-a-watt”-like device which shows that the 3rd of the panel that is lighting up properly is pulling max 80W out of the wall on full-white. So I don’t think that is the problem. I’m also showing a nice 5.3V across the unlit strips, with a minimum of 4.2V across the fully lit ones.
Cutting the strips mid-section would be a massive pain in the arse, they’re all stuck down. And yes, it is all one 576 pixel long data line. I wasn’t suggesting there being two signal inputs, I’m saying I’d disconnect the Arduino from pixel 1 and connect it to pixel 136 or so (with pixels 1-135 left in the chain before it.) The signal’s not going to go “backwards” is it?
So a 200W at 5V will give you 40Amps which means theoretically you can run 20.83 strips of 32 pixels.
However, if 1/3rd of the panel pulls 80W, it stands to reason that the full panel will pull 80W x 3 = 240W. That PSU is suddenly starting to look small.
I still question how you have power wired up. I know you said you’re injecting it at each strip, but how are you doing that. If you have a single pair coming form the PSU that you’re running down the side of the panel and connecting each strip to that, it won’t work. The first strips will rob enough voltage from that to affect the later strips. You’re better off taking that single pair, soldering several “tentacles” to it and attach those ends to the strips. I know it doesn’t make sense, but trust me, it works. It’s the same reason a computer PSU has multiple connectors on it, as opposed to a single wire where you daisychain everything off of.
It’s dying at the end of the 7th of 18 strips so that’s technically more than a third. And that 80W is at the socket, not on the 5V line. There’s plenty of power—as evidenced by the fact it the whole panel worked a few days ago. I am also now plumbing power into my power bus at the start, middle and end of my power bus up the left hand side as you suggested.
The problem started after I’d done that and changed my test pattern sketch to do a one pixel “chase” in R, then G, then B, then white, followed by a whole-panel R, G, B then 16 grey levels up to full-white. The “chases” were going across the whole board fine, but I was getting the wrong colours downstream of the problem-child pixel for the solid colours.
Now nothing happens after the end of that 7th strip, ever since I de- and re-soldered the data connection at its end. It really looks like they’re not getting power or signal at all—it’s not flaky, or wrong, or inconsistent, they just don’t light. Despite the fact I de- and re-soldered that data wire a couple of times, replaced the pixels on either side of the join and I am seeing a good 5V across the 8th to 18th strip. I’m totally perplexed.
Also remember the Kill-a-watt device measures the AC power drawn out of the wall not the DC power going into the strip. I would check the power supply rating it should say 5 volts @ 200 watts or 5v at 40 amps.
Ok, humor us, take that so called ‘problem child’ strip out of the setup. Desolder the connections on both ends, and connect a wire pair instead, going from the end of the previous strip, to the beginning of the one after, bypassing it completely. What happens?
Is there a ghetto way to check the signals line without a scope or a logic analyser?
Yeah, stick a single LED on the clock line. Just your run of the mill standard through hole LED with a resistor soldered on its leg. Connect it from the clock line to ground. If the clock line is working, the LED should flicker. I’ve never tried that for the data line but I suspect the same is true.
… and don’t ask how I know that by the way. 
Hrm. Maybe someone could write a diagnostic sketch for the OTHER end of the strip that measured voltage and maybe even sort of kinda of monitored clock and data. Could probably even be done well on an ARM…
I dub this hypothetical sketch “Willie Mays”, as it catches rather than throws.
Not it! Won’t even get into the pain of writing a ws2811 catcher here 