本实验我们利用按键模块、蜂鸣器模块、食人鱼LED模块制作3路数字抢答器。
设计任务:
1、抢答器同时供3名选手获3个代表队比赛,分别用三个按键表示。
2、板载复位开关,由主持人控制。
3、当主持人启动“开始”键后,抢答开始。
4、选手在主持人启动开始后抢答,当警报响起表示抢答完毕。
5、抢答完毕后,主持人由三种食人鱼LED显示的状态决出谁抢到该答题权。
元件清单:
Zduino UNO × 1;
OJ传感器扩展板× 1;
USB数据线 × 1 ;
3p杜邦线 × 6 ;
食人鱼LED × 3 ;
蜂鸣器模块 × 1 ;
按键模块 × 3 ;
接线示意图:
Key1~key3分别对应接2、3、4号IO口位置。
蜂鸣器模块对应接5号IO口位置。
粉红、绿色、红色食人鱼LED分别对应接在6、7、8号IO口位置。
Arduino示例程序:
/*
[url=http://www.openjumper.cn/]www.openjumper.cn[/url]
日期:2013.5.18
IDE 版本:1.0.1
功能:复位主控板,抢答器处于初始状态,当3个选手按下按键抢答后,蜂鸣
器发出警报声音,随后观察3个LED的状态,如果是1号按键先按下则点亮粉红
色灯。2号按键先按下点亮绿灯,3号按键先按下点亮红灯。3个LED指示谁抢
到该题回答权。
*/
int key1=2;
int key2=3;
int key3=4; //定义按键输入数字口
int Buzzerpin = 5; //定义蜂鸣器输出数字口
int pinkLED = 6;
int greenLED=7;
int redLED = 8; //定义三个LED输出IO口,指示抢答的结果
void Alarm() //蜂鸣器发出声音
{
for(int i=0;i<100;i++){
digitalWrite(Buzzerpin,HIGH); //发声音
delay(2);
digitalWrite(Buzzerpin,LOW); //不发声音
delay(2); //修改延时时间,改变发声频率
}
}
void setup()
{
pinMode(Buzzerpin,OUTPUT); //蜂鸣器输出口置为输出
pinMode(pinkLED,OUTPUT);
pinMode(greenLED,OUTPUT);
pinMode(redLED,OUTPUT); //LED输出口置为输出状态
pinMode(key1,INPUT_PULLUP);
pinMode(key2,INPUT_PULLUP);
pinMode(key3,INPUT_PULLUP); //三个按键置为输入并且上拉状态
digitalWrite(pinkLED,LOW);
digitalWrite(greenLED,LOW);
digitalWrite(redLED,LOW);
}
void loop()
{
int i ,j ,k;
i=digitalRead(key1);
j=digitalRead(key2);
k=digitalRead(key3); //定义3个参数,分别存储3个按键的状态
if(i==1 && j==1 &&k==1) //状态为1表示按键未按下
return;
if(i==0) //如果1号按键按下,蜂鸣器发出声音,同时点亮粉红灯
{
if(i==0)
{
delay(10);
Alarm();
digitalWrite(pinkLED,HIGH);
digitalWrite(greenLED,LOW);
digitalWrite(redLED,LOW);
delay(100); //延时一段时间
}
}
if(j==0) //如果2号按键按下,蜂鸣器发出声音,同时点亮绿灯
{
if(j==0)
{
delay(10);
Alarm();
digitalWrite(pinkLED,LOW);
digitalWrite(redLED,LOW);
digitalWrite(greenLED,HIGH);
delay(100);
}
}
if(k==0) //如果3号按键按下,蜂鸣器发出声音,同时点亮红灯
{
if(k==0)
{
delay(10);
Alarm();
digitalWrite(pinkLED,LOW);
digitalWrite(greenLED,LOW);
digitalWrite(redLED,HIGH);
delay(100);
}
}
else //其他状态,直接返回
{
return;
}
delay(500); //延时500毫秒,避免下一次触发影响本次结果
}
连接实物图:
实验结束后,初学者可以发挥自己的想象,根据实际要求按照该思路增加抢答路数,同时也可以在此基础上改进程序及硬件连接,让您自己的多路数字抢答器更加完美。