I have a friend and coworker who is a rock and roll drummer. His cubicle is next to mine at work and so he sees and hears about all of my electronics and software projects. It's been more than a year so I can't even remember how this all happened but I believe that he saw me using a high brightness LED one day. He asked me how hard it would be to make a metronome for drummers that was visual. Like most things these days, a visual metronome has probably already been invented. But his idea intrigued me and, because I am usually bored and need something to focus on, I decided to give it a try.
I’ll apologize right up front: I didn’t take many pictures of this project. I didn’t start it out thinking I would write an Instructable for it (it was before I was on Instructables). So if you decide to build this you’ll have to do the best using the schematic, the software and the couple of pictures I have provided. I gave the whole thing to Mike and I haven’t seen it since. He does frequently tell me how much he loves it. He told me that he uses it now every time he plays. You’ve got to love a project that leaves the nest and never returns. I can’t say that’s happened my whole career.
Step 1: LEDs
I decided to use LED strip lights. Adafruit makes what it calls a NeoPixel Sick: a strip of 8 LEDs that is small and narrow on a PWB (https://www.adafruit.com/product/1426). I decided to use two of these and connect them via cables to a central box that would house a microcontroller, a display and some way to control all of this.
The LEDs on the NeoPixel run at 5V and, as you will see, I will be using a 3.3V microcontroller. This means I need a way to voltage shift the control signal between the 3.3V microcontroller and the NeoPixel. I chose to use a SparkFun Logic Level Converter (https://www.sparkfun.com/products/12009). I’ve used them before and they are easy to use and, at about $3, inexpensive (for me).
Using two 6 foot long stereo cables I send the translated 5V control signals along with 5V power and ground to the two NeoPixels. I designed and 3D printed an enclosure for the NeoPixels that are plugged into a carrier board with a female stereo jack to accept the cable.
Step 2: Microcontroller
Trying to decide what microcontroller board to use for a project these days can be challenging. I used to design my own but, in the last decade, so many different inexpensive Open-Source boards have become available it makes no sense to try anymore. For the visual metronome I wasn’t sure how much power I would need. My guess was not too much. I mean, how hard would it be to set up a timer to drive an interrupt to burp out whatever signals I needed? I also would need a display and some way to enter information. Even this might not need a lot of processing.
I decided to use a Teensy 3.2 as the controller. The Teensy 3.2 is made by PJRC and I have been using them for a lot of projects lately. It’s a 32 bit ARM with DSP extensions and speeds up to 96 MHz (overclocked). They cost around $20 so they are very reasonable. Yes, I agree with those of you who might be saying this is too much microcontroller for for this application. But, the Teensy has some hardware and software facilities that might come in handy and, I’ve been using them a lot lately so, what the heck.
Step 3: Display
For the display I am using an Adafruit Monochrome 128X64 OLED graphic display. These run at the 3.3V like the Teensy making the interface easy.
I use a series of menus to display options and status to the operator. To control the menus I am using a rotary encoder I picked up through Sparkfun (https://www.sparkfun.com/products/10982). I can use the encoder to go through menus and the integrated push-button is used to select items. This device also has an integrated LED that can be used as an alternate display.
Step 4: Enclosure
I designed and 3D printed the enclosure for the electronics. You can see this in the picture at the beginning of this write-up. You obviously don’t need to use this. I made the box a little bigger than I wanted but, it gave me room to get my hands inside.
Step 5: Assembly
Again, I didn't take a lot of pictures last year when I made this. This overhead picture shows the location of the display, the encoder, the main protoboard with the Teensy and the smaller protoboard that has the level translation and the two female stereo jacks where the LEDs plug into the enclosure.
The main protoboard has a "breadboard friendly" DC jack that I got from Adafruit. It was positioned on the board so that it sticks out and lines up with the hole I made for it in the right side panel. Because I don't have a lot of details, you will have to fiddle with this in order to line it up. The same goes for the board where the female stereo jacks stick out of the back. Again, sorry I don't have more pictures for this.
Step 6: Code
The code. I think I have enough comments to help you get by making any changes. This project leverages a lot of code from PJRC and Adafruit (et al). I am absolutely certain that this can all be improved. I threw this together during my 2017 Christmas vacation in a matter of a few days. I am a firm supporter of Open Source hardware and software. I also believe in sharing technology and information in general (since well before it was fashionable).
Step 7: Operation
I guess the video I tried to embed didn't work...I'll make it a YouTube link. Stay tuned...
Step 8: Conclusion
My hope is that some smart person (I hope young person) will take this project and make it even better. And, if you do, share it. As I say all the time (especially lately): we need a smarter world. Pass on what you know.