USBtinyISP hanging off the board for development.
The circuit for this consists of little more than an ATtiny85, a couple TRIACs to switch the 120VAC for the LED driver, and a off-the-shelf 5V power supply. Note that I used essentially none of the protective circuits around the TRIACs (snubbers, current limiters on the optos, etc), so before implementing TRIACs, understand what trade-offs you can make in your design. I probably could have even gotten away without the second larger TRIAC being triggered by the optoisolated one, since I'm only driving 6W worth of LEDs...
One thing I found very surprising about the LED driver that came with the sign was that it was not just two separate LED drivers for the walk and stop signals. One of the two lines was power for the entire sign, and the second line was a latch that switched from the hand to the walk signal. This means to go from the hand to the walk only requires pulsing the latch line, but there is no way to go from the walk signal back to the hand without completely removing power from the sign (watch a walk signal the next time you're out; you'll see that it always turns the walk off, then starts blinking the hand.).
- 1 GE cross walk signal ($10 at Weird Stuff in Sunnyvale)
- 5V power supply scavenged from an old cell phone charger
- ATTiny85 (flash space is probably overkill, but it's the smallest AVR I had. A tiny25 would probably work) (Digikey $2.26)
- 2x >=400V optoisolated TRIACs (MOC3063 - Digikey $0.74)
- 1x >=400V 10A power TRIAC (overkill, for 6W of LEDs) (Q4010R5 - Digikey $2.26)
- 2x 1k resistor
He really appreciate it, and it was a nice finish to the long lasting mark I left at that internship...