我们编写一个 Arduino 程序,简单展示下无源蜂鸣器的使用,通过无源蜂鸣器自动播放《小星星》。
下面是示例代码:
#define BUZZER 4 // 定义无源蜂鸣器的引脚为数字 4
// 小星星的音符频率(单位:Hz)
int melody[] = {
262, 262, 392, 392, 440, 440, 392, // 一闪一闪亮晶晶
349, 349, 330, 330, 294, 294, 262, // 满天都是小星星
392, 392, 349, 349, 330, 330, 294, // 挂在天上放光明
392, 392, 349, 349, 330, 330, 294, // 好像许多小眼睛
262, 262, 392, 392, 440, 440, 392, // 一闪一闪亮晶晶
349, 349, 330, 330, 294, 294, 262 // 满天都是小星星
};
// 每个音符的时长(单位:毫秒)
int noteDurations[] = {
400, 400, 400, 400, 400, 400, 800,
400, 400, 400, 400, 400, 400, 800,
400, 400, 400, 400, 400, 400, 800,
400, 400, 400, 400, 400, 400, 800,
400, 400, 400, 400, 400, 400, 800,
400, 400, 400, 400, 400, 400, 800
};
void setup() {
pinMode(BUZZER, OUTPUT); // 设置无源蜂鸣器为输出模式
}
void loop() {
// 遍历每个音符
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
int noteDuration = noteDurations[i]; // 获取当前音符的时长
tone(BUZZER, melody[i], noteDuration); // 播放音符
delay(noteDuration * 1.3); // 增加音符之间的间隔,让音乐更自然
}
delay(2000); // 播放完成后暂停2秒,循环播放
}