Skip to content

Commit 25c5d22

Browse files
committed
MP3模块 WT2003H4-16S 驱动
1 parent d601a41 commit 25c5d22

File tree

2 files changed

+117
-1
lines changed

2 files changed

+117
-1
lines changed

port/boards/mpython-classroom-kit/modules/_boot.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from flashbdev import bdev
44
from neopixel import NeoPixel
55
import machine
6+
import time
7+
68
# 上电后立即关闭rgb,防止随机灯亮问题
79
_rgb = NeoPixel(machine.Pin(17, machine.Pin.OUT), 25, 3, 1,0.1)
810
_rgb.write()
@@ -15,4 +17,9 @@
1517
import inisetup
1618
vfs = inisetup.setup()
1719

20+
# 硬件复位标志
21+
for count in range(3):
22+
print("=$%#=")
23+
time.sleep_ms(150)
24+
1825
gc.collect()

port/modules/bluebit.py

Lines changed: 110 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -925,7 +925,6 @@ def loop(self, songNo):
925925
926926
:param int songNo: 歌曲编号,类型为数字
927927
"""
928-
#
929928
var = bytearray([0xFF, 0x06, 0x08, 0x00, 0x00, songNo])
930929
self._cmdWrite(var)
931930

@@ -970,6 +969,116 @@ def resetDevice(self):
970969
var = bytearray([0xFF, 0x06, 0x0C, 0x00, 0x00, 0x00])
971970
self._cmdWrite(var)
972971

972+
class MP3_(object):
973+
"""
974+
MP3模块
975+
WT2003H4-16S
976+
2022.01.20
977+
"""
978+
def __init__(self, tx=-1, rx=-1, uart_num=1):
979+
self.uart = UART(uart_num, 9600, stop=2, tx=tx, rx=rx)
980+
self._vol = 15
981+
self.is_paused = False
982+
self.set_output_mode(1)
983+
self.volume(15)
984+
985+
def _cmdWrite(self, cmd):
986+
sum = 0
987+
len = 0
988+
for i in cmd:
989+
sum += i
990+
len += 1
991+
992+
len += 2
993+
sum += len
994+
sum = sum & 0xff
995+
996+
pakage = [0x7E, len]
997+
pakage += cmd
998+
pakage += ([sum, 0xEF])
999+
self.uart.write(bytearray(pakage))
1000+
# print(len)
1001+
# print(pakage)
1002+
sleep_ms(100)
1003+
1004+
def play_song(self, num):
1005+
"""
1006+
播放歌曲
1007+
:param int num: 歌曲编号,类型为数字
1008+
"""
1009+
# var = [0xA0, (num >> 8) & 0xff, num & 0xff]
1010+
var = [0xA2, (num >> 8) & 0xff, num & 0xff]
1011+
self._cmdWrite(var)
1012+
1013+
def set_output_mode(self, mode):
1014+
"""设置音频输出模式:0:speaker 1: DAC"""
1015+
var = [0xB6, mode]
1016+
self._cmdWrite(var)
1017+
1018+
def set_play_mode(self, mode):
1019+
"""指定播放模式"""
1020+
var = [0xAF, mode]
1021+
self._cmdWrite(var)
1022+
1023+
def pause(self):
1024+
"""暂停播放"""
1025+
if self.is_paused == False:
1026+
self.is_paused = True
1027+
var = [0xAA]
1028+
self._cmdWrite(var)
1029+
1030+
def stop(self):
1031+
"""停止播放"""
1032+
var = [0xAB]
1033+
self._cmdWrite(var)
1034+
1035+
def play(self):
1036+
"""
1037+
播放,用于暂停后的继续播放
1038+
"""
1039+
if self.is_paused:
1040+
self.is_paused = False
1041+
var = [0xAA]
1042+
self._cmdWrite(var)
1043+
1044+
def playNext(self):
1045+
"""播下一首"""
1046+
var = [0xAC]
1047+
self._cmdWrite(var)
1048+
1049+
def playPrev(self):
1050+
"""播上一首"""
1051+
var = [0xAD]
1052+
self._cmdWrite(var)
1053+
1054+
def volume(self, vol):
1055+
"""设置音量"""
1056+
# 音量 0~30
1057+
self._vol = vol
1058+
var = [0xAE, vol]
1059+
self._cmdWrite(var)
1060+
while True:
1061+
if(self.uart.any()):
1062+
buff = self.uart.read(2)
1063+
# print(buff)
1064+
break
1065+
1066+
def song_num(self):
1067+
"""查询 SD 卡内音乐文件总数"""
1068+
var = [0xC5]
1069+
self._cmdWrite(var)
1070+
while True:
1071+
if(self.uart.any()):
1072+
buff = self.uart.read(3)
1073+
num = (buff[1] << 8) + buff[2]
1074+
if(buff[0]==197):
1075+
# print('song_num:')
1076+
# print(num)
1077+
return num
1078+
else:
1079+
return 0
1080+
1081+
9731082

9741083
class OLEDBit(framebuf.FrameBuffer):
9751084
"""

0 commit comments

Comments
 (0)