Atom S3R with Atomic SPK Base
-
I'm trying to develop a toy for my son that plays a wav every time the button is pressed, but it seams that base_spk.playWavFile is blocking the main thread.
What can I do?
import os, sys, io import M5 from M5 import * from hardware import I2C from hardware import Pin from base import SpeakerBase from hardware import sdcard import time label0 = None label1 = None title0 = None label2 = None label3 = None i2c0 = None base_spk = None step16_0 = None def setup(): global label0, label1, title0, label2, label3, i2c0, base_spk, step16_0 M5.begin() Widgets.fillScreen(0x000000) label0 = Widgets.Label("Volume:", 3, 20, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12) label1 = Widgets.Label("label1", 61, 20, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12) title0 = Widgets.Title("Music", 3, 0xffffff, 0x0000FF, Widgets.FONTS.DejaVu18) label2 = Widgets.Label("Status:", 4, 38, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12) label3 = Widgets.Label("label3", 62, 38, 1.0, 0xffffff, 0x222222, Widgets.FONTS.DejaVu12) i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000) base_spk = SpeakerBase(1, 5, 39, 38) try: print('Init SD Card') print(os.listdir('/sd/samples')) except: sdcard.SDCard(slot=3, width=1, sck=7, miso=8, mosi=6, cs=None, freq=20000000) print('Setting volume') base_spk.setVolumePercentage(0.25) print('playing wav') base_spk.playWavFile('/sd/samples/sample-3s.wav') print('wav played') print('hello M5') def loop(): global label0, label1, title0, label2, label3, i2c0, base_spk, step16_0 M5.update() print(os.getcwd()) label1.setText(str(base_spk.getVolume())) label3.setText(str(base_spk.isPlaying())) time.sleep(1) if BtnA.isPressed(): print('button pressed') if __name__ == '__main__': try: setup() while True: loop() except (Exception, KeyboardInterrupt) as e: try: from utility import print_error_msg print_error_msg(e) except ImportError: print("please update to latest firmware")
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login