Arduino项目——三路抢答器的设计

1. 抢答器简介  

        抢答器是通过设计电路,以实现如字面上意思的能准确判断出抢答者的电器。在知识竞赛、文体娱乐活动(抢答赛活动)中,能准确、公正、直观地判断出抢答者的座位号。更好的促进各个团体的竞争意识,让选手门体验到战场般的压力感。

      很多人制作的抢答器只是大概判断出抢答的选手,如果遇到选手之间几乎同时抢答的情况,则无法判断先后。会使得准确性、公平性大打折扣。

        完成本实验要用到的元件如下:灯的实验扩展成3 个按键对应3 个小灯,占用6 个数字I/O 接口。

2. 硬件准备

元件名称 数量
按键开关 3
LED 3
220Ω电阻 3
1kΩ电阻 3

3. 设计原理

        按键没有按下时,按键对应的引脚处于悬空状态,此时电平悬空。采用下拉电阻的方式让按键未被按下时的电平处于低电平。当按下按键时,电阻处于高电平,选手所对应的灯亮起,蜂鸣器发声。同时向串口发送所在位置的信息。判断选手按下按键的先后。

4. 代码和仿真结果

int beep=2;

int ledA=8;
int ledB=9;
int ledC=10;

int buttonA=3;
int buttonB=4;
int buttonC=5;

void setup(){
  Serial.begin(9600);
  pinMode(beep,OUTPUT);
  pinMode(ledA,OUTPUT);
  pinMode(ledB,OUTPUT);
  pinMode(ledC,OUTPUT);
          //设置电阻为上拉模式,当电平嵌入在高电平
  pinMode(buttonA,INPUT_PULLUP);
  pinMode(buttonB,INPUT_PULLUP);
  pinMode(buttonC,INPUT_PULLUP);
}

void loop(){
  if(digitalRead(buttonA)==0){    //判断开关A的状态是为低电平
    digitalWrite(ledA,HIGH);
    //digitalWrite(beep,HIGH);
    tone(beep,700,10);     
        //使用频率为700的波驱动蜂鸣器,持续发生10微秒                              
    //delay(1);
    Serial.println("A");
  }
  else{
    digitalWrite(beep,LOW);
    delay(1);
  }
  
  
  if(digitalRead(buttonB)==0){         //判断开关B的状态是为低电平
    digitalWrite(ledB,HIGH);
    //digitalWrite(beep,HIGH);
    tone(beep,700,10);
    //delay(1);
    Serial.println("B");
  }
  else{
    digitalWrite(beep,LOW);
    delay(1);
  }
    
  if(digitalRead(buttonC)==0){         //判断开关C的状态是为低电平
    digitalWrite(ledC,HIGH);
    //digitalWrite(beep,HIGH);
    tone(beep,700,10);
    //delay(1);
    Serial.println("C");
  }
  else{
    digitalWrite(beep,LOW);
    delay(1);
  }
  
  delay(20);
  digitalWrite(ledA,LOW);
  digitalWrite(ledB,LOW);
  digitalWrite(ledC,LOW);
}
Arduino项目——三路抢答器的设计_第1张图片 图1 电路连线图

Arduino项目——三路抢答器的设计_第2张图片

你可能感兴趣的:(Arduino,单片机)