Ok, this is a weird one. Doing an installation with a large ~35+ jumper. In the jumper, I have 3 repeater LEDs, about every 9 feet. The last LED before the jumper is #535. The first repeater LED inside the jumper is #537. If I try to light up #536, nothing lights, it’s like it’s a ghost LED that doesn’t exist but the code thinks it does.
Also, on the run AFTER the jumper (about 120 LEDs), it behaves fine on some patterns, but if I try something like “every other LED red” then it shows 2 red and 2 black. And a Chase animation doesn’t work on that strip.
Any ideas?? I’m using WS2813s, with power injected at two points.
Update – looks like the first LED in the jumper cable is responding to both #536 and #537.
@Yves_BAZIN I don’t have a handy diagram, but it’s basically like this:
Power Supply (5v, 12A)
Pixels 0-213
Jumper cable (~35+ feet, 3 repeater LEDs)
Pixels 218-535 (on a 2nd floor roofline)
Jumper cable (~35+ feet, 3 repeater LEDs)
Pixels 540-705 (with another 5v 12A power injection at the beginning of this strip, which effectively also serves the jumper in #5)
As I write this, I realize I’m using 2 power supplies and connecting both 5V and GND to the strips in in both directions. Should my 2nd Power Supply connect separately to the LEDs downstream from it and the LEDs upstream from it? I understand that with multiple power supplies you want to tie GND together but leave 5V separate. Though I’m not 100% sure how that looks.
The code for “every other LED” just steps through the array by iterating by stepSize, which in this case would be 2. colors[] is an array of colors to display (in this simple case, it’s just 1 color). This code works fine at several other installations, but obviously something screwy with this one. Maybe my first repeater LED in the jumper is bad.
void setColorBlocks() {
int pixel_num = startPixel;
int current_color_index = 0;
while((current_color_index < numColors) && pixel_num <= endPixel) {
for(int b=0; b<blockSizes[current_color_index]; b++) {
CRGB color = colors[current_color_index];
leds[channel][pixel_num] = color;
pixel_num += stepSize;
if(pixel_num > endPixel){ break; } //Stop the pattern if we’ve hit the last pixel
}
if (current_color_index == (numColors - 1)) {
current_color_index=0; //Reset the color index in the array
}
else {current_color_index++;}
@Ryan_Cush indeed to not wire the two 5V together but only the GND of each power.
Could you define blockSizes and the value of stepSize. looking at you code you want to light up blocksize[] leds of the same color. each leds being separated of stepsize.
the color changing each blocksize[].
so to have every other blocksizes should be always equal to 1 whatever the color and should be StepSize=2.
do not forget to ‘clear’ the strip before
@Yves_BAZIN Yes, your understanding of the code is correct. blockSizes is how many LEDS until you change colors (assuming colors[] has more than 1) and stepSize is the spacing.
Actually - after fiddling a bit with one of the cables, the “every other LED” pattern is working correctly on the problematic run! Except the chase pattern still isn’t working. Very odd. I am still wondering if I have a problematic LED in the jumper.
Or, maybe the power supply issue is causing this. That’s a bummer because we intended this power supply to feed in both directions!
@Ryan_Cush you wanted to have two supplies for 3 strips. either Two on the same
either you plug them like you did but you just have to cut the power line in the middle of the strip that has the two supplies link to it. this way each supply will provide for 1.5 strip. (the leds do not care about which direction goes the voltage
@Yves_BAZIN I had a typo – I only have 3 LEDs “disappearing” and those are the ones in the jumper. My ghost LED seems to have disappeared. So now it’s:
Pixels 539-704 (with another 5v 12A power injection at the beginning of this strip, which effectively also serves the jumper in #5)
We wanted the power supplies to be closer to the end points and both feed the middle (which is on a 2nd floor). It works great this way with 1 power supply. But there wasn’t a good way to run extra power from 1 power supply all the way to pixel 539.
Question – would the fact that both PS are tied together on 5V (via the LEDs) cause the type of behavior I’m seeing? Meaning the lights all work in a static pattern but get erratic in an animated pattern? (I’m doing my animations using EVERY_N_MILLIS_I in loop() to help avoid blocking issues.)
@Ryan_Cush is the ground of your controller plugged to the grounds of the supplies and the ground of the repetears. Sometimes erratic behaviors are linked to the ground.
About your power supply if i got it right you have plug both supplies to the ‘middle strip’. So if you connect power supply 1 to the start of the ‘middle strip ‘ and supply to en it’s end. The just cut the Cable that carries the +5v at led 485 this way the two +5 will not touch
@Yves_BAZIN My controller ground is connected to ground of PS 1 and also ground of the starter strip (which is connected all the way through to the end, including all LEDs and PS 2.
I like your suggestion and I plan to use it at another installation. May be able to do it on this one, but will be tricky because the middle of the LEDs is on a high 2nd story roofline that is difficult to reach. I tried cutting the 5V wire on the 2nd jumper cable but then the last set of LEDs didn’t light up at all, presumably because the repeater LEDs didn’t have enough power to do their jobs. I guess we will have to run additional power injections. I may also need to replace the first repeater LED which will be a huge pain because it’s mounted way up high!
@Ryan_Cush which controller are u using ? Which library ? I have noticed for instance with my esp32 that if you try to go ‘really fast’ my ws2812b do not follow. And I get artifacts along the way. I use FastLed with the command fastLed.delay.
@Ryan_Cush have you tried only one strip ? to see if you have the artifacts.
I would test each component (strip and power supply) seperatly to see if maybe one of them is faulty
It’s hard because of how everything is installed. Gonna try power first (separating 5V between sections of strip) and then look at the repeater LEDs. I’ve also read that on long runs, it can help to connect Data to GND at the end of the strip but I don’t know why that helps or if it’s totally safe.
Update here. As a reminder, this installation has 3 sections of LEDS (posted at the end as a reference). Right now, all sections work fine with static patterns. But if I do an animated pattern (like a chase, for example), the leftmost section (pixels 539-704) which is at the end of the run, will NOT animate. It usually just stays on a static pattern. For some patterns, it intermittently lights up, but not all the colors are right.
Here is the interesting part: if I ONLY turn on the LEDS in the last section (pixels 539-704), maybe a few more, then it works correctly, including animated patterns. So it seems to be related to power draw. Like, if all the LEDs are on, then not enough power is available to those LEDs to continue the pattern. But I’m injecting power between the working section and the non-working section so it should be getting fresh power. (And we’re running at about 10% brightness anyway to conserve power.)
I haven’t tried disconnecting 5V between the two different power supplies yet, just because it’s on someone else’s house and I haven’t been able to get time out there. But I’m wondering if that’s really the solution here, or if I just need thicker wire for the power in the two jumper cables? Any other ideas for what could cause this specific behavior?