The sales people where I work have a weekly meeting and they have decided to have contests in these meetings.
Being a competitive group they needed a system to decide who “raised their hand” first to answer a question. This of course leads to the use of the Game Show type buzzer system.
Two things need to happen in this system. There must an indicator to show someone buzzed in and second, any other buzz ins after the first must be ignored. Seems simple enough.
For my system I only needed 4 inputs and one additional button to allow the host to reset the system.
Relays or discreet logic could be used to handle all of this. I was however under a time crunch and a cost crunch so I went the Arduino route. Looking at all of the parts involved I think this was done for under $20. The most expensive things were the momentary pushbuttons, but those were “free” as they came from parts from an old radio broadcast console.
For a case I decided that an Altoid tin would be fine. I had one sitting around and I only needed space to connect the buttons and to display the results via LED. The handles of the pushbuttons were cut from a piece of conduit (about 4 inches/10cm long). The pushbuttons were wired to the control box via a DB9 connector. This allows for the 5 pushbuttons I needed (4 contestant, one reset) . I used pins 1-5 for the button and pins 6-9 as a common.
With the construction in hand the electronics are next. All there is to this project is a barebones Arduino, some limiting resistors on the LED outputs, a few LEDs and a 5V regulator. In the picture you can see a fifth LED in the case. This was the pin 13 LED that I usually put in projects for testing the barebones build.
The software is equally easy to put together. Scan the 4 lines to see if they go low (I used the internal pull-up resistors to make the circuit easier), if a line goes low light an LED and then go into an endless loop of nothing to basically end the program. To start again you reset the Arduino. This is not shown in the schematic but it is done by pulling pin 1 low.
int button1 = 0;
int button2 = 0;
int button3 = 0;
int button4 = 0;
int chuck =1;
void setup() {pinMode(13, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);}void loop() {
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);digitalWrite(5, HIGH);
delay (200);
digitalWrite(5, LOW);
delay (200);
digitalWrite(6, HIGH);
delay (200);
digitalWrite(6, LOW);
delay (200);
digitalWrite(7, HIGH);
delay (200);
digitalWrite(7, LOW);
delay (200);
digitalWrite(8, HIGH);
delay (200);
digitalWrite(8, LOW);
delay (200);while (chuck=1){
button1 = digitalRead(9);
button2 = digitalRead(10);
button3 = digitalRead(11);
button4 = digitalRead(12);
if (button1 == LOW) {
digitalWrite(5, HIGH);
while(1) {
}
} // set the LED on
if (button2 == LOW) {
digitalWrite(6, HIGH);
while(1) {
}
} // set the LED on’
if (button3 == LOW) {
digitalWrite(7, HIGH);
while(1) {
}
} // set the LED on
if (button4 == LOW) {
digitalWrite(8, HIGH);
while(1) {
}
} // set the LED on
}
}
With some testing I found that the reset takes 1-2 seconds. While you are waiting you of course cannot buzz in. To let the users know the system is ready I added the quick LED scroll. This of course increases the time between reset and “ready to go” but it does let the user know that things the system is running and that each LED does in fact light up.
http://www.youtube.com/watch?v=8UfxOmglSBg
In looking into the ways other people created these systems I noticed a few people talking about ties. This is nothing that I worry about. If I was setting up a real contest I would be, but these are coworkers and the chance of getting sued is low











