Chain Buzzer

BuzzerChain 是链式总线上蜂鸣器设备的辅助类。它提供了控制蜂鸣器频率、占空比、播放模式(自动播放、手动播放、音符播放)以及播放音符的方法。

支持以下产品:

Chain Buzzer

UiFlow2 应用示例

按键音播放

在 UiFlow2 中打开 m5core_chain_buzzer_basic_example.m5f2 项目。

本示例演示如何在自动播放模式下使用 Chain Buzzer。它初始化蜂鸣器 RGB 指示灯,然后在按钮 A、B 或 C 被点击时播放 500 Hz、1000 Hz 或 1500 Hz 的音调。

UiFlow2 代码块:

m5core_chain_buzzer_basic_example.png

示例输出:

None

MicroPython 应用示例

按键音播放

本示例演示如何在自动播放模式下使用 Chain Buzzer。它初始化蜂鸣器 RGB 指示灯,然后在按钮 A、B 或 C 被点击时播放 500 Hz、1000 Hz 或 1500 Hz 的音调。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8from chain import BuzzerChain
 9from chain import ChainBus
10
11
12title0 = None
13label_freq = None
14label_tip = None
15bus2 = None
16chain_buzzer_0 = None
17
18
19def btna_was_clicked_event(state):
20    global title0, label_freq, label_tip, bus2, chain_buzzer_0
21    label_freq.setText(str("Freq: 500 Hz"))
22    chain_buzzer_0.tone(500, 50, 100)
23
24
25def btnb_was_clicked_event(state):
26    global title0, label_freq, label_tip, bus2, chain_buzzer_0
27    label_freq.setText(str("Freq: 1000 Hz"))
28    chain_buzzer_0.tone(1000, 50, 100)
29
30
31def btnc_was_clicked_event(state):
32    global title0, label_freq, label_tip, bus2, chain_buzzer_0
33    label_freq.setText(str("Freq: 1500 Hz"))
34    chain_buzzer_0.tone(1500, 50, 100)
35
36
37def setup():
38    global title0, label_freq, label_tip, bus2, chain_buzzer_0
39
40    M5.begin()
41    Widgets.setRotation(1)
42    Widgets.fillScreen(0x000000)
43    title0 = Widgets.Title(
44        "Chain Buzzer Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.Montserrat18
45    )
46    label_freq = Widgets.Label(
47        "Freq: -- Hz", 107, 90, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.Montserrat18
48    )
49    label_tip = Widgets.Label(
50        "Press button tone", 78, 205, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.Montserrat18
51    )
52
53    BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btna_was_clicked_event)
54    BtnB.setCallback(type=BtnB.CB_TYPE.WAS_CLICKED, cb=btnb_was_clicked_event)
55    BtnC.setCallback(type=BtnC.CB_TYPE.WAS_CLICKED, cb=btnc_was_clicked_event)
56
57    bus2 = ChainBus(2, tx=21, rx=22)
58    chain_buzzer_0 = BuzzerChain(bus2, 1)
59    chain_buzzer_0.tone(2700, 50, 100)
60    chain_buzzer_0.set_rgb_color(0x33FFFF)
61    chain_buzzer_0.set_rgb_brightness(100, save=False)
62    chain_buzzer_0.set_mode(BuzzerChain.MODE_AUTO_PLAY)
63
64
65def loop():
66    global title0, label_freq, label_tip, bus2, chain_buzzer_0
67    M5.update()
68
69
70if __name__ == "__main__":
71    try:
72        setup()
73        while True:
74            loop()
75    except (Exception, KeyboardInterrupt) as e:
76        try:
77            bus2.deinit()
78            from utility import print_error_msg
79
80            print_error_msg(e)
81        except ImportError:
82            print("please update to latest firmware")

示例输出:

None

API 参考

BuzzerChain

class chain.buzzer.BuzzerChain(bus, device_id)

基类:KeyChain

用于通过链式总线与蜂鸣器设备交互的 Buzzer Chain 类。

参数:
  • bus (ChainBus) – Chain 总线实例。

  • device_id (int) – Chain 总线上蜂鸣器的设备 ID。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from chain import ChainBus
from chain import BuzzerChain

bus2 = ChainBus(2, tx=21, rx=22)
chain_buzzer_0 = BuzzerChain(bus2, 1)

其他按钮和一些通用方法,请参考 ChainKey 类。

set_mode(mode)

设置蜂鸣器模式。

参数:

mode (int) – 蜂鸣器模式。使用 BuzzerChain.MODE_AUTO_PLAY (0)、BuzzerChain.MODE_MANUAL_PLAY (1) 或 BuzzerChain.MODE_NOTE_PLAY (2)。

返回:

操作成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

set_mode.png

MicroPython 代码块:

success = chain_buzzer_0.set_mode(BuzzerChain.MODE_AUTO_PLAY)
get_mode()

获取蜂鸣器模式。

返回:

蜂鸣器模式。BuzzerChain.MODE_AUTO_PLAY (0)、BuzzerChain.MODE_MANUAL_PLAY (1) 或 BuzzerChain.MODE_NOTE_PLAY (2)。失败时返回 None。

返回类型:

int

UiFlow2 代码块:

get_mode.png

MicroPython 代码块:

mode = chain_buzzer_0.get_mode()
tone(freq=2700, duty=50, duration_ms=100)

播放音调(仅在 AUTO_PLAY 模式下有效)。

参数:
  • freq (int) – 频率(Hz)。范围:100-10000。默认值:2700。

  • duty (int) – 占空比(0-100)。默认值:50。

  • duration_ms (int) – 持续时间(毫秒)。默认值:100。

返回:

操作成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

tone.png

MicroPython 代码块:

success = chain_buzzer_0.tone(2700, 50, 1000)
success = chain_buzzer_0.tone()  # Use default values: 2700Hz, 50% duty, 100ms
set_freq(freq=2700)

设置蜂鸣器频率。

参数:

freq (int) – 频率(Hz)。范围:100-10000。默认值:2700。

返回:

操作成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

set_freq.png

MicroPython 代码块:

success = chain_buzzer_0.set_freq(2700)
success = chain_buzzer_0.set_freq()  # Use default: 2700Hz
get_freq()

获取蜂鸣器频率。

返回:

频率(Hz),失败时返回 None。

返回类型:

int

UiFlow2 代码块:

get_freq.png

MicroPython 代码块:

freq = chain_buzzer_0.get_freq()
set_duty(duty=50)

设置蜂鸣器占空比。

参数:

duty (int) – 占空比(0-100)。默认值:50。

返回:

操作成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

set_duty.png

MicroPython 代码块:

success = chain_buzzer_0.set_duty(50)
success = chain_buzzer_0.set_duty()  # Use default: 50%
get_duty()

获取蜂鸣器占空比。

返回:

占空比(0-100),失败时返回 None。

返回类型:

int

UiFlow2 代码块:

get_duty.png

MicroPython 代码块:

duty = chain_buzzer_0.get_duty()
set_status(status)

设置蜂鸣器状态(仅在 MANUAL_PLAY 模式下有效)。

参数:

status (int) – 蜂鸣器状态。使用 BuzzerChain.STATUS_OFF (0) 或 BuzzerChain.STATUS_ON (1)。

返回:

操作成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

set_status.png

MicroPython 代码块:

success = chain_buzzer_0.set_status(BuzzerChain.STATUS_ON)
get_status()

获取蜂鸣器状态。

返回:

蜂鸣器状态。BuzzerChain.STATUS_OFF (0) 或 BuzzerChain.STATUS_ON (1)。失败时返回 None。

返回类型:

int

UiFlow2 代码块:

get_status.png

MicroPython 代码块:

status = chain_buzzer_0.get_status()
note(note_index, duration_ms=100)

播放音符(仅在 NOTE_PLAY 模式下有效)。

参数:
  • note_index (int) – 音阶索引(0-61)。0 为休止符(静音),13 为 C4,61 为 C8。

  • duration_ms (int) – 持续时间(毫秒)。默认值:100。

返回:

操作成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

note.png

MicroPython 代码块:

success = chain_buzzer_0.note(25, 500)  # Play C5 for 500ms
success = chain_buzzer_0.note(25)  # Play C5 for 100ms (default duration)