Arduino简单应用(4)——蜂鸣器的学习
准备实验所用的硬件,如图所示:
2按照下图中的电路,进行实验硬件的连接
3USB数据线连接Arduino UNO 控制器和电脑,选择正确的板型(Arduino UNO 和)、端口,点击上传,无误情况下软件会显示如下结果。(下图仅作格式示范)
4tone():作用是在一个引脚上产生一个特定频率的方波(50%占空比)。持续时间可以设定,否则波形会一直产生直到调用noTone()函数。该引脚可以连接压电蜂鸣器或其他喇叭播放声音。
语法:
tone(pin, frequency)
tone(pin, frequency, duration)
参数:
pin:要产生声音的引脚 frequency: 产生声音的频率,单位Hz,类型unsigned int duration:声音持续的时间,单位毫秒(可选),类型unsigned long
#define NOTE_D0 -1
#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
#define NOTE_D4 393
#define NOTE_D5 441
#define NOTE_D6 495
#define NOTE_D7 556
#define NOTE_DL1 147
#define NOTE_DL2 165
#define NOTE_DL3 175
#define NOTE_DL4 196
#define NOTE_DL5 221
#define NOTE_DL6 248
#define NOTE_DL7 278
#define NOTE_DH1 589
#define NOTE_DH2 661
#define NOTE_DH3 700
#define NOTE_DH4 786
#define NOTE_DH5 882
#define NOTE_DH6 990
#define NOTE_DH7 112
//以上部分是定义是把每个音符和频率值对应起来,其实不用打这么多,但是都打上了,后面可以随意编写
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
//这部分是用英文对应了拍子,这样后面也比较好看
int tune[] =
{
};//这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数
float duration[]=
{
};//这部分是整首曲子的节拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应么)
int length;//这里定义一个变量,后面用来表示共有多少个音符
int tonePin=5;//蜂鸣器的pin
void setup()
{
pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
length = sizeof(tune)/sizeof(tune[0]);//这里用了一个sizeof函数, 可以查出tone序列里有多少个音符
}
void loop()
{
for(int x=0;x
{
tone(tonePin,tune[x]);//此函数依次播放tune序列里的数组,即每个 音符
delay(400*duration[x]);//每个音符持续的时间,即节拍duration,是调整时间的越大,曲子速度越慢,越小曲子速度越快,自己掌握吧
noTone(tonePin);//停止当前音符,进入下一音符
}
delay(5000);//等待5秒后,循环重新开始
}
蜂鸣器
蜂鸣器是通过给电压材料供电来发出声音的。压电材料可以随电压和频率的不同,产生机械变形,从而产生不同频率的声音。
蜂鸣器又分为有源蜂鸣器和无源蜂鸣器两种,这两种蜂鸣器如图
有源蜂鸣器内部集成有震荡源,因此只要为其提供直流电源就可以发声。对应的无源蜂鸣器由于没有集成震荡源,因此需要在音频输出电路中才可以发声。
我们可以通过两种方式来区别有源蜂鸣器和无源蜂鸣器:
(1)通过外观判断
* 无源蜂鸣器的电路板通常是裸露的。
* 有源蜂鸣器的电路板通常是被黑胶覆盖的。
(2)通过万用表来测量蜂鸣器电阻判断
* 无源蜂鸣器的电阻一般为8 欧姆或16 欧姆。
* 有源蜂鸣器的电阻则要大得多。
有源蜂鸣器(a)和无源蜂鸣器(b)如下图所示:
如图所示,只需简单连接一个蜂鸣器,
无其他接线,程序上传到Arduino UNO控制器后,
蜂鸣器会发出一次类似游戏结束的声音,
然后停止,直到按下复位按键才会再次发声。
注意事项:
蜂鸣器有正负极性,需要将正极连接到Arduino UNO控制器的数字IO接口,负极连接到Arduino UNO的GND引脚。
上述代码中tune函数与duration函数
分别对应音符与频率
可参照音符表及音谱进行填写
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com