I have an existing project using an Arduino Yun that controls Christmas lights with relays to turn them on/off. There are currently 13 separate rows of lights on the (60 foot) tree, each plugged into a wall wart that's controlled by its own relay.

I'm considering adding the ability to dim the lights, so I wanted to figure out the best way to do it. The lights can all be dimmed "in unison" - there's no need for 13 seperately controlled dimmers. But I have to be mindful not to cause any "buzzing" in the audio equipment on stage where the tree is.

I've read about PWN, zero cross, and other terms and saw the zero cross tail from powerswitchtail.com that seem useful in the typical project. I'd like to be able to pull this off with no more than 2 "dimmers" for the whole project, if possible.

Where do I start, and how do I do it?

  • What voltage lights? What kind of lights? Where are the relays - mains or low voltage side?
    – Majenko
    Dec 19, 2015 at 13:49
  • Traditional 120v white Christmas lights. The relays are currently powertail switch relays, but as I add more modules in the future (for additional colors) I plan to use sainsmart 8 channel SSR relays (so, low voltage side in both setups). Dec 19, 2015 at 14:06
  • Do you have the budget to get some DMX dimmers? You could use the Arduino as your DMX controller. For example, something like this 4 channel dimmer.
    – dlu
    Dec 19, 2015 at 16:29
  • @dlu I'm powering all my lights from 2 power strips. so if I do as you suggest, with an arduino fix shield, could I plug my 2 power strips (for my 60 foot Christmas tree) into 2 (or 4, at most) outlets on a DMX dimmer? Or does each row need to be on its own outlet on the DMX dimmer? Dec 19, 2015 at 19:46
  • Basically the DMX dimmer gives you an outlet with a remote control that you can talk to programmatically. I suppose the big question is how much power you need to control. I think the DMX dimmer that I linked to is capable of handling about 5 A (~600 W) per channel (or maybe per outlet, there are two outlets per channel on that one. So depending on how much power you need you could divide up the load amongst the channels. Another approach would be to get one or more X10 dimmers. Looks like they run about $20 US for a 500 W dimmer.
    – dlu
    Dec 19, 2015 at 19:58

1 Answer 1


I can think of a couple of ways to approach this:

  1. Use a DMX dimmer, something like this 4-channel dimmer, or

  2. Use an household X10 dimmer.

DMX is used for stage lighting and there is some information on controlling DMX devices with an Arduino in the Playground where there is also some information on the hardware interface and shields, it looks pretty simple. DMX is a differential RS485 interface.

X10 is used for home automation, the signaling is done over the AC line. There is some information on using X10 and an Arduino library in the Tutorials.

Both seem like viable approaches, if you're working in a theater it is likely that they might already have DMX equipment and it would be as simple as hooking up to the gear in the house. Then you'd only need to add a shield or build the interface hardware.

  • For the DMX dimmer, since it's meant for stage/DJ use, does that also mean there won't be a hum in the sound system from nearby microphones, speakers, etc? And is there more compact DMX dimmers out there that might fit more nicely into a project box (smaller than, maybe, 6 inches on its biggest side)? Dec 19, 2015 at 20:46
  • I think that will depend on the dimmer, but yes, I'd expect them to be designed to take interference with other equipment into account. As to size, I don't know off hand. Since they are often close to the load they typically include the outlets and that makes them pretty big – the one I linked to has 8 outlets. But, there are probably DMX chips out there and the triacs they control aren't all that big you might be able to build something pretty small. But in a theatre the equipment might already be there, it might be as simple as hooking up to it with the tree & the Arduino.
    – dlu
    Dec 19, 2015 at 20:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.