Why your neopixels might not light up

Yesterday I rediscovered something that I have now learned many, many times. I’m hoping that writing it down in the blog will make it stick this time. Worst case it will turn up in a search next time I try to find out why my neopixels are flickering. It’s all about supply and signal voltages. A rule to remember is:

The voltage on the data signal for a neopixel must be at least 60% of the power supply voltage.

If your power supply is 5 volts and your data signal is 5 volts you are laughing (or at least grinning happily because it works). If your power supply is 5 volts and your data signal is 3.3 volts (which is the signal voltage used by the Raspberry Pi PICO amongst other devices) then you might not be smiling because things get a bit marginal.

Sixty percent of 5 volts is 3 volts, so in theory it should work with 0.3 volts to spare. However, if your power supply is up half a volt (which can happen) your pixels won’t light properly. Worst case your power supply voltage might vary a bit depending on load and you get pixels which work sometimes but flicker or fail to light every now and then. And it turns out that some neopixels are more fussy about the “60 percent rule” than others. So just changing to a different type of pixel can break a previously working device.

I had this problem with the pixels attached to the chocolate synthbox. I was powering the 8x8 pixel grid you can see above from the 5 volt output from the PICO device. And it flickered. Much unhappiness ensued. Devices were swapped out and reconnected to no avail. Then I remembered the 60 percent rule. And an issue reported on the PICO Chord keyboard. So, I attached the power for the pixels to the 3.3 volt output from the PICO. This solves my “60 percent problem” at the risk of raising another one, which is that the 3.3 volt output from the PICO can’t deliver much current for the lights. The good news is that if I keep the brightness levels down (which I need to anyway to stop light bleeding between the dots) it works a treat.

If you have this problem with your pixels I don’t advise that you do this every time because of the power supply issue. A better way of solving the problem is to use a level converter to lift the 3.3 signal voltage to 5 volts.