I have been using neopixels successfully in conjunction with the pi pico for a while now, however I’ve just started running into some problems. In my previous project I was doing a basic setup - one strip of 256 LEDs to one pin, external 5V DC supply, level shifter. Pretty much the most basic / vanilla setup you can do which is illustrated in this diagram (obviously pico instead of the PI, but you get the idea):
So far, so good. Next I’ve been attempting something slightly more complex by using three additional pins and the remaining channels on the level shifter, so now my circuit looks like this (please forgive the quality of this drawing):
(Also not each pixel strip is ~1m and contains 54 pixels, and each strip is connected to the pico by wires of 10cm, 1m, 1m, and 2m respectively)
As soon as I do this I start seeing one of the strips flashing a random LED pure white. Sometimes the whole strip will go white. Sometimes in between these extremes, so the effect seems unreliable / intermittent in terms of how badly the fault presents. If I then change my code to set the entire strip black, it won’t turn off (eventually it does, it’s like I have to send that signal a number of times and the strip eventually “steps down” to turn off). Coincidentally this strip is the one with the longest wires between the neopixels and the pico (2m, which the internet tells me is getting into bad territory but still acceptable).
Things I’ve tried:
- Switching picos
- Switching level shifters
- Reordering the strips
- Using two level shifters instead of one (ie 2 channels of each)
None of the above seem to make any real difference. Running each strip by itself is fine, as is two and three at a time. However the forth obviously reaches some threshold that I’m not aware of, and thus the issue presents.
I have read in some places (Adafruit forums) that adding capacitors across the + / - terminals smooths out any large current shift which could be the cause, or that noise on the signal line could be something to do with it.
Can anyone tell me definitively what might be wrong or other things I can try? Tempted to try the capacitor approach (written here for reference: Best Practices | Adafruit NeoPixel Überguide | Adafruit Learning System) they mention using 500–1000 µF or thereabouts.
Any help greatly appreciated, and thank you in advance!