NOTE: This project involves the use of 120V AC line voltage outside and in possibly bad weather. THERE IS A DANGER OF ELECTROCUTION AND DEATH if you are not careful. If you are not comfortable with this, either do not attempt this or seek professional advice from an electrician or other adequately trained person. I expressly disavow any guarantees, promises, warranties, or claims regarding the safety of this project. You undertake it at your own risk.
If you've decided to continue on, great! This project can be adapted to something besides a dreidel; it could be any interactive light display you want.
The project consists of the following major steps:
1) Constructing the symbols from coat hanger wire and attaching rope lights.
2) Constructing the Arduino controller box along with wiring for the lights.
3) Programming the Arduino.
4) Putting it all together.
This Instructable includes the schematics (Eagle files) and code for this project. I assume that you have the ability/knowledge/comfort to do the following:
1) Etch your own circuit board and solder components.
2) Conduct basic wiring (connect an extension cord cable to a plug, strip wire, etc.)
3) Work with basic hand tools.
If you're new to working with circuit boards, there are numerous tutorials out there on Instructables and at places like YouTube.
Check out the video below to see it in action. (And, yes, I know, shin means put one in the pot, not lose everything.)
Step 1: Construct the Symbols with Rope Lights
Obtain some extra coat hangers. If you have your clothes dry cleaned with any regular frequency, you probably have about 7 million of them hanging around. You'll need about 4-5 per symbol. Cut the hook off the top so that you have a majority of the hanger below.
While you can use wire cutters, I find that tin snips or other heavy duty cutters work best. Hold the wire because it will fly away when you cut it. Wear safety glasses and use gloves to protect yourself.
Note: Use the "full" coat hangers that typically hold shirts. The ones for pants with the cardboard roll to avoid lines in your pants do not have a wire that runs through the cardboard. This will work, but you'll be piecing together lots of little wires.
Next, straighten out the hangers. I use a vice which works great for both straightening and putting bends in the wire. You don't need to be super straight. You just want a somewhat straight piece to start from.
Make the Symbols
To make the symbols, I used some graph paper to layout things. Design the outer symbol first, since it involves mostly straight lines. You can adjust the inner symbols (nun, gimmel, etc.) to fit.
Take some straight wire and start bending it at the proper angles and lengths to make the shape. When you run out of wire, tape another to it using electrical tape. Overlap about 4-5 inches. Start at one end, wrap to the other, and then wrap back. It'll make a strong joint.
Obtain Rope Wire and Attach
You'll need to buy 120V rope light. There are many vendors. I got mine from http://www.noveltylights.com because they will sell 120V rope light by the foot with a plug at a decent price. To determine your required length, use a string to trace out the symbol. Add 5-10% to be safe. (Though this was more than enough for me.) Keep in mind that rope light can only be cut in 1 - 2' sections, so you can't plan on something like 10.5'.
If you can, get 3/8" 2 wire rope light. It's easier to bend and shape. If you can't, 1/2" 2 wire will do but you'll have to use more zip ties. My symbols are 1/2" and the green dreidel shapes are 3/8". (I had a good portion of a spool left over from another project.)
Attach your rope light to your symbols with zip ties. Put a zip tie immediately before and after each turn to closely follow the wire. Use electrical tape to cover up any transitions, as with "hay".
Congratulations! You've made dreidel symbols. If you just want to put them on your roof, you can stop here. But why stop here when we can make this thing interactive and all flashy-fady-neato to make people ooh and aah?
Step 2: Arduino Controller
This circuit does two things. First, it isolates the Arduino and the push button from line voltage with some optoisolaters and triacs. Second, it permits whatever control functions we want to use.
The input for the push button is on digital input #4 (pin 6). It's held high until pulled low with a push button. I used a simple momentary button connected to this pin via some speaker cable.
The board has 6 pins for a FTDI connection for programming.
Note: In the board file, you will notice a "top" trace. This was required to be able to fit everything on the board. You can use jumper wires, as I did, instead of a double sided circuit board. I made a mistake, however. I use common holes for some resistors and the jumper wire. This required me to drill larger holes to accommodate both the jumper wires and things like resistors. Make a separate hole so you don't have to do this.
Note: One of the triacs is unused. Originally, I was going to stack all the symbols on top of each other and use just one dreidel shape. However, when I did this, they blocked each other. As a result, I use only four triacs and have each triac drive both a symbol and its associated dreidel shape. You can modify the code to take advantage of this unused triac if you want.
Finally, pay special attention to the thickness of the routes that carry AC. If you're going to power a large load, you'll need an adequately sized copper run. My lights are relatively low power, so I don't need a lot.
Step 3: Control Box Construction
First things first. Get yourself a NEMA 4 box and some glands (cable grips) for the wires. Don't do this in a typical project box. It's meant to go outside, so you need to be watertight. It's worth the money; trust me.
Get yourself an enclosure that will fit everything. I got mine from McMaster-Carr. You'll also want glands that allow you to achieve a watertight seal between the box and your cords. I chose a clear one so I could quickly examine it to make sure it wasn't full of water or that white smoke they put in parts at the factory.
Outlets for Lights
I made up some "outlets" for the lights by wiring up some leftover extension cords to some leftover female plugs from another project (the "Santa Land Here" lights in the video). Wrap them with electrical tape to keep out water. Mine are grounded plugs, but I don't use the grounding since a) this is a low current application away from people and b) the rope lights themselves aren't grounded.
To punch holes for the glands, I use a knock out tool (see video). This is a great tool for knocking out clean holes to put the glands in. You could use a drill bit or spade bit, but it may be rough. Spend the money for a knock out tool. (McMaster-Carr has many sizes: http://www.mcmaster.com/#knockout-punches/=a0akhy.)
I did drill a separate hole for the push button to activate the "spin" mode. This wire is nothing more than speaker cable that runs out to the road. I sealed it with some RTV silicone to help maintain a watertight seal. (Yes, technically, I derated the box when I did this.)
Install Arduino and Wires
You'll want to hold your Arduino and it's power supply in place. I cut down some standoff posts and glued them to the box. Not the most secure thing in the world, but it works.
Hook up your wires for the light rope outlets to the circuit board and tighten down the glands. Hook up your wires for your push button to activate the spin mode. You'll need to tap off your AC line to power both the controller line voltage (what drives the lights) and the DC power supply (what drives the Arduino). See the schematic below.
This video explains a little bit more about the controller box.
Here's another one with a little bit more explanation on a few things.
Step 4: Program the Arduino
The code is pretty self-explanatory (if you've programmed an Arduino before).
The code basically runs one of two routines. In the "fade" routine, the zero-interrupt part of the circuit along with an internal timer, determines when to fire the triac in the 60 Hz cycle in order to control the brightness of the symbol.
Note that this particular example splits each half cycle into 128 parts so you can "dim" from 128 (off) to 0 (on). When I did this, the system flickered like crazy. I probably have some line noise. I changed the max dimming value to 124 and that solved the problem. (See the code for details.) If you get odd behavior when in fading mode, try lowering this value.
In "spin" mode, the triacs are simply turned on full to light the symbols in sequence.
Step 5: Put It All Together
Place the symbols where you want them and hook them up to the control box. I suggest wrapping the plugs (male and female connected together) with electrical tape to keep out moisture. I do this with all my Christmas lights.
Here's a trick to remove it later: When you're at the end of your taping, fold an inch of electrical tape back on itself (sticky side to sticky side). This will form a "tab" you can pull on so you don't have to go hunting for where the tape ended in order to pull on the end.
The push button input is connected to the control box by some speaker wire. Use a low resistance connection (speaker wire is great) as we pull this input low to activate the spin mode.
I placed my push button out near the street so passersby can use it.
I hope you enjoyed this. If it needs any clarification, let me know.