This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com)
This is a fun Arduino project involving 5 light-up keys, a speaker, a stepper motor, and a handful of printable parts. It requires some modeling, 3D printing, and soldering experience.
Step 1: Building
3D printing was a trial-and-error process for me. The dimensions were never
100% accurate, so mounting holes would move or shrink at random during the printing process. I had many wasted prints as I figured this out or as I made design changes through the course of development.
I designed the mounts to snap into place in the enclosure. Parts
were secured to the mounts using M2 or M3 bolts. For the switches, I used a Dremel to cut the case and mounted the parts with their included hardware. Don't neglect holes for the microphone and the Arduino USB and power ports in the case!
I sanded the shroud and the spinner in anticipation of priming and painting. I used Tamiya brand primer and paint as they seem to be highly recommended among 3D print artists and hobbyists.
With the Arduino and parts mounted, I started soldering. Color-coordinated ribbon cables make this a little easier for the switches and lights. A small breadboard section was also utilized for the power and return rails, as well as the RC circuit for the amplifier. The amplifier input jack was desoldered so that the wires could be soldered directly into place rather than waste time and money looking for a suitable connector.
I attached the shroud to the lid with some epoxy. Some putty might also work, but will not be as solid. Care should be taken with dimensions so as to leave room for the spinner to rotate inside the shroud. With parts in place and lid sealed shut, the final artwork was done with a Sharpie paint pen and some matte black acrylic to make the faces.
Step 2: Coding
The Arduino code is as shown in the pictures. It's basically a few loops and a bunch of conditional statements - not quite optimized, but functional and fun. Take care that the speaker in particular is on a PWM pin, or else the tone() won't function.