功能介绍
蜂鸣器模块,通常用作发声指示。在需要有声音提示的作品中常常会用到蜂鸣器模块。蜂鸣器通常分为有源蜂鸣器和无源蜂鸣器。这里的“源”并不是指的电源,而是震荡源。
有源蜂鸣器内部带有震荡源,只需要一通电就会发出声音,发出的声音单一,但是程序控制方便,只需个简单的高低电平控制信号就能工作(发声)。
无源蜂鸣器内部不带震荡源,单纯的直流信号无法让其发声,必须用PWM信号去驱动才会有声音产生。产生的声音频率可控,所以可以发出“哆来咪法索拉西”这样的音符。
区分有源和无源蜂鸣器最常用的方法是看蜂鸣器的高度,高度偏高的是有源蜂鸣器;还可以从蜂鸣器元件本身的背面查看区分,从背面可以看见绿色电路板的是无源蜂鸣器,被黑色灌注胶封住的是有源蜂鸣器,具体如图3.3.1所示。
图3.3.1 有源和无源蜂鸣器的区分图
对于蜂鸣器模块来说,驱动的控制信号也有不同。由于延续了Arduino的开源思想,各个设计者在考虑驱动信号时,都会有自己的设计理念。驱动信号的不同更多体现在有源蜂鸣器的模块上,通常分为高电平驱动和低电平驱动。具体表现为高电平驱动的模块,Arduino输出高电平时蜂鸣器模块工作(发声),输出低电平时蜂鸣器模块不工作(不发声);低电平驱动的模块恰好相反。常见的蜂鸣器模块会在模块上标注驱动方式(高电平或低电平),但是也有很多模块没有标注。具体的蜂鸣器模块如图3.3.2所示。
图3.3.2 蜂鸣器模块图
接线说明
Arduino | 蜂鸣器模块 | 说明 |
---|---|---|
VCC/+/5V | VCC/+/5V | 供电引脚 |
GND/G/- | GND/G/- | 电源地线 |
D9 | D(I/O)/S | 接Arduino的任意数字引脚都可以,模块数字量输出 |
引脚的顺序通常是不固定的,具体使用时请参看模块上的白色丝印标识 |
使用说明:
在使用时需要确认使用的蜂鸣器模块是属于有源还是无源蜂鸣器,是高电平驱动还是低电平驱动,如图3.3.2所示,有更多的模块会在模块板子上用白色丝印标出,至于没有标注清楚的,可以通过“功能介绍”部分的知识进行测试。
使用有源蜂鸣器时,只需要在需要蜂鸣器发声的地方通过程序控制蜂鸣器模块连接引脚输出高电平或者低电平就可以听到声音了。使用无源蜂鸣器时,需要用到Arduino标准库中的发声函数tone(),该函数的具体使用方法请参看语法手册相关部分。在Mixly编程时,发声函数模块在“执行器”—>“声音”下,模块演示为浅绿色。音乐的音调和频率的对应关系如表3.1所示。
表3.3 音调与频率对应关系表
唱名 | Do | Re | Mi | Fa | Sol | La | Si |
---|---|---|---|---|---|---|---|
音名 | C3 | D3 | E3 | F3 | G3 | A3 | B3 |
频率Hz | 130 | 146 | 164 | 174 | 196 | 220 | 246 |
音名 | C4 | D4 | E4 | F4 | G4 | A4 | B4 |
频率Hz | 261 | 293 | 329 | 349 | 392 | 440 | 493 |
音名 | C5 | D5 | E5 | F5 | G5 | A5 | B5 |
频率Hz | 523 | 587 | 659 | 698 | 784 | 880 | 987 |
音名 | C6 | D6 | E6 | F6 | G6 | A6 | B6 |
频率Hz | 1046 | 1174 | 1318 | 1397 | 1568 | 1760 | 1975 |
音名 | C7 | D7 | E7 | F7 | G7 | A7 | B7 |
频率Hz | 2093 | 2349 | 2637 | 2793 | 3136 | 3520 | 3951 |
参考程序:
Arduino IDE参考程序
/*
* 蜂鸣器播放歌曲
* 2 3 |4 - 42 7.6|5 - -
*/
void setup(){
pinMode(9, OUTPUT);
}
void loop(){
tone(9,293);
delay(500);
tone(9,329);
delay(500);
tone(9,349);
delay(1250);
noTone(9);
delay(50);
tone(9,293); //2
delay(250);
tone(9,493); //7
delay(750);
tone(9,440); //6
delay(250);
tone(9,392);
delay(150);
noTone(9);
delay(3000);
}
Mixly参考程序
在实际使用时,通常会采用有源蜂鸣器模块来做简单的声音有无的指示性操作;用无源蜂鸣器来做简单的音乐声音的发出指示。如果想要实现真正音乐的播放,建议采用MP3播放模块来实现。