一、項(xiàng)目介紹
前面用ATtiny85制作SD卡音樂(lè)播放器,本次主要利用Arduino UNO 和SD卡制作音樂(lè)播放器。這個(gè)播放器不需要添加多余的模塊,只需要SD讀卡器和Arduino UNO開發(fā)板就可以播放音頻文件。遺憾的是我們需要將音頻文件提前轉(zhuǎn)換為wav文件格式,這與ATtiny85制作的SD卡音樂(lè)播放器一致。音頻文件轉(zhuǎn)換成wav格式,可遵循以下步驟:
1、進(jìn)入“在線Wav轉(zhuǎn)換”
2、推薦的轉(zhuǎn)換格式設(shè)置
Bit Resolution8 Bit
Sampling Rate16000 Hz
Audio ChannelMono
PCM formatPCM unsigned 8-bit
3、在網(wǎng)站上點(diǎn)擊“choose file”,選擇你想要轉(zhuǎn)換的文件。然后按上面的設(shè)置輸入值。操作界面如下:
4、點(diǎn)擊 “Convert File” ,這樣音頻文件就轉(zhuǎn)換器為.wav格式了,下載保存到SD卡。
二、元器件清單
1、Arduino UNO
2、8歐姆 0.25瓦 小喇叭
3、SD卡卡座模塊
4、SD卡
5、連接線
三、電路連接圖
Arduino UNO 與SD卡模塊的引腳連接如下表
ArduinoSD card 模塊
+5VVcc
GndGnd
Pin 12MISO (Master In Slave out)
Pin 11MOSI (Master Out Slave In)
Pin 13SCK (Synchronous Clock)
Pin 4CS (Chip Select)
Arduino UNO將從SD卡讀取音樂(lè)文件,并從9號(hào)針腳輸出音頻信號(hào)。如果覺(jué)得Arduino發(fā)出的音頻信號(hào)太小,可將9號(hào)引腳接入功放器放大聲音信號(hào),可參考下圖,加入LM386芯片實(shí)現(xiàn)音頻放大,這里不再過(guò)多贅述。
實(shí)物連接圖:圖中還有兩個(gè)按鈕開關(guān)連接到Arduino的2號(hào)和3號(hào)引腳。開關(guān)實(shí)現(xiàn)切換下一首的功能和實(shí)現(xiàn)播放/暫停功能。
四、庫(kù)文件地址
TMRpcm library
文件下載后,應(yīng)該為.zip文件,不用解壓縮,安裝庫(kù)文件可參考下圖操作:
五、程序代碼
/*Arduino Music Player*/
#include "SD.h" //讀取 SD card 文件 #include "TMRpcm.h" //讀取 音頻播放文件 #include "SPI.h" //讀取 SD card的SPI 文件 #define SD_ChipSelectPin 4 //設(shè)置CS 引腳 4 TMRpcm music; //設(shè)置音頻播放對(duì)象 "music" int song_number=0; boolean debounce1=true; boolean debounce2=true; boolean play_pause; void setup(){ music.speakerPin = 9; //設(shè)置音頻輸出針腳 9 Serial.begin(9600); //串口調(diào)試 if (!SD.begin(SD_ChipSelectPin)) { Serial.println("SD fail"); return; } pinMode(2, INPUT_PULLUP); //Button 1 切換音頻文件 pinMode(3, INPUT_PULLUP); //Button 2 播放或暫停 pinMode(3, INPUT_PULLUP); //Button 2 快進(jìn) music.setVolume(5); // 設(shè)置音量0 ~7 music.quality(1); // 設(shè)置 1 或 2x 采樣速度,0為正常值 //music.volume(0); // 1(高) 0(低)控制音量 //music.play("filename",30); //從30秒開始播放一個(gè)文件 } void loop(){ if (digitalRead(2)==LOW && debounce1 == true) //Button 1 按下 { song_number++; if (song_number==5) {song_number=1;} debounce1=false; Serial.println("KEY PRESSED"); Serial.print("song_number="); Serial.println(song_number); if (song_number ==1) {music.play("1.wav",10);} //從10秒開始播放第一首歌 if (song_number ==2) {music.play("2.wav",33);} //從33秒開始播放第二首歌 if (song_number ==3) {music.play("3.wav");} //從開始位置播放第三首歌 if (song_number ==4) {music.play("4.wav",25);} //從25秒開始播放第四首歌 if (digitalRead(3)==LOW && debounce2 == true) //Button 2 按下 { music.pause(); Serial.println("PLAY / PAUSE"); debounce2=false; } if (digitalRead(2)==HIGH) //防止誤操作 debounce1=true; if (digitalRead(3)==HIGH) //防止誤操作 debounce2=true; } }
至此基于Arduino UNO的SD卡音頻播放器就完成了,有興趣可將它與基于ATtiny85的SD卡音頻播放器進(jìn)行對(duì)比測(cè)試。
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
4895瀏覽量
97057 -
音樂(lè)播放器
+關(guān)注
關(guān)注
0文章
67瀏覽量
15750 -
Arduino
+關(guān)注
關(guān)注
187文章
6457瀏覽量
186501
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論