"I'll go downstairs and fix this. I'll be back in about five minutes," Tom promised optimistically.
I asked if she was sure if it worked before, and she told me "Yes." I sadly apologized that I had somehow broken her toy or something, and she told me it was OK -- all the while giving me the "I love you even though you just broke my new favorite toy that I never really had and it didn't really work anyway" look.
Well, now... it turns out this was an opportunity. I had always kind of wanted to make one of those things, but the stand, fiber optics, and all the other little fiddly bits would've set me back about $30 or $40 or so, and, well, I didn't want to do it that much, you know? But here, fate had just handed me all the most important parts. In addition, I had a chance to maybe be a hero.
I stewed on it a day or so, and then I started digging through my parts drawers. I found an Atmel AVT ATTiny44A. I found some 100Ω resistors. I found an old circular prototyping board. I found a couple of spools of various types of wire.
Next, I pulled out KiCAD (which I am still learning) and put together a quick schematic.
Next, I pulled the LEDs from the toy's controller board and moved them (along with all the other parts) to my little proto-board. An hour or so later, I had fully soldered up a very ugly point-to-point wired PCB.
Finally, it was time to make those LEDs do something. I spent about a week getting it all up and running, and I'll admit that there's something going on in part of the code where I don't quite understand ("Why doesn't that do exactly what I want?"), but the end result was for me to be a hero. (Yay!) I presented my daughters this toy the other evening, and I showed them what I made it do. Originally, it turns out, it had only two modes: all on and spin. Now it does a bit more.
Here is a video of everything in action.
If you're interested, I've also created a PCB layout (which I have not had built, so I don't know if it's 100% correct), and I have the code available for download here.
This column was originally published on Tom Burke's Blog.