Published on November 5, 2022

Here's an LED coat I put together in 2022, which runs over 700 individually addressable LEDs. This uses WS2812 IP65 144 leds/m style LEDs, powered off an Arduino Nano Every. Code here.

This coat went through a handful of iterations. Originally I was running this off a Raspberry Pico using python code - but this was running too slow and I was getting around 4 frames per second. I figured this was due to the language (and/or the hardware) so I switched the code over to C++ running on Arduino. The Nano Every is plenty powerful and is probably fancier than needed for this project - but it uses 35% of the working memory and runs at 60 fps for most of the patterns I throw at it.

When switching to C++ I also was able to dig into the FastLED libary code some more and found a ton of example patterns that are easy to modify and showcase some pretty cool functions for designing patterns - like easy conversion between HSV and RGB, sin wave functions, fades, mixing etc., all stuff I usually had to write myself on the python side of things.

I also iterated on how to best diffuse the LEDs. Originally I was using 60 leds/m strips and diffusing with white paint, painted over the waterproof cover. This ended up being a terrible idea as white paint just ends up getting everywhere, and I should've done more to seal the paint. I even tried adding scotch tape over the top of the strips, but this just looked cheap & bad.

Next I tried using aluminum channels, like I use for Lightdream. I found some that were flexible - they do bend, but they were still extremely stiff and formed a weird shape around my body. The flexibility in the shoulers wasn't really flexible enough ex. they couldn't wrap around my shoulders.

Eventually I decided this wasn't the outfit where I was going to have "great diffusion" - but I did increase the LED density and lowered the brightness, which lets me create smoother patterns and hopefully won't hurt people's eyes when they stare at it.