MP3 Player - GD3800
程式列表
|
""" ePy-Lite_GD3800.py
ePy-Lite Number Name ----------------- VIN 1 VCC P1_TX3 2 RX P0_RX3 3 TX GND 4 GND
https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=zh-tw&q=你好我是你的STEAM的好幫手,E py lite https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=zh-tw&q=這是GD3800 MP3 模組Demo https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=zh-tw&q=e Py-Lite易學板功能特色及應用,支持按鍵A, 重置鍵RST,藍牙BLE5.0可以做為程式下載或藍牙控制用,可外接RGB彩色燈, 最多64顆, 可以做出文字, 圖形顯示, 情境燈等,支持單色LED, 紅色 綠色 黃色, 可以做燈光明亮控制 https://translate.google.com/translate_tts?ie=UTF-8&client=tw-ob&tl=zh-tw&q=支持2組UART, 3組I2C, 1組SPI,方便來與各種感測器及設備來做連接及控制,支持4路PWM,可以用來控制馬達速度,支持USB 隨插即用及U Disk,並可以直接儲存資料在E PY-Lite
"""
import micropython from machine import Switch #Get button KEY library from machine import Pin, LED, UART import utime
STA_BYTE = 0x7E END_BYTE = 0xEF
class GD3800(): MP3_LOOP_ALL = 0 # 全部循環 MP3_LOOP_FOLDER =1 # 文件夾內循環 MP3_LOOP_ONE =2 # 單曲循環 MP3_LOOP_RAM =3 # 隨機播放
MP3_STATUS_STOPPED = 0 MP3_STATUS_PLAYING = 1 MP3_STATUS_PAUSED = 2 MP3_STATUS_FF = 3 MP3_STATUS_FR = 4
MP3_EQ_NORMAL = 0 MP3_EQ_POP = 1 MP3_EQ_ROCK = 2 MP3_EQ_JAZZ = 3 MP3_EQ_CLASSIC = 4 MP3_EQ_BASS = 5
def __init__(self,port=3): self.uart = UART(port, 9600) self.player_volume = 30 # player_volume = 20 self.is_mute = False # is_mute = False self.setVolume(self.player_volume) self.setEqualizer(self.MP3_EQ_NORMAL) # 設置EQ
def command(self, buffer, dlen): for i in range(dlen): self.uart.writechar(buffer[i])
print("Send:", end = '') print("".join("%02XH," % i for i in buffer)) utime.sleep(1) buffer = self.uart.read(4) # 從串口讀取資料 print("Read:", end = '') print("".join("%02XH," % i for i in buffer))
def setVolume(self, volume): # 7E 03 31 1E EF self.player_volume = volume
buffer=bytearray(5) buffer[0]=STA_BYTE buffer[1]=0x03 buffer[2]=0x31 #CMD buffer[3]=volume buffer[4]=END_BYTE self.command(buffer,5)
def play(self): # 7E 02 01 EF buffer=bytearray(4) buffer[0]=STA_BYTE buffer[1]=0x02 buffer[2]=0x01 #CMD buffer[3]=END_BYTE self.command(buffer,4)
def pause(self): # 7E 02 02 EF buffer=bytearray(4) buffer[0]=STA_BYTE buffer[1]=0x02 buffer[2]=0x02 #CMD buffer[3]=END_BYTE self.command(buffer,4)
def PlayAll(self,onoff): # 7E 03 07 01 EF buffer=bytearray(5) buffer[0]=STA_BYTE buffer[1]=0x03 buffer[2]=0x07 #CMD buffer[3]=onoff buffer[4]=END_BYTE self.command(buffer,5)
def playStop(self): # 7E 02 0E EF buffer=bytearray(4) buffer[0]=STA_BYTE buffer[1]=0x02 buffer[2]=0x0E #CMD buffer[3]=END_BYTE self.command(buffer,4)
def setEqualizer(self,equalizerMode): buffer=bytearray(5) buffer[0]=STA_BYTE buffer[1]=0x02 buffer[2]=0x32 #CMD buffer[3]=equalizerMode buffer[4]=END_BYTE self.command(buffer,5)
def setLoopMode(self,mode): # 7E 03 33 0x EF buffer=bytearray(5) buffer[0]=STA_BYTE buffer[1]=0x03 buffer[2]=0x33 #CMD buffer[3]=mode buffer[4]=END_BYTE self.command(buffer,5)
def playFileByIndexNumber(self,fileNumber): buffer=bytearray(6) buffer[0]=STA_BYTE buffer[1]=0x04 buffer[2]=0x41 #CMD buffer[3]=(fileNumber>>8) & 0xFF buffer[4]=fileNumber & 0xFF buffer[5]=END_BYTE self.command(buffer,6)
def playMP3Folder(self, fileNumber): buffer=bytearray(6) buffer[0]=STA_BYTE buffer[1]=0x04 buffer[2]=0x4A #CMD buffer[3]=(fileNumber>>8) & 0xFF buffer[4]=fileNumber & 0xFF buffer[5]=END_BYTE self.command(buffer,6)
def deinit(self): # self.playStop() self.pause() # 暫停 self.uart.deinit()
def key_int(): global KeyDone KeyDone = True
# Start Function if __name__ == '__main__': ledY = LED('ledy') ledY.off()
KeyA = Switch('keya') #Create button A KeyA.callback(key_int) KeyDone = False
mp3 = GD3800(3) # mp3.PlayAll(0x01) # mp3.play() # 播放 # mp3.playFileByIndexNumber(1) # mp3.setLoopMode(GD3800.MP3_LOOP_ALL) # 設置循環模式 nextfile=1 fileindex=1
while True: if(nextfile==1) : mp3.playMP3Folder(fileindex) fileindex +=1 nextfile=0 if (fileindex==5) : fileindex=1
utime.sleep(1) if(mp3.uart.any()): # 當串口有可讀數據時 buffer = mp3.uart.read(4) # 從串口讀取資料 print("Read:", end = '') print("".join("%02XH," % i for i in buffer)) if (buffer[2]==0x80) : nextfile=1
if KeyDone == True: #Press A Key break
mp3.deinit() KeyA.callback(None) |
執行結果
https://www.youtube.com/watch?v=qNuA122Kc5g
沒有留言:
張貼留言