In order to keep everything static, the LEDs have two components. There’s the NeoPixel LED Object instantiated in the Driver Sketch like so…
And there’s the LED Structure, which contains pointers to all of the variables that the LED strips could possibly use. It looks something like this…
By having everything contained within this structure and calling variables through their pointers instead of passing them by copies,
I am able to prevent the creation of new blocks of memory,
and subsequently prevent massive amounts of internal memory fragmentation that could potentially crash the Arduino.
I have found that this massively improves stability at the cost of only a few extra clock cycles.
Hardware
Hardware wise, you only need to make sure that the LED strips you’re using have strong enough pads,
otherwise you’ll end up with all sorts of loose ground connections, data connections.
Loose connections were by far was the biggest issue I ran into over the course of the project…
This easily resulted at least 70 hours worth of debugging and lab time. This can be offset by soldering the wires a little further up the strip as to alleviate any torque, like so…