Close

Getting the project breathing

A project log for Custom Christmas Light Display

I've had 2 strings of GE ColorEffect LED lights for 6 years now - it's time to upgrade their controller!

scott-fScott F 01/05/2017 at 11:220 Comments

Step 1: Knowing that the lights are a 3-wire setup, I assumed (key word) they would be WS2811 based for LED control. Great! I know how to program those, this should be easy, right? Not so fast...

The GE ColorEffects are NOT WS2811 based. The use a proprietary protocol which, unlike WS2811, allows the controller to change 1 pixel by sending only that pixel's new data. WS2811 would have to update the entire string to change 1 pixel.

It was easy enough to figure out that the pinout of the GEColorEffects is:

Luckily, the GE ColorEffect protocol has been reverse-engineered by others - a quick search revealed several Github repositories where people already had Arduino code for controlling the lights. I found one repository that was useful (i.e. simple enough for a non-professional programmer like myself to understand), and started using it. Only problem - it was written for an Arduino Mega, and I'm trying to run it on an Uno (ATMega328), with the goal of eventually going to a Pro Mini (also an ATMega328), and used WAY more RAM than then 328 has on it. So I had to start stripping out and optimizing the code to get to just the bit-banging part and then build my patterns and code around that.

I got this part working, and am writing my patterns in the evenings now as I have time. Next steps will be to finalize the patterns, get 2 strings working off 1 controller so they appear as 1 long string, and then consider weatherproof packaging for the new controller and power supply.

Discussions