Off the back of the Map, Light & Projection experiments blog , here are some technical thoughts on Neopixels. We can set up strings of hundreds but this needs a couple of considerations, power and data. If we are connecting power at one end of a large string, the resistance in the wire increases over distance and eventually we will see LEDs dimming or misbehaving as a result of low power. The solution is to have multiple routes back to the power supply (perhaps every 50 LEDs or so). Also, if connected in a chain, WS2812 LEDs (typically used for Neopixels) pass data down a line on a single wire, the further away from the controller one gets, the slower the animations will be. We can’t really have more than 100 Neopixels in a chain without seeing a reduction in ‘frame rate’, but it depends on the effect needed and how many LEDs are controlled at once etc. A microcontroller can control multiple strings of LEDs and then the limitation becomes more about the processing power of the microcontroller.
Also, just to add a little more, there are some nice alternatives to the WS2812 LEDs, if the colour palette is suitable, then APA102 (or SK9822) LEDs are much better if fast animations (or high frame rate) are required. If better colour palettes are of interest the RGBW LEDs (eg SK6812) are meant to be much better – both these options work directly with the Neopixel and FastLED libraries for Arduino. One other thing, the libraries are not scaling the LEDs for human perception – they are just changing light energy on a linear scale from 0-255. Exponential math needs to be applied for better perceived/smooth change in brightness for humans! Unfortunately this doesn’t work brilliantly at the lower end of the scale because small numerical changes make a relatively big change in brightness, and at the moment we only have an 8-bit scale to play with. We might need to go shopping (SMILE).