隨著現在科技的進步與發展,智能設備已經慢慢地普及到我們的生活中,從風靡全球的諾基亞按鍵手機開始,再到目前發布的最新款iPhone13,現在人人都擁有自己的智能設備,那么你還記得自己的第一部智能設備是什么嗎?可能不少人和我的答案是一樣,第一臺智能設備是MP3音樂播放器。
MP3播放器其實就是一個只具有特定功能的小型電腦。在MP3播放器小小的機身里,擁有存儲器(存儲卡)、顯示器(LCD顯示屏)、中央處理器。MP3的中央處理器就和電腦的CPU功能是一樣的,等于播放器的“大腦”,用來接受用戶選擇的播放控制,并將當前播放的歌曲信息顯示在液晶顯示屏上,然后向數據信號處理芯片發出指令,使其準確地處理音頻信號(圖1)。

今天我們用掌控板來復刻一個傳統的MP3播放器,使用mPython作為編程軟件。
首先我們參考MP3播放器確定掌控板需要實現的基礎功能包括:播放、切換歌曲、加音量、減音量。當然真正的MP3播放器還有歌曲列表、歌曲搜索等功能,因篇幅原因不在本次實例中實現。這四個功能正好可以利用掌控板下的Python中的四個觸控按鍵來控制。
確定了需要實現的基礎功能后,大家還需要思考一個問題:音樂從哪里來。一般情況下有兩種方法,一種是傳統MP3播放器的方式,從電腦上下載音樂后傳輸到MP3存儲卡中使用;另一種方法是從網上通過資源鏈接的形式獲取,這個和目前手機音樂App的方式類似,歌曲只是臨時下載到本地播放。
本次試驗我們使用第二種方法進行音樂的獲取,我搜索到一個存有幾十首MP3地址的網頁,從中復制了一首歌的鏈接(http://webftp.bbs.hnol.net/
linm/Music2/2018/05/sdwlrmqg2CD/07.mp3)。為了保證掌控板能從網絡中獲取歌曲資源,首先要在電腦上測試我們復制的這個網址可用,還要保證掌控板可以正常連接到WiFi。所以代碼的第一行就是連接WiFi,這里就不再贅述(圖2)。

然后在掌控板的擴展處添加上音頻安裝包方便接下來的操作。新增加四個變量:變量i表示播放的歌曲、變量music-name表示當前歌曲的名稱、變量music-url表示歌曲的網絡地址、變量vioce代表著音量的條件。
初始條件下,當前播放的歌曲是空所以設置為0,音量可以設置為60。在MP3播放器中,不可能只有一首歌曲,為了存儲大量的歌曲文件,我們可以新增兩個列表用于存放歌曲的網絡地址和歌曲的名稱,目前我只存放了兩首歌曲,你可以根據自己的喜好把獲取到的歌曲地址存入列表中(圖3)。

為了能在掌控板的屏幕中顯示出需要的信息,我自定義了一個函數“屏幕顯示”的功能模塊,在屏幕上顯示出當前播放的歌曲名稱,以及MP3播放器的功能按鍵說明,A:切換歌曲;B:播放歌曲;P:增大音量; N:減小音量。注意掌控板顯示屏面積非常有限,一般只能顯示4行,任何時候都需要關注掌控板顯示畫面的實際效果(圖4)。

當按下按鈕A鍵后,變量i的值增加1,代表著切換成下一首歌曲,當變量i的值超出了我們的歌曲的總數后將變量i重新恢復設定為0,這樣可以實現歌曲的依次循環播放。按下B鍵后,音頻便停止當前列表中播放的歌曲,當觸摸P鍵后,音量增加5,當觸摸N鍵后,音量減少5,做完程序后,大家可以運行程序看看有沒有小時候MP3的味道(圖5)。

我們還可以添一塊便攜式的掌控板電池,將程序刷入至掌控板硬件后,通過電池供電便可以真正意義上做出一個精巧的MP3播放器了。