Nice!
+1 for a write-up - things like the precautions to keep interference and noise from the coil
from disrupting the Arduino itself would be useful in particular...
It's a solid state device with huge transistors (350A current), no rotary spark gap or anything like that.
The PCB has an RCA input jack which takes 5V pulses of about 100us each (more than that and the fuse blows). Each pulse produces a single lightning bolt at the top of the coil (yes, it's that precise).
Make enough sparks, vary the frequency, you get music!
MarkT:
Nice!
things like the precautions to keep interference and noise from the coil
from disrupting the Arduino itself would be useful in particular...
At first I wanted to use a strike target for the sparks but you should forget that unless you have a big metal spike in the ground attached to the target. Without the ground spike it's just a huge EMP weapon that will crash/destroy every computing device in the area.
The strike target was a piece of wire in a vice. At one point I set the bench on fire because sneaky sparks were jumping from the vice down through the bench to the metal table leg (see pic).
Moral: Just send the sparks up into the air.
With the sparks going upwards there doesn't seem to be a massive amount of interference. The box the coil is standing on for the show is lined with tin foil as a precaution but the Arduino never had problems during the development. It was about 1.5m from the coil (the length of the RCA cable I was using).
As another precaution I fed the Arduino output through an optoisolator into a little PCB with a 5V battery and some resistors.
The program is pretty simple:
I used Timer2 output on pin 11 to generate individual pulses (which have to be very precisely timed).
Timer1 generates interrupts to play the tone (Timer2 pulses are started in the Timer1 interrupt handler).