Buzzer CN: 두 판 사이의 차이
(새 문서: {{#seo:|title=ArduWiki : Arduino 蜂鸣器指南|title_mode=append|keywords=Arduino, 信息科学, 创客学习, 绩效评估, 蜂鸣器, Arduino作品, 毕业设计, Arduino示例代码|description=介绍如何使用Arduino控制蜂鸣器(基础信息、电路、示例代码)。适用于信息科学与创客课程。}} 가운데|class=coders100 == '''概述''' == 蜂鸣器(Buzzer)是一种产生声音的装置,通常与像Arduino这样...) |
(차이 없음)
|
2025년 3월 27일 (목) 14:28 판

概述
蜂鸣器(Buzzer)是一种产生声音的装置,通常与像Arduino这样的微控制器板一起使用,广泛应用于各种项目中,如播放警告音、提示音或音乐等。蜂鸣器主要分为主动蜂鸣器(Active Buzzer)和被动蜂鸣器(Passive Buzzer)。
主动蜂鸣器与被动蜂鸣器
主动蜂鸣器(Active Buzzer)
主动蜂鸣器内部集成了振荡电路,只需提供电源即可自动发声。控制方式简单,主要用于发出固定频率(无法调节音高)的声音。
- 控制简单:只需通断电源即可发声。
- 固定频率:只能发出特定频率的声音。
被动蜂鸣器(Passive Buzzer)
被动蜂鸣器不同于主动蜂鸣器,供电后不会自动发声,必须通过频率控制才能发声。使用PWM(脉冲宽度调制)信号可产生各种频率的声音,适用于播放旋律或不同音调。
- 控制复杂:需要外部电路或软件进行频率控制。
- 多种频率:可发出多种频率的声音。
如何区分主动蜂鸣器和被动蜂鸣器
外观上往往难以区分这两种蜂鸣器,因此建议通过简单测试进行判断。
1. 标签与标识
虽然可以通过产品上的标签判断,但因产品不同标识不一,因此不一定可靠。
- 主动蜂鸣器:通常标有“Active”或特定频率(如“5V 12kHz”)。
- 被动蜂鸣器:多数不标频率,或标有“Passive”。
2. 测试
最可靠的方法是搭建简单电路进行测试。
- 主动蜂鸣器:接通电源后立即发声。
- 被动蜂鸣器:仅接电源不会发声,需输入频率信号后才能发声。
电路连接
蜂鸣器的形状可能因产品不同而有所差异,但原理相同。
若为2引脚类型
- 将蜂鸣器的正极(+)连接到Arduino的数字引脚。
- 将负极(-)连接到Arduino的GND。

若为3引脚类型
- 将蜂鸣器的+引脚(或VCC)连接至Arduino的5V引脚。
- 将蜂鸣器的-引脚连接至GND。
- 将蜂鸣器的信号引脚连接至Arduino的某个数字引脚。
※ 若使用的型号与下图不同,请确认引脚位置后再进行连接。

使用示例
1. 控制主动蜂鸣器
此示例将主动蜂鸣器响3次。
1-1. 电路连接
下图为3引脚蜂鸣器的接线示例。若使用2引脚蜂鸣器,请参考上述硬件连接部分。

1-2. 代码
const int iopin = 7;
void setup() {
pinMode(iopin, OUTPUT);
digitalWrite(iopin, HIGH);
for (int i = 0; i < 3; i++) {
digitalWrite(iopin, LOW);
delay(500);
digitalWrite(iopin, HIGH);
delay(500);
}
}
void loop() {
delay(10);
}
1-3. 运行结果
2. 主动蜂鸣器与轻触开关联动使用
按下轻触开关时蜂鸣器发声的示例。
2-1. 电路连接
本示例使用了INPUT_PULLUP电阻连接轻触开关。
关于PULLUP、PULLDOWN、INPUT_PULLUP的详细说明,请参阅轻触开关页面。

2-2. 代码
#define buzzer 6
#define btn 12
void setup() {
pinMode(buzzer, OUTPUT);
pinMode(btn, INPUT_PULLUP);
}
void loop() {
if (!digitalRead(btn)) {
for (int i = 0; i < 6; i++) {
digitalWrite(buzzer, !digitalRead(buzzer));
delay(100);
}
}
delay(10);
}
2-3. 运行结果
3. 使用被动蜂鸣器播放音阶
被动蜂鸣器通过控制频率可发出不同音高的声音。
本示例依次播放“哆来咪发嗦拉西哆”音阶。
参考资料:各音阶标准频率

3-1. 电路连接
请参考前文的电路连接部分。
3-2. 代码
#define buzzer 11
int numTones = 8;
double tones[] = { 261.6256, 293.6648, 329.6276, 349.2282, 391.9954, 440, 493.8833, 523.2511 };
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
for (int i = 0; i < numTones; i++)
{
tone(buzzer, tones[i]);
delay(500);
}
noTone(buzzer);
delay(500);
cnt++;
}
}
3-3. 运行结果
4. 使用被动蜂鸣器播放旋律
使用被动蜂鸣器播放简单旋律的示例。
可以基于本示例修改代码播放其他旋律。
4-1. 电路连接
请参考前文的电路连接部分。
4-2. 代码
#define buzzer 11
int numTones = 8;
double g_tones[] = { 195.9977, 220, 246.9417, 261.6256, 293.6648, 329.6276, 349.2282, 391.9954 };
// 唢0, 拉1, 西2, 哆3, 来4, 咪5, 发6, 嗦7
int cnt = 0;
void setup()
{
}
void loop()
{
if (cnt == 0)
{
tone(buzzer, g_tones[0]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[6]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[5]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[4]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(500);
noTone(buzzer);
tone(buzzer, g_tones[1]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[2]);
delay(250);
noTone(buzzer);
tone(buzzer, g_tones[3]);
delay(1000);
noTone(buzzer);
cnt++;
}
else
{
}
}
4-3. 运行结果
视频待上传
其他应用示例
蜂鸣器可应用于各种需要声音的项目中:
- 报警系统:当满足特定条件时发出警告音
- 计时器:提示时间到的声音
- 音乐播放:播放简单旋律或音效的装置
- 游戏:用于游戏中的音效或胜负提示音