红外遥控播放器-播放你的音乐(DFPlayer)
上次一直想做一个音乐播放器,但是不知道何原因一直没能成功,于是在网上找资料,在其他论坛找到一个教程自己来做做看,这个作品是基于DFPlayer和uno板子来做的。大家会问DFPlayer是什么?
DFPlayer Mini 是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为Arduino UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。 更详尽的文档 可以参考产品资料库找更专业的资料
器材准备:
DFRduino UNO R3IR kit红外遥控套
DFPlayer Mini 播放器模块
杜邦线、电阻等等
官方声明:此模块可以直接使用Arduino供电,并不会对Arduino本身造成任何影响。
如果使用Arduino供电,切记需要在串口通信端口上增加两个1K电阻用来消除噪音!
以下是搭建好的电路:
/* *name: DFPlayer_Mini_Mp3 *version:1.0 *Author: Apple tec.<[email]godfights@163.com[/email]> *Date: 2015-07-16 *Description:红外遥控DFPlayer迷你板 *note: mp3 file must put into mp3 folder in your tf card */ #include <IRremote.h>#include <SoftwareSerial.h>#include <DFPlayer_Mini_Mp3.h> //定义对应16进制数值的常量名#define POWER 0xFD00FF //电源#define VOLUP 0xFD807F //VOL+#define STOP 0xFD40BF //FUNC/STOP#define PREV 0xFD20DF //后退/上一曲#define PAUSE 0xFDA05F //暂停/播放#define NEXT 0xFD609F //前进/下一曲#define DOWN 0xFD10EF //下一页#define VOLDOWN 0xFD906F //VOL-#define UP 0xFD50AF //上一页#define ZERO 0xFD30CF //0#define EQ 0xFDB04F //EQ#define REPT 0xFD708F //ST/REPT#define ONE 0xFD08F7 //1#define TWO 0xFD8877 //2#define THREE 0xFD48B7 //3#define FOUR 0xFD28D7 //4#define FIVE 0xFDA857 //5#define SIX 0xFD6897 //6#define SEVEN 0xFD18E7 //7#define EIGHT 0xFD9867 //8#define NINE 0xFD58A7 //9 int recvPin = 2; //红外接收器到ardunio的端口boolean a = true; //播放逻辑设定int i = 20; //初始化音量int z = 0; //初始化音效IRrecv recv(recvPin); //初始化接收decode_results res; //储存接收到的数据 void setup() {Serial.begin(9600); //初始化串口recv.enableIRIn(); //允许接收数据mp3_set_serial (Serial); //设置串行DFPlayer-mini mp3模块mp3_set_volume (i); //初始化音量mp3_set_EQ (z); //初始化音效} void loop() {if(recv.decode(&res)) { //判断是否接受到数据 switch(res.value) { //判断按下的按钮 case POWER: //停止播放 if (a == false) { a = !a; mp3_stop (); } break; case PREV: //上一首 if (a == true) { a = !a; } mp3_prev (); break; case NEXT: //下一首 if (a == true) { a = !a; } mp3_next (); break; case PAUSE: //暂停与播放(暂停具有断点播放) if (a == true) { a = !a; mp3_play (); } else { a = !a; mp3_pause (); } break; case VOLUP: //音量加 if (i < 30) { i = i+1; mp3_set_volume (i); } break; case VOLDOWN: //音量减 if (i > 0) { i = i-1; mp3_set_volume (i); } break; case EQ: //音效模式切换 if (z < 5) { z = z+1; } else { z = 0; } mp3_set_EQ (z); break; case REPT : //随机模式播放 if (a == true) { a = !a; } mp3_random_play (); break; case ONE: if (a == true) { a = !a; } mp3_play (1); break; case TWO: if (a == true) { a = !a; } mp3_play (2); break; case THREE: if (a == true) { a = !a; } mp3_play (3); break; case FOUR: if (a == true) { a = !a; } mp3_play (4); break; case FIVE: if (a == true) { a = !a; } mp3_play (5); break; case SIX: if (a == true) { a = !a; } mp3_play (6); break; case SEVEN: if (a == true) { a = !a; } mp3_play (7); break; case EIGHT: if (a == true) { a = !a; } mp3_play (8); break; case NINE: if (a == true) { a = !a; } mp3_play (9); break; default: ; } recv.resume(); //接收下一个数据 }}复制代码
一切顺利,你就会得到一个可以用红外遥控器控制的音乐播放器。
- 以下是使用 DFPlayer Mini Module 的注意事項,请仔细阅读!
*DFPlayer Mini 可以读取 MP3 & WAV 格式的文件(实测可以解码320K的超高品质音乐),但无法播放时长在1秒以下的音频。
*所有音乐文件一定要放在mp3文件夹内,而mp3文件命名需要是4位数字,例如"0001.mp3",放置在mp3文件夹下。如需中英文命名,可以添加在数字后。例如"0001hello.mp3"或者"0001后来.mp3",详见数据手册。
代码中使用的DFPlayer mini库文件已修改,增加了全曲循环功能。
以下是修改后的库文件:
file:///c:/users/admin/appdata/roaming/360se6/User Data/temp/222616u3de8kfrdu1ge0gt.png
file:///c:/users/admin/appdata/roaming/360se6/User Data/temp/222616u3de8kfrdu1ge0gt.png