[Eric Arcana] has been creating animated holiday decorations for several years, which involved a lot of custom code to make things light up the way he wanted, pulling the microcontroller to make changes. Using ESP32s with remote software updates is easier, but [Eric] also wanted to make the code simpler. To achieve this he created Fade, a custom programming language/framework for controlling LED animations from the ESP32.
Fade is written for addressable RGB LEDs like the Neopixel/WS2812. It keeps track of the current color of every LED in the system and allows the user to define what color it should be at a specified time in the future. Time is specified using 10 ms clock cycles. The LEDs will smoothly change from one color to the other in the specified number of clock cycles, without needing to specify what the intermediate colors should be.
Code is written in simple IDE, running on a web server on the ESP32 itself, or on a remote Windows PC. The language is very simple, but still powerful enough to create complex LED animations. A key part of it is the ability to specify multiple concurrent state changes in just a few lines of code. [Eric] also included optioning to take touch button inputs and use them to update the animations. Another nice feature is a simulation window on the desktop IDE. It allows you to create custom LED layouts on PC, and test your code without needing to send it to the ESP32.
Addressable LEDs have made creating large LED installations a lot simpler, like this 6 foot LED ball or a LED Video Wall.
Continue reading “Dedicated LED Animation Framework For ESP32”







Apparently, the plan is to build a giant clock so he started off by making the first digit. To keep it cheap and simple the segments are made from corrugated cardboard which was carefully cut, folded, and then glued together. The light-diffusing lid is simply made from white paper. He used the ubiquitous WS2812B strips to light up the segments, but things turned out to be more complicated as he was not able to get enough strips to fill up all the segments. This forced him to cut up the strip into individual pieces and space them out by reconnecting the LEDs with wires. Cutting, stripping, and soldering 186 wires took him almost 10 hours. An Arduino Uno serves as the brains of the device and there is a nice Android app to control it via Bluetooth.