Arduino简单应用(4)——蜂鸣器的学习

网友投稿 2019-12-19 10:59

arduino蜂鸣器的学习1

准备实验所用的硬件,如图所示:

https://cdn.china-scratch.com/timg/191221/10595414P-0.jpg2

按照下图中的电路,进行实验硬件的连接

https://cdn.china-scratch.com/timg/191221/1059543a1-1.jpg3

USB数据线连接Arduino UNO 控制器和电脑,选择正确的板型(Arduino UNO 和)、端口,点击上传,无误情况下软件会显示如下结果。(下图仅作格式示范)

https://cdn.china-scratch.com/timg/191221/1059545K2-2.jpg4

tone():作用是在一个引脚上产生一个特定频率的方波(50%占空比)。持续时间可以设定,否则波形会一直产生直到调用noTone()函数。该引脚可以连接压电蜂鸣器或其他喇叭播放声音。

语法:

tone(pin, frequency)

tone(pin, frequency, duration)

参数:

pin:要产生声音的引脚 frequency: 产生声音的频率,单位Hz,类型unsigned int duration:声音持续的时间,单位毫秒(可选),类型unsigned long

https://cdn.china-scratch.com/timg/191221/105955OB-3.jpg #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  
//这部分是用英文对应了拍子,这样后面也比较好看

https://cdn.china-scratch.com/timg/191221/10595C2V-4.jpg

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)如下图所示:

https://cdn.china-scratch.com/timg/191221/10595K316-5.jpg

如图所示,只需简单连接一个蜂鸣器,

无其他接线,程序上传到Arduino UNO控制器后,

蜂鸣器会发出一次类似游戏结束的声音,

然后停止,直到按下复位按键才会再次发声。

https://cdn.china-scratch.com/timg/191221/10595L0Q-6.jpg

注意事项:

蜂鸣器有正负极性,需要将正极连接到Arduino UNO控制器的数字IO接口,负极连接到Arduino UNO的GND引脚。

 上述代码中tune函数与duration函数

分别对应音符与频率

可参照音符表及音谱进行填写

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com