WilsonTang_FinalProject(BuzzerSystem)


  Buzzer System

Introduction: 

            A buzzer system is a system designed to allow a certain number of players to determine the first one to answer by "buzzing in". Making a buzzer system according to the  http://science.energy.gov/wdts/nsb/high-school/high-school-regionals/hs-rules-forms-resources/make-your-own-competition-buzzer/ (plan for buzzer same to official one for National Science Bowl)  costs $300, a high price tag for up and coming clubs wanting to compete without sufficient funds. Thus I decided to make one for my school team/club. 

 

List of materials: 

      -Arduino Micro ( or other micro controller)

      - housing box ( made of multiple pieces of acrylic )

       - 8 buzzers

              Composed of

                - buzzer - momentary push button on top of cylinder

                - light - 10 mm LED housed on top of  small acrylic box

                - wires 

     - multiplexer

     - perfboards 

     - AC-DC power supply

     - switch 

     - buttons 

     - LEDs 

     - Molex 

 

Code : 

     Starts up, sets up pins, cycles through multiplexed pins 0-7 to see if buzzer was pressed. When a buzzer is pressed at that index it will go to a light the corresponding led and then wait for another button to be pressed on top of the box, when button is pressed the buzzer LED turns off, and the  button LED lights up to designate that the reset has happened and buzzer presses are now being looked for. 

 

//8 button goes to 0 led

//9 button goes to 1 led

//10 button goes to 2 led

//11 button goes to 3 led

//12 button goes to 4 led

//13 button goes to 5 led

//14 button goes to 6 led

//15 button goes to 7 led

int r0 = 0; //value of select pin at (s0)

int r1 = 0; //value of select pin at (s1)

int r2 = 0; //value of select pin at (s2)

int r3 = 0; //value of select pin at (s3)

int count; //which y pin we are selecting 

int buzzedPin;

 

 

void lightLED(){

  // sets multiplexer to be demultiplexer

  pinMode(12,OUTPUT);

  //lights corresponding LED

  switch(buzzedPin){

    case 0: r0 = 0 ;

    r1 = 0;

    r2 = 0;

    r3 = 0;

    break;

    case 1: r0 = 1 ;

    r1 = 0;

    r2 = 0;

    r3 = 0;

    break;

    case 2: r0 = 0 ;

    r1 = 1;

    r2 = 0;

    r3 = 0;

    break;

    case 3: r0 = 1 ;

    r1 = 1;

    r2 = 0;

    r3 = 0;

    break;

    case 4: r0 = 0 ;

    r1 = 0;

    r2 = 1;

    r3 = 1;

    break;

    case 5: r0 = 0 ;

    r1 = 0;

    r2 = 1;

    r3 = 1;

    break;

    case 6: r0 = 0 ;

    r1 = 1;

    r2 = 1;

    r3 = 1;

    break;

    case 7: r0 = 0 ;

    r1 = 1;

    r2 = 1;

    r3 = 1;

    break;

  }

  digitalWrite(A0, r0);

  digitalWrite(A1, r1);

  digitalWrite(A2, r2);  

  digitalWrite(A3, r3);

  digitalWrite(12, HIGH);

  while(digitalRead(2) == HIGH){

    delay(10);

  };

  digitalWrite(3,HIGH);

  digitalWrite(12,LOW); 

  delay(1000);

  digitalWrite(3,LOW);

}

 

void setup(){

  pinMode(A0, OUTPUT);    // s0

 

  pinMode(A1, OUTPUT);    // s1

 

  pinMode(A2, OUTPUT);    // s2

 

  pinMode(A3, OUTPUT);    // s3

 

  pinMode(2,INPUT); //nextQuestionButton

 

  pinMode(3,OUTPUT); //clicked button light

 

  pinMode(4,OUTPUT);//on light

 

  Serial.begin(9600);

}

 

void loop () {

  pinMode(4,HIGH); // shows that the system is on.

   for (count=0; count<=7; count++) {

     // resets the multiplexer to become input 

     pinMode(12, INPUT);

 

    // select the bit  

    r0 = bitRead(count,0);    // use this with arduino 0013 (and newer versions)     

 

    r1 = bitRead(count,1);    // use this with arduino 0013 (and newer versions)     

 

    r2 = bitRead(count,2);    // use this with arduino 0013 (and newer versions)     

 

    r3 = 1;

 

    //r0 = count & 0x01;      // old version of setting the bits

 

    //r1 = (count>>1) & 0x01;      // old version of setting the bits

 

    //r2 = (count>>2) & 0x01;      // old version of setting the bits

 

    digitalWrite(A0, r0);

 

    digitalWrite(A1, r1);

 

    digitalWrite(A2, r2);

 

    digitalWrite(A3, r3); 

 

    if(digitalRead(12) == LOW){

      Serial.println(count+8);

         buzzedPin = count;    

         lightLED();

    }

  }

}

 

 

Point of View : System is designed for a 8 players, 2 teams of 4 designated by different colored LEDs. (with one question reader). Used for practice for National Science Bowl. 

 

 

Paper Prototype:

See WilsonTang_FinalProject(PaperPrototype) picture

 

Verplank Diagram:

See WilsonTang_FinalProject(Verplank Diagram) picture

 

State Diagram:

See WilsonTang_FinalProject(StateDiagram) file

 

Sample Buzzer Picture: 

see WilsonTang_FinalProject(Buzzer) picture

 

Sample Wire Picture:

see WilsonTang_FinalProject(Wiring) picture

 

Video Link :

http://youtu.be/6qE3ZCRMvtY