【树莓派】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. 音乐编程实现
- 初始化设置
- 使用
TonalBuzzer(buzzer_pin) 初始化
- 停止发声:
stop()
- 音符播放
- 核心:按频率播放
- 时间单位:
duration = 0.5 对应 1/16拍
- 乐曲播放
- 用
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 | 音高线性调整、跑调 |
| 硬件适配 | 适配蜂鸣器频响 | 接受非标音阶做小调 | 高音尖锐、音色固定 |