An Arduino library for GE Color Effects G-35 holiday lights.
C++
Permalink
Failed to load latest commit information.
examples New for 2012-2013 season. Feb 5, 2013
images New. Dec 23, 2011
Creepers.cpp Halloween. Sep 27, 2012
Creepers.h Halloween. Sep 27, 2012
Cylon.cpp Refactor G35 into pure virtual class. Dec 23, 2011
Cylon.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Eyes.cpp Fix copyright. Oct 19, 2012
Eyes.h Fix copyright. Oct 19, 2012
G35.cpp Refactor G35 into pure virtual class. Dec 23, 2011
G35.h Two shades of orange in SpookySlow. Oct 1, 2012
G35String.cpp A more meaningful test sequence. Nov 27, 2012
G35String.h Added class documentation per spydergt1's request in issue 6. Jan 4, 2012
G35StringGroup.cpp Fix bulb address calculation when there are more than 2 strings in a Dec 3, 2012
G35StringGroup.h Added class documentation per spydergt1's request in issue 6. Jan 4, 2012
HalloweenPrograms.cpp SpookyFlicker. Oct 20, 2012
HalloweenPrograms.h SpookyFlicker. Oct 20, 2012
Inchworm.cpp Refactor G35 into pure virtual class. Dec 23, 2011
Inchworm.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
LICENSE New. Nov 17, 2011
LightProgram.h Added class documentation per spydergt1's request in issue 6. Jan 4, 2012
MEOPrograms.cpp Add first program from contributor MarkEMarkEMark. Oct 19, 2012
MEOPrograms.h Add first program from contributor MarkEMarkEMark. Oct 19, 2012
Meteorite.cpp Fix warnings. Dec 23, 2011
Meteorite.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Orbit.cpp Fixed one uninitialized mem error, and one OOB error. Dec 23, 2011
Orbit.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Orbiter.cpp Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Orbiter.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
PlusPrograms.cpp Fix warnings. Dec 23, 2011
PlusPrograms.h Refactor StockPrograms into .cpp and .h. Dec 22, 2011
ProgramRunner.h Fix switch_program_to() Dec 24, 2013
Pulse.cpp Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Pulse.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
PumpkinChase.cpp Add SpookySlow. PumpkinChase a little darker. Oct 1, 2012
PumpkinChase.h Halloween. Sep 27, 2012
README.md Updated README with easier 1.6 installation instructions Dec 22, 2015
Rainbow.cpp Do something simpler with pattern_. Oct 19, 2012
Rainbow.h Add first program from contributor MarkEMarkEMark. Oct 19, 2012
RedGreenChase.cpp Refactor G35 into pure virtual class. Dec 23, 2011
RedGreenChase.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
SpookyFlicker.cpp SpookyFlicker. Oct 20, 2012
SpookyFlicker.h SpookyFlicker. Oct 20, 2012
SpookySlow.cpp Two shades of orange in SpookySlow. Oct 1, 2012
SpookySlow.h Add SpookySlow. PumpkinChase a little darker. Oct 1, 2012
Stereo.cpp Refactor G35 into pure virtual class. Dec 23, 2011
Stereo.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
StockPrograms.cpp Wrap @80. Dec 25, 2011
StockPrograms.h Fixed one uninitialized mem error, and one OOB error. Dec 23, 2011
Twinkle.cpp Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Twinkle.h Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Worm.cpp Refactor: Split PlusPrograms.h into individual files, with .cpp/.h. Dec 22, 2011
Worm.h Halloween. Sep 27, 2012
keywords.txt New. Nov 17, 2011

README.md

Introduction

G-35 Lights, Green Read the blog post that started it all.

This library makes it easy to replace the controller in GE Color Effects Christmas lights with an Arduino, and to run much better light programs. If you can program C or Processing, it's pretty easy to make new programs, too!

See a demo. There is also a not-awful professional demo of the original, unmodified hardware.

Features

  • With your Arduino, Teensy, or pile of laundry lint that happens to contain an Atmel AVR ATmega, G35Arduino becomes a splice-in replacement for the stock G35 controller. Contains versions of the same programs that ship with the lights. Your spouse won't know the difference!

  • Also contains custom programs: Inchworm, Orbit, Cylon, Meteorite, just to name a few! Your spouse will know the difference!

  • Easy to add your own programs. If you can make it through the Arduino Blink tutorial, you can probably write your own light program!

  • Synchronizes multiple strings. Have them each run individual instances of the same light program. Have them each run different programs, but with synchronized program changes. Or combine as many strings as you want into a single mondo gigantic virtual string! (Number of physical strings is limited by the number of output pins on your microcontroller, as well as the memory requirements of the running light programs.)

  • Express your individualism! G35Arduino operates completely independently of requests from Twitter, Facebook, SMS, XBee, neighbors, and drive-thru spectators. You bought 'em, you should get to control what they do!

Requirements

  • Arduino 1.6 SDK. Earlier versions will work, but installation is tedious.

  • Any of the following: an Arduino or Arduino-compatible, a Teensy with Teensyduino or else flashed with an Arduino Leonardo bootloader. Also a plain Atmel ATmega of some sort, if you know what you're doing.

  • At least one working strand of GE G-35 Color Effects Christmas lights that you are willing to slice up and solder back together again.

Installation

  1. Download this project from GitHub as a ZIP file.

  2. In your Arduino IDE, look for Sketch → Include Library → Add ZIP Library …, then select the ZIP file you just downloaded.

  3. Look for the new G35Arduino submenu in your Examples menu.

  4. Upload the BasicExample sketch to your Arduino. You should see the pin-13 LED flicker as the sketch tries to send data to your lights.

  5. Chop off the stock controller on your lights, being careful to note the function of the three leads from the first light (from left to right looking at the first light pointing upward, they're V+, DATA, and GND).

  6. Put V+ on the Arduino 5V pin, GND on the GND pin, and DATA on pin 13, and your lights should come back to life!

I've been happily running two strands on my house directly off the Arduino (i.e., not using the stock power transformer) with an old USB power supply rated 5V/1A from a Kodak Zi8. Your mileage may vary.

Contributing

Source-code contributions are welcome. If you think you might contribute improvements back to the project, git clone into libraries/ instead of unzipping, and to avoid going insane, check the "external editor" option in the Arduino IDE and use a text editor directly on the library source.

We try to follow Google's C++ coding standards: 2 spaces, no tabs, 80 columns, and follow the existing naming/capitalization conventions in the code.

Further Reading

Credits