To kick off the new year, I teamed up with Aaron (he has a blog!) to put together a game show buzzer system for a project he's working on. We followed the directions from an Instructables guide, which were pretty straightforward. You'll want to read that all the way through if you want to follow in detail what we did; I'm going to talk about the highlights and gotchas we discovered, but not do a blow-by-blow replay of the Insructable itself.
Putting it together
|This should have us covered|
This was the first time I ever needed to kill a circuit board trace with an X-Acto knife; that was pretty fun!
Soldering and component connection were pretty straightforward. We checked with a multimeter as we went to verify all the connections were holding.
|Modified button. Not my best soldering work; I utterly melted the insulation on the wire leading to the reed relay.|
|Safety first, kids.|
The Project Box
I'm glad Aaron chose a box this spacious; it gave us a lot of options.
|Jacks in place on their shim|
|Jacks mounted and ready. Quality!|
|Battery brick mounted in-case alongside the UNO, with wires leading to the two-pole switch on the top case.|
The Instructable came with an example program that we could use, but we went ahead and wrote a new one from scratch (I'll provide a link when I can make time to upload it to Github). It's a bit shorter than the original and more dedicated to our purpose (simple first-buzz-in-wins indicator). We added a tie-breaker for more than one person buzzing in on the exact same scanning loop also; a winner is randomly chosen from those who buzzed in when that happens. The random number generator is seeded by reading one of the floating analog input pins; that's a nifty trick that I'll have to remember in the future.
Worth noting is that each button makes a different (slightly obnoxious) sound. We found a workaround to disable the sound that doesn't require cutting more wires in the buttons. The basic flow of information in the button ↔ control box circuit is this:
- Button depressed, which signals the control box
- Control box closes the circuit back to the button, which tells the button's onboard circuitry to activate lights and sound
- As long as the circuit back to the button is closed, the solenoid that enables or cuts the button's speaker is also closed.
Since the button's onboard circuitry has its own electronic latching logic, one only needs to close the circuit to the button long enough to trigger that latch. We found a 20 millisecond pulse to be enough to trigger the button's light without letting the sound play (any sound that might leak out in that brief period gets drowned out by the sound of the button physically clicking).
Future Development Opportunities
Here are some things we considered doing and might do in the future, but haven't tried yet.
Speaker in the control box
Though we disabled the audio on the buttons, it'd be nice to get some sound when they're toggled. A speaker embedded in the control box itself could do the trick; there are some helpful posts floating around out there about wiring a speaker to an Arduino.
Direct LED control
|Traces to intercept for LED control|
Looking at the circuit board for the LEDs, there are six clear traces between the control circuit and the LEDs. Cutting those and rerouting them to the input from the controller could allow us to bypass the button's internal circuitry for controlling when these buttons are lit, allowing us to light the button for longer or shorter periods and light the button without an input press. Combined with a speaker in the control box, the system could double as multiplayer SIMON.
We did one last test once we had the whole thing put together (thanks to Amanda and Mel for joining us for a short round of quiz game!).