电子网首页 > 开源与设计

Let'sdo2025年第3期——拾音器-扬声器播放8阶音符

2025-12-02 22:30 | 来源:电子世界报

播放蜂鸣器

我们先知道蜂鸣器为什么能被驱动,其中蜂鸣器驱动就是通过PWM控制其中的高低电平,控制高音的播放时间,

我们了解清楚之后,我们需要控制其中的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秒再重新开始
}

这个是实现逻辑,这里的蜂鸣器和扬声器的逻辑一样,这里因为我购买了扬声器,这里就测评一下扬声器的播放,最后总结帖会播放测试扬声器的视频声音。

image-20251202221514199

这里我没有合适的3pin的排针,这里我就直接使用杜邦线连接到我们的扬声器上,其中就能播放出音频效果


推荐技术

返回顶部