client: Personal Project
This is an evolution of a display / project I created last year. Unhappy with the simple on/off battery powered LEDs that come in most pumpkins, I decided to run a strand of pixel addressable LEDs under the display with multiple bulbs bunched together and stuffed inside the pumpkins. After putting everything together in 2023, I realized that I could utilize an Arduino program I had previously written to program a musical sequence on the display.
This year things have grown quite a bit—incorporating over 30 pumpkins and 250 indivdual LED pixels. I put together three musical sequences plus a piece of fictional marketing material to promote their performances.
View last years display here >
The pixel-addressable lighting in the pumpkins is comprised of five total strands of 50 bulb WS2811 LEDs split between two Arduino Unos. The standard Halloween lights are controlled via a third Arduino Uno inside a homemade light control box I constructed as a little summer project while in high school. It is connected to a relay board that allows me to toggle power to higher voltage things. There are also two LED DMX par lights connected to the show computer via a DMX to USB adapter.
WS2811 Pixel Addressable LEDs
Arduino Uno Microcontroller
xLights Project Sequence
Arduino IDE
The sequencing for the LEDs was done in an open source application called xLights. It communicates with the Arduino Unos using the DMX 512 standard over USB and each are defined as a controller in xLights. The program running on each Arduino is a modified version of DMXUSB_FastLED.ino created by Perry Naseck (DaAwesomeP).
This modified version disregards the FastLED library method of communicating with LEDs and instead includes the more efficient AdaFruit NeoPixel library—which supports WS2811 pixel strands. The code is constantly listening for DMX messages, that it reads into a 512 slot buffer that cycles through to set the Red, Green, and Blue value for a pixel. Those color values are then fed into the setPixelColor method of the strand and shown on it. The Arduino that controls the non-pixel lighting is running a further modified version of the program that instead looks for a value higher than 0 on the Red channel that it then uses to toggle a relay on and off.
The sequences I programmed in xLights are played back at a specific time using a companion program called xSchedule. The software runs a looping background show of ambient lighting effects and then at a certain time triggers things to switch over to each of the programmed sequences and then back to the ambient loop.