【树莓派】2 - 无源蜂鸣器

0 阅读2分钟

一、无源蜂鸣器驱动原理

  • 工作原理:必须由外部提供 PWM 脉冲信号 才能驱动发声
  • 应用特性:
    • 声音尖锐,适合警报、提示音
    • 接触不良会导致音准偏差

1. 音谱频率设置

  • 低音区(C3–B3) Tone_CL = [131,147,165,175,196,220,247,262]
  • 中音区(C4–B4) Tone_CM = [262,294,330,349,392,440,494,523]
  • 高音区(C5–B5) Tone_CH = [523,587,659,698,784,880,988,1047]
  • 硬件限制:蜂鸣器有额定频率范围,超出会跑调/无声

2. 音乐编程实现

  1. 初始化设置
  • 使用 TonalBuzzer(buzzer_pin) 初始化
  • 停止发声:stop()
  1. 音符播放
  • 核心:按频率播放
  • 时间单位:duration = 0.5 对应 1/16拍
  1. 乐曲播放
  • song 数组存音符频率
  • beat 数组存对应时值
  • 循环播放实现旋律

3. 音乐编程技巧

  • 音符索引:Tone_CM[3] = 中音 mi
  • 节奏换算:
    • 0.5 → 1/16拍
    • 1 → 1/8拍
    • 2.5 → 5倍基础时长
  • 异常处理:try-except 捕获 Ctrl+C,安全停止发声

二、知识小结

知识点核心内容技术要点实现难点
蜂鸣器驱动需外部 PWM 脉冲驱动无源蜂鸣器必须方波驱动接触不良导致音准偏差
音阶频率映射赫兹对应音符低/中/高三组频率表硬件频率范围限制
音乐编程结构双数组存音高+节奏song/beat 配对播放时值计算、动态延时
播放控制单音/乐曲播放函数play_note / play_song音高线性调整、跑调
硬件适配适配蜂鸣器频响接受非标音阶做小调高音尖锐、音色固定