I tried to use the following code to play some wavfiles but unfortunatly it didn't work.
from machine import I2S, SDCard, Pin
from m5stack import *
import os, uos
from wav import wave
#mount the sd card
sd = SDCard(slot = 2, sck = Pin(23), miso = Pin(33), mosi = Pin(19), freq = 10000000)
#initialize the I2S device
i2s = I2S( mode = I2S.MODE_MASTER | I2S.MODE_TX | I2S.MODE_DAC_BUILT_IN,
rate = 16000,
bits = 16,
channel_format = I2S.CHANNEL_ONLY_LEFT,
data_format = I2S.FORMAT_I2S_MSB)
#create a function to play the wav
def wav_player(fname):
wav = wave.open(fname)
i2s.set_dac_mode(I2S.DAC_RIGHT_EN)
i2s.sample_rate(wav.getframerate())
i2s.bits(wav.getsampwidth() * 8)
i2s.nchannels(wav.getnchannels())
i2s.volume(20)
while True:
data = wav.readframes(1024)
if len(data) > 0:
i2s.write(data)
else:
wav.close()
break
# Playing WAV audio file
lcd.clear()
lcd.print('working',0,0,0xffffff)
try:
uos.mountsd(sd, '/sd')
except:
#os.mountsd()
pass
speaker.setVolume(2)
#kill the weird start noise glitch
i2s.stop()
#point the directory to the files you have on your sd card - works best with short low file size wavs
while True:
if btnA.wasPressed():
wav_player('/flash/res/yourfile.wav')
i2s.stop()
if btnB.wasPressed():
wav_player('/sd/yourOtherFile.wav')
i2s.stop()
if btnC.wasPressed():
wav_player('/sd/anotherfile.wav')
i2s.stop()
The code should run without displaying python errors.
Describe the bug
I tried to use the following code to play some wavfiles but unfortunatly it didn't work.
The MicroPython runtime keep complaining about
I2S.MODE_MASTER | I2S.MODE_TX | I2S.MODE_DAC_BUILT_INthat neither of them is part ofI2Smodule. could you please point me to an example which works on m5stack Core basic (The EOL version).To reproduce
RunExpected behavior
The code should run without displaying python errors.
Screenshots
No response
Environment
Additional context
No response
Issue checklist