Interactive Christmas light display with custom button controller

dxmxgxd

New elf
Joined
Oct 27, 2023
Messages
4
This took quite a bit of tinkering to get working correctly but I'm really happy with the result for this Christmas. The setup uses an ESP32 microcontroller flashed with WLED to control the pixel lights, another ESP32 and a Hanson Electronics 2811DC2-30 to control the string lights. The button control box is yet another ESP32 running ESPHome to control the LCD and respond to the button presses. There's also a small speaker to play a random sound when a button is pressed. And one more ESP32 inside the box controls the lights on the outside of the box. I also have Falcon Pi Player running a series of xlights sequences, and using Node-Red behind the scenes to simplify the logic and integration.



On the control box side, the code for ESPHome controls a dancing Santa with falling snow and animated baubles cycling through a set of colours. When a button is pressed, a corresponding colour-themed playlist is played through FPP. To gamify it a little I added a leaderboard to see which colour is the most popular (so far green is winning!) :)
A countdown timer keeps the playlist going, as well as preventing too-rapid mashing of the buttons.





I'm keen to get ideas on what I can include next time around - if you've got any thoughts I'd be happy to hear them.
 
Very nice :)

I'm really close by in Trinity Gardens, if you have time you should swing by and compare notes. We seem to be doing a lot of similar stuff (interactivity, node-red etc)
 
Very nice :)

I'm really close by in Trinity Gardens, if you have time you should swing by and compare notes. We seem to be doing a lot of similar stuff (interactivity, node-red etc)
Thank you! Will probably be going on a light drive tonight so will drop past.
 
This is something I've been considering including in my display, a button box out the front that will make the show (or sections of it) light up different colours/sequence to what the main show is doing. This looks great :)
 
With the wings I get a lot of kids just pushing the buttons all at once and when people are trying to take photo's with the wings
Try to work out a system where the button runs a sequence for a set time before it can change to the next sequence of colors and the button's don't light up when a sequence is running
 
With the wings I get a lot of kids just pushing the buttons all at once and when people are trying to take photo's with the wings
Try to work out a system where the button runs a sequence for a set time before it can change to the next sequence of colors and the button's don't light up when a sequence is running
I've added a 5s delay with each button press, which corresponds to duration of the colour playlist. Any buttons pressed during that time don't have any effect. Seems to work pretty reliably.
 
We have buttons for our display. We run a "background" sequence. Just some red white and gold colours and repeating patterns.

Out the front we have 5 bit buttons. Each button has a "theme" and uploaded songs are prefixed with matching theme with a specific prefix.

All our sequences are uploaded as either
pop_<sequencename>
sing_<sequencename>
reason_<sequencename>
non_<sequencename>
kids_<sequencename>

If anything is playing apart from the "background" sequence the buttons do nothing. If there is nothing playing or the background sequence is playing the buttons will start playing a sequence from the matching category. Once finished the background sequence plays again on loop.

This keeps the lights very unoffensive most of the time no one is there. There is no real flashing just a bit of a twinkle to the background sequence and means that there is no need to have a push button for sound as its a push button for the whole shebang. I had to tweak it a bit with the move from fpp commands to the api this year but its been a big hit with both visitors who love pressing the button and feeling a part of it and the neighbors who like that its not just flashing and playing music for the whole month of December.

PXL_20241126_104131579.jpg
 
Back
Top