Buzzer 模块
模块介绍
支持有源和无源蜂鸣器的驱动类。无源蜂鸣器可通过 PWM 调节频率播放不同音调,支持播放音符和旋律;有源蜂鸣器只能发出固定频率的蜂鸣声。
硬件引脚说明
| 引脚名称 | 全称/含义 | 接线颜色 | 功能描述 |
|---|---|---|---|
| S | Signal/信号 | 黄色 | 数据传输引脚,用于控制蜂鸣器(需支持 PWM 输出,无源蜂鸣器) |
| V | Voltage/电源 | 红色 | 电源电压输入,为设备提供工作电压 |
| G | Ground/地线 | 黑色 | 接地引脚,完成电路回路 |
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pin | Pin | 无 | 连接蜂鸣器的 GPIO 引脚(无源蜂鸣器需支持 PWM 输出) |
| is_passive | bool | True | 是否是无源蜂鸣器(True=无源,False=有源) |
| active_high | bool | True | 高电平触发还是低电平触发(默认高电平) |
导入和实例创建
python
from machine import Pin
from buzzer import Buzzer
# 初始化无源蜂鸣器(默认)
buzzer = Buzzer(Pin(4))
# 初始化有源蜂鸣器
buzzer = Buzzer(Pin(4), is_passive=False)核心属性方法
| 属性或方法 | 参数 | 返回类型 | 说明 |
|---|---|---|---|
| on() | 无 | None | 打开蜂鸣器 |
| off() | 无 | None | 关闭蜂鸣器 |
| beep() | times=1 (int), duration=0.2 (float), interval=0.1 (float) | None | 发出指定次数的蜂鸣声 |
| play_note() | note='C4' (str), duration=0.5 (float) | None | 播放指定音调(仅无源蜂鸣器) |
| set_tone_freq() | frequency=1000 (int), duty=512 (int) | None | 设置无源蜂鸣器的频率和占空比 |
| deinit() | 无 | None | 释放蜂鸣器占用的资源 |
内置音名
支持大调音名:C, D, E, F, G, A, B,可通过八度(如 C4, D5)指定音调。
使用示例
无源蜂鸣器使用
python
from machine import Pin
from buzzer import Buzzer
import time
# 初始化无源蜂鸣器(默认)
buzzer = Buzzer(Pin(4)) # 默认无源蜂鸣器
# 播放音符
buzzer.play_note('C4', duration=0.5) # 播放 C4 音调
buzzer.play_note('D4', duration=0.5) # 播放 D4 音调
# 发出蜂鸣声
buzzer.beep(times=3, duration=0.2) # 连续蜂鸣3次
buzzer.deinit() # 释放资源有源蜂鸣器使用
python
from machine import Pin
from buzzer import Buzzer
# 初始化有源蜂鸣器
buzzer = Buzzer(Pin(4), is_passive=False)
# 发出蜂鸣声
buzzer.beep(times=3, duration=0.2) # 连续蜂鸣3次注意事项
引脚要求
无源蜂鸣器需要引脚支持 PWM 输出(如 ESP32/ESP8266 多数 GPIO 均支持)
蜂鸣器类型差异
- 无源蜂鸣器:可通过 PWM 调节频率播放不同音调
- 有源蜂鸣器:只能发出固定频率的蜂鸣声
功能使用限制
- play_note() 和 set_tone_freq() 方法仅适用于无源蜂鸣器
- 有源蜂鸣器仅支持 on(), off(), beep() 基本功能
最佳实践
使用完毕后建议调用 deinit() 释放 PWM 资源,避免资源占用