跳到主要内容

蜂鸣器(beep)

该模块用于控制蜂鸣器发声,使用 ESP32 硬件 PWM (LEDC) 实现频率控制发声,并支持定时停止、停止、释放等功能。

  • 固定蜂鸣器连接在 GPIO12

方法列表

1. beep.init()

功能: 初始化蜂鸣器模块。首次调用前需初始化。若未手动调用,beep.tone() 内部也会自动调用。

示例:

import beep

beep.init()

2. beep.tone(freq, duration_ms)

功能: 蜂鸣器发声。以指定频率(Hz)发出声音,并在持续指定时间(ms)后自动停止。

参数:

参数名类型说明
freqint发声频率(单位:Hz)
duration_msint持续时间(单位:毫秒)

示例:

import beep

beep.tone(1000, 500) # 发出 1000Hz 声音持续500ms

3. beep.stop()

功能: 立即停止蜂鸣器发声(手动停止,不管定时器是否还在倒计时)。

示例:

beep.stop()

4. beep.deinit()

功能: 释放蜂鸣器资源,停止 PWM、删除定时器。再次使用前需重新初始化。

示例:

beep.deinit()

简单使用示例

import beep

# 初始化蜂鸣器
beep.init()

# 发出 2kHz 声音持续 300ms
beep.tone(2000, 300)

# 手动提前停止
beep.stop()

# 释放资源
beep.deinit()

⚠ 注意事项

  • 蜂鸣器引脚固定在 GPIO12
  • 每次发声调用会更新频率和定时器。
  • tone() 前未调用 init(),模块会自动初始化。
  • 不支持重入:请等待上一次 tone() 执行结束后再发出新的音调,否则可能有覆盖行为。
  • 采用硬件 PWM,精度较高,频率支持范围广。

模块硬件参数

参数
GPIO12
PWM TimerLEDC_TIMER_1
PWM ChannelLEDC_CHANNEL_1
Duty50%(内部固定 512 / 1024)