mikalhart is right, I could have cleaned up the code a bunch. My goal was to write the first revision of the code as quickly as possible so I could get the hardware out of the way. I'm concerned about this project completion date slipping past Halloween!
I figured once I had usable hardware, I'd go back and allow myself to work the code over again. That way if version 2 doesn't get done in time, at least I'll have flickering pumpkins of some sort on my porch.
I got a bit nervous when version one of the hardware (with the LEDs hooked directly up to the pwm output pins) suddenly stopped working 2.5 days into a burn in test. All LEDs were at 100%, and no signs of life from the AtMega168. After cycling the power, nothing lit up at all. I put the chip back into an Arduino thinking it was probably toast, but I was able to re-download the sketch and all is well again. So I guess somehow the combined drain of the 6 LEDs (each one was around 20mA) somehow made the AtMega168 loose the sketch? I'm hoping the Darlington array keeps the AtMega168 happy.
Next I need to move the chips to protoboard (at least the AtMega168 will be socketed) so the dog walking by won't be able to pull out wires. Then I'll feel like I can get back to adding features.
I'd love to improve the flicker algorithm, add a wind switch, some sort of proximity detector, etc. I don't know if I'll add a dance pattern. For this year at least I just wanted to simulate the candles so I don't have to keep going out to re-light them.