第 21 课 简单创作 - 抢答器

介绍

在问答比赛中,尤其是娱乐活动(如竞技答题活动)中,主办方为了准确、公正、直观地确定答题者的座位号,往往会采用蜂鸣器系统。

现在系统可以用数据来说明判断的准确性和公平性,提高了娱乐性。同时,也更加公平公正。在本课中,我们将使用一些按键、蜂鸣器和 LED 来制作测验蜂鸣器系统。

所需器件

../_images/uno25.png

原理图

按键1、2 和 3 是抢答按键,按键 4 是重置按键。如果先按下按键 1,蜂鸣器将发出蜂鸣声,相应的 LED 将亮起,所有其他 LED 将熄灭。如果要开始另一轮,请按按键 4 重置。

原理图如下所示:

../_images/image1831.png

实验步骤

第 1 步:搭建电路。

../_images/image184.png

第 2 步:打开代码文件 Lesson_21_Answer_Machine.ino

Step 3: Select the Board and Port.

第 4 步:点击 上传 按钮来上传代码。

现在,首先按下按键4开始。如果你先按下按键1,你将看到相应的 LED 亮起,蜂鸣器将发出哔哔声。然后再次按下按键4进行重置,然后再按下其他按键。

../_images/image185.jpeg

代码

代码分析

这个实验的代码可能有点长。但是语法很简单。

这个代码用到了6个嵌套if语句。

  • 第一个if语句用来判断按键4是否按下。

  • 第二个if语句用来再次判断按键4是否按下,用来防止误触。若确定按下,则让flag为1,同时让LED点亮。

  • 第三个if语句用来判断flag的值,如果为1(按键4已按下),此时读取按键1,2,3的值。

  • 第四-六个if语句用来分别判断按键1,2,3是否按键,如果按下,则让LED点亮,蜂鸣器出声音。

Alarm() 函数

void Alarm()
{
for(int i=0;i<100;i++){
    digitalWrite(buzzerPin,HIGH); //the buzzer sound
    delay(2);
    digitalWrite(buzzerPin,LOW);  //without sound
    delay(2);                     //when delay time changed,the frequency changed
}
}

这个函数是用来设置蜂鸣器发出的声音长度和频率。