一、项目介绍
前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器。这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可以播放音频文件。遗憾的是我们需要将音频文件提前转换为wav文件格式,这与ATtiny85制作的SD卡音乐播放器一致。音频文件转换成wav格式,可遵循以下步骤:
1、进入“在线Wav转换”
2、推荐的转换格式设置
Bit Resolution8 Bit
Sampling Rate16000 Hz
Audio ChannelMono
PCM formatPCM unsigned 8-bit
3、在网站上点击“choose file”,选择你想要转换的文件。然后按上面的设置输入值。操作界面如下:
4、点击 “Convert File” ,这样音频文件就转换器为.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卡读取音乐文件,并从9号针脚输出音频信号。如果觉得Arduino发出的音频信号太小,可将9号引脚接入功放器放大声音信号,可参考下图,加入LM386芯片实现音频放大,这里不再过多赘述。
实物连接图:图中还有两个按钮开关连接到Arduino的2号和3号引脚。开关实现切换下一首的功能和实现播放/暂停功能。
四、库文件地址
TMRpcm library
文件下载后,应该为.zip文件,不用解压缩,安装库文件可参考下图操作:
五、程序代码
/*Arduino Music Player */
#include "SD.h" //读取 SD card 文件 #include "TMRpcm.h" //读取 音频播放文件 #include "SPI.h" //读取 SD card的SPI 文件 #define SD_ChipSelectPin 4 //设置CS 引脚 4 TMRpcm music; //设置音频播放对象 "music" int song_number=0; boolean debounce1=true; boolean debounce2=true; boolean play_pause; void setup(){ music.speakerPin = 9; //设置音频输出针脚 9 Serial.begin(9600); //串口调试 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 快进 music.setVolume(5); // 设置音量0 ~7 music.quality(1); // 设置 1 或 2x 采样速度,0为正常值 //music.volume(0); // 1(高) 0(低)控制音量 //music.play("filename",30); //从30秒开始播放一个文件 } 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卡音频播放器进行对比测试。
全部0条评论
快来发表一下你的评论吧 !