As previously mentioned I did som exploration of ESP32 mesh functionality and RGB leds for a project involving the local maker space where i failed to force mesh node status. After I gave up on that idea I managed to create som fun stuffs with the LEDs instead. The code is available here

First iteration was to just have the LED blink in a chosen colour but that was a bit boring so when a friends started talking about controlling attack, decay, sustain and release my toughs went to some kind of sequencer/sampler.

So I created a web UI with squares in a grid and a tempo-setting. The grid is 16 squares wide and you can set the number of rows. Each square in the grid can be set to it’s own colour, and there is shortcuts to set the whole grid, a column, or a row to a specific colour. When clicking a square a colour-picker pops up for easy selecting. The tempo-setting sets the tempo from 50ms to 2550ms in steps of 10ms, any lower than 50ms and the ESP32 seems to struggle.

When hitting hitting play all the nodes in the mesh will sync up and display the correct colour all at the same time. Below are some tests I created.

Since it’s a bit tedious to set the colour value of 255 squares there also is a export/import function that uses CSV. The rainbow effect above was created in Excel and exported as a CSV. This version of the project is available in the git repo with the tag only-builtin-effects. But the idea to change up the design and create a plugin-structure so other could create effects without having to think about the mesh-functionality, or the OTA updates, just be able to code some cool RGB-effects. The current state of the repo is still Work-In-Progress, the main bit missing is having the plugins supply their own web-ui, and finishing off the external webserver idea.

If you’re interested you can find the code on GitHub and even contribute.