Atomic Audio-3.5 Base
支持以下产品:
以下是 Atomic Audio-3.5 Base 在主控端的详细支持情况:
控制器 |
Atomic Audio-3.5 Base |
|---|---|
Atom Echo |
⭕ |
Atom Lite |
✅ |
Atom Matrix |
✅ |
AtomS3 |
✅ |
AtomS3 Lite |
✅ |
AtomS3R |
✅ |
AtomS3R-CAM |
✅ |
AtomS3R-Ext |
✅ |
备注
Atomic Audio-3.5 Base 使用与 Atomic Echo Base 相同的音频 CODEC 与引脚连接。详细使用说明请参考 Atomic Echo Base 文档。
UiFlow2 示例
录制并播放 WAV 文件
在 UiFlow2 中打开 atoms3r_aduio_record_play_example.m5f2 项目。
本示例初始化 Atomic Audio-3.5 Base,按下 BtnA 后录制 5 秒立体声音频到 /flash/res/audio/test.wav,随后播放录制的 WAV 文件。
UiFlow2 代码块:
示例输出:
无
MicroPython 示例
录制并播放 WAV 文件
本示例初始化 Atomic Audio-3.5 Base,按下 BtnA 后录制 5 秒立体声音频到 /flash/res/audio/test.wav,随后播放录制的 WAV 文件。
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 hardware import Pin 9from hardware import I2C 10from base import AtomicAudio35Base 11import time 12 13 14label_title = None 15label_status = None 16label_tip2 = None 17label_tip1 = None 18label_remaining = None 19i2c0 = None 20base_audio35 = None 21record = None 22playing = None 23reaming = None 24RECORD_TIME_MS = None 25play_start_time = None 26 27 28def btna_was_click_event(state): 29 global label_title, label_status, label_tip2, label_tip1, label_remaining, i2c0, base_audio35, record, playing, reaming, RECORD_TIME_MS, play_start_time 30 record = True 31 32 33def setup(): 34 global label_title, label_status, label_tip2, label_tip1, label_remaining, i2c0, base_audio35, record, playing, reaming, RECORD_TIME_MS, play_start_time 35 36 M5.begin() 37 Widgets.fillScreen(0x000000) 38 label_title = Widgets.Label("Audio", 36, 4, 1.0, 0x18c3df, 0x000000, Widgets.FONTS.DejaVu18) 39 label_status = Widgets.Label("--", 57, 30, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18) 40 label_tip2 = Widgets.Label("start record", 8, 104, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18) 41 label_tip1 = Widgets.Label("press screen", 5, 82, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18) 42 label_remaining = Widgets.Label("-", 59, 54, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu24) 43 44 BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btna_was_click_event) 45 46 i2c0 = I2C(0, scl=Pin(39), sda=Pin(38), freq=400000) 47 base_audio35 = AtomicAudio35Base(i2c0, 0x18, 1, 16000, 8, 6, 7, 5) 48 base_audio35.set_volume(60) 49 base_audio35.tone(888, 100) 50 record = False 51 RECORD_TIME_MS = 5000 52 label_status.setVisible(False) 53 label_remaining.setVisible(False) 54 55 56def loop(): 57 global label_title, label_status, label_tip2, label_tip1, label_remaining, i2c0, base_audio35, record, playing, reaming, RECORD_TIME_MS, play_start_time 58 M5.update() 59 if record: 60 record = False 61 time.sleep_ms(200) 62 label_status.setVisible(True) 63 label_tip1.setVisible(False) 64 label_tip2.setVisible(False) 65 label_status.setText(str('Recording...')) 66 label_status.setColor(0xcc0000, 0x000000) 67 label_status.setCursor(x=3, y=45) 68 base_audio35.record_wav_file('/flash/res/audio/test.wav', rate=16000, bits=16, channel=AtomicAudio35Base.STEREO, duration=RECORD_TIME_MS) 69 label_status.setText(str('Playing...')) 70 label_status.setColor(0x009900, 0x000000) 71 label_status.setCursor(x=16, y=27) 72 play_start_time = time.ticks_ms() 73 playing = True 74 label_remaining.setCursor(x=52, y=70) 75 label_remaining.setVisible(True) 76 base_audio35.play_wav_file('/flash/res/audio/test.wav') 77 if playing: 78 reaming = RECORD_TIME_MS - (time.ticks_diff((time.ticks_ms()), play_start_time)) 79 label_remaining.setText(str(int(reaming / 1000))) 80 if (time.ticks_diff((time.ticks_ms()), play_start_time)) >= RECORD_TIME_MS: 81 playing = False 82 label_remaining.setVisible(False) 83 label_status.setVisible(False) 84 label_tip1.setVisible(True) 85 label_tip2.setVisible(True) 86 87 88if __name__ == "__main__": 89 try: 90 setup() 91 while True: 92 loop() 93 except (Exception, KeyboardInterrupt) as e: 94 try: 95 from utility import print_error_msg 96 97 print_error_msg(e) 98 except ImportError: 99 print("please update to latest firmware") 100
示例输出:
无
API
class AtomicAudio35Base
- base.audio35.AtomicAudio35Base
AtomicEchoBase的别名
AtomicAudio35Base 是 AtomicEchoBase 的别名。详细说明请参考 AtomicEchoBase 类文档。

