一、用蜂鸣器模拟警报器
在上一章完成了LED的呼吸灯试验之后,我们关于LED的实验就暂时告一段落了,在接下来的几章里,我们将要接触到一些新的元器件以及新的模块,今天我们首先要学习的是,用蜂鸣器来模拟警报装置。
二、实验器材
- UNO控制板:1块
- 无源蜂鸣器:1个
- 面包板:1块
- 面包板跳线:若干
三、连线示意图

图4-1
四、硬件连接图

图4-2
五、硬件知识要点
首先我们先来看电路图,实际上这次的电路十分的简单,除了我们的UNO控制板之外,就只有一个无源蜂鸣器和两根跳线,有一点是我们一定需要注意的,就是蜂鸣器一定是无源蜂鸣器,目前市面上还有一种蜂鸣器是有源蜂鸣器,这种蜂鸣器用来做我们的实验是不行的。
将蜂鸣器拿到手以后大家可以发现,我们的蜂鸣器上面是标明了极性的,但是无源蜂鸣器实际上是没有极性的,只有有源蜂鸣器才是有极性的,之所以我们的蜂鸣器标明了极性,是因为为了节约生产成本,统一使用了有源蜂鸣器的封装。
六、程序编写
void setup()
{
}
void loop()
{
for(int i=200;i<=800;i++) //用循环的方式将频率从200HZ 增加到800HZ
{
pinMode(4,OUTPUT);
tone(4,i); //在四号端口输出频率
delay(5); //该频率维持5毫秒
}
delay(4000); //最高频率下维持4秒钟
for(int i=800;i>=200;i--)
{
pinMode(4,OUTPUT);
tone(4,i);
delay(10);
}
}
七、程序知识要点
在今天的程序中,我们使用了一个新的函数tone(),
tone()是一个调声函数,主要用于Arduino连接蜂鸣器或扬声器发声,可以让指定的引脚产生一个占空比为50%的指定频率的方波。
noTong(pin):停止指定引脚上的方波输出。
八、知识拓展
在本章节的知识拓展中,我们教给大家通过模拟电位器模块控制蜂鸣器发声频率:
void setup() {
Serial.begin(9600); // 初始化串口通信
}
void loop() {
int sensorReading = analogRead(A0);// 从A0口读模拟传感器的值
Serial.println(sensorReading);//串口输出独到的传感器的值
int thisPitch = map(sensorReading, 400, 1000, 120, 1500);
//输入的模拟值范围以一比例转换到适合值 (此为400—1000)
// 音律范围为 (120 - 1500Hz)
tone(9, thisPitch, 10);// 播放音频 接arduino9号端口,thispitch为播放频率,10为维持时间
delay(1);
}
[md]打开串口可显示A0口独到的模拟值,同时旋转模拟电位器便可改变蜂鸣器发声频率。[/md]