Chain Buzzer
BuzzerChain 是链式总线上蜂鸣器设备的辅助类。它提供了控制蜂鸣器频率、占空比、播放模式(自动播放、手动播放、音符播放)以及播放音符的方法。
支持以下产品:
UiFlow2 应用示例
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 类。
UiFlow2 代码块:

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。
- 返回类型:
UiFlow2 代码块:

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。- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
mode = chain_buzzer_0.get_mode()
- tone(freq=2700, duty=50, duration_ms=100)
播放音调(仅在 AUTO_PLAY 模式下有效)。
- 参数:
- 返回:
操作成功返回 True,否则返回 False。
- 返回类型:
UiFlow2 代码块:

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)
设置蜂鸣器频率。
UiFlow2 代码块:

MicroPython 代码块:
success = chain_buzzer_0.set_freq(2700) success = chain_buzzer_0.set_freq() # Use default: 2700Hz
- get_freq()
获取蜂鸣器频率。
- 返回:
频率(Hz),失败时返回 None。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
freq = chain_buzzer_0.get_freq()
- set_duty(duty=50)
设置蜂鸣器占空比。
UiFlow2 代码块:

MicroPython 代码块:
success = chain_buzzer_0.set_duty(50) success = chain_buzzer_0.set_duty() # Use default: 50%
- get_duty()
获取蜂鸣器占空比。
- 返回:
占空比(0-100),失败时返回 None。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
duty = chain_buzzer_0.get_duty()
- set_status(status)
设置蜂鸣器状态(仅在 MANUAL_PLAY 模式下有效)。
- 参数:
status (int) – 蜂鸣器状态。使用
BuzzerChain.STATUS_OFF(0) 或BuzzerChain.STATUS_ON(1)。- 返回:
操作成功返回 True,否则返回 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
success = chain_buzzer_0.set_status(BuzzerChain.STATUS_ON)
- get_status()
获取蜂鸣器状态。
- 返回:
蜂鸣器状态。
BuzzerChain.STATUS_OFF(0) 或BuzzerChain.STATUS_ON(1)。失败时返回 None。- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
status = chain_buzzer_0.get_status()
- note(note_index, duration_ms=100)
播放音符(仅在 NOTE_PLAY 模式下有效)。
- 参数:
- 返回:
操作成功返回 True,否则返回 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
success = chain_buzzer_0.note(25, 500) # Play C5 for 500ms success = chain_buzzer_0.note(25) # Play C5 for 100ms (default duration)

