我们先知道蜂鸣器为什么能被驱动,其中蜂鸣器驱动就是通过PWM控制其中的高低电平,控制高音的播放时间,
其中实现代码
const int buzzerPin = 9;
// 定义音符频率数组 (中音C到高音C)
int melody[] = {262, 294, 330, 349, 392, 440, 494, 523};
void setup() {
pinMode(buzzerPin, OUTPUT); // 设置蜂鸣器引脚为输出模式
}
void loop() {
for (int i = 0; i < 8; i++) { // 遍历八个音符
int noteDuration = 500; // 每个音符持续500毫秒
// 计算方波的半周期时间(微秒)
long halfPeriod = 1000000L / melody[i] / 2;
// 计算在指定持续时间内需要多少个方波周期
long cycles = (long)melody[i] * noteDuration / 1000;
// 通过循环生成指定数量的方波
for (long j = 0; j < cycles; j++) {
digitalWrite(buzzerPin, HIGH);
delayMicroseconds(halfPeriod);
digitalWrite(buzzerPin, LOW);
delayMicroseconds(halfPeriod);
}
delay(100); // 音符播放完后短暂停顿,以清晰区分每个音
}
delay(2000); // 一轮播放结束后等待2秒再重新开始
}
这个是实现逻辑,这里的蜂鸣器和扬声器的逻辑一样,这里因为我购买了扬声器,这里就测评一下扬声器的播放,最后总结帖会播放测试扬声器的视频声音。
