Arduino连接WT5001模块播放MP3
本帖最后由 A布 于 2013-3-17 11:42 编辑网上购买了一个WT5001播放MP3的模块,价格30元,能插手机用的那种SD卡播放MP3,在论坛找了下没有相关的教程,无奈只有自己写代码了。苦逼的我第一次玩Arduino,还没学会走就先跑了。
先看看播放效果:
http://v.youku.com/v_show/id_XNTI3OTkxNTA0.html
这也是第一次发帖,不会画那些图纸,就简单说下。arduino(小熊板)连接一个红外接收头,使用UART连接WT5001模块。
代码也是东拼西凑的,我自己都不知道什么意思,见笑了,大家将就看看,也希望大神给予指导。坛子里好像没有人使用这个模块,要是有人用的话希望可以一起交流,我本是打算还买一个ASR语音识别模块,由语音控制播放MP3的,但是语音识别模块也是没有ARDUINO的示例代码,并且是SPI接口的,看上去很复杂,没敢下手。
MP3播放模块代码如下:
#include <IRremote.h>// 使用IRRemote函数库
const int irReceiverPin = 2;// 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600); // 开启串口,波特率为9600
irrecv.enableIRIn(); // 启动红外解码
}
int mp3_send(int code[], int length)
{
Serial.write(0x7e);
for (int i = 0; i < length; i++)
{
Serial.write(code);
}
Serial.write(0x7e);
//返回操作码
if (Serial.available())
{
return int(Serial.read());
}
return 0;
}
int mp3_read()
{
int data = 0;
while (Serial.available() > 0)
{
data += Serial.read();
delay(2);
}
return data;
}
void loop()
{
if (irrecv.decode(&results))
{
long value = results.value;
Serial.println(value);
if (value == 16720605)
{
//上一曲
int code[] = {0x02, 0xa6};
mp3_send(code, 2);
}
else if (value == 16712445)
{
//下一曲
int code[] = {0x02, 0xa5};
mp3_send(code, 2);
}
else if (value == 16761405)
{
//暂停
int code[] = {0x02, 0xa3};
mp3_send(code, 2);
}
else if (value == 16754775)
{
//音量加
int code[] = {0x02, 0xc4};
mp3_send(code, 2);
int value = mp3_read();
if (value > 0 && value < 31)
{
value+=5;
if (value >= 31) value = 31;
int val[] = {0x03, 0xa7, value};
mp3_send(val, 3);
}
}
else if (value == 16769055)
{
//音量减
int code[] = {0x02, 0xc4};
mp3_send(code, 2);
int value = mp3_read();
if (value > 0)
{
value-=5;
if (value <= 0) value = 0;
int val[] = {0x03, 0xa7, value};
mp3_send(val, 3);
}
}
else if (value == 16736925)
{
//循环播放
int code[] = {0x03, 0xa9, 0x02};
mp3_send(code, 3);
}
else
{
int code = {0x02, 0xc1};
mp3_send(code, 2);
int value = mp3_read();
Serial.println(value, DEC);
}
/**/
irrecv.resume(); // 继续等待接收下一组信号
}
delay(600); //延时600毫秒,做一个简单的消抖
} 等视频...
:lol不错哈..可以你可以写一下教程吗??具体的制作步骤啊..这个没有流程啊..我想学 独出来,就是要配一个微控器跟语音芯片一起工作,这样组成一个语音模块,模块可以使用标准总线接口(常见UART接口或者SPI接口)与外围相接,传输正确的识别信息。这样解决了语音芯片工作时独占CPU的瓶颈。复杂了就不是arduino了,那就是AVR了。 看了你的视频,不错啊。我觉得语音识别那一部分最好单独出来,就是要配一个微控器跟语音芯片一起工作,这样组成一个语音模块,模块可以使用标准总线接口(常见UART接口或者SPI接口)与外围相接,传输正确的识别信息。这样解决了语音芯片工作时独占CPU的瓶颈。复杂了就不是arduino了,那就是AVR了。 语音识别芯片我看了一个LD3320还不错,就是没有示例代码,提供的有开发手册,那也不是我这样入门玩家能写代码的,SPI有些难,还有哪什么时钟频率、上升沿、下降沿、数据有效==的,看着太复杂了。 A布 发表于 2013-3-17 17:41 static/image/common/back.gif
语音识别芯片我看了一个LD3320还不错,就是没有示例代码,提供的有开发手册,那也不是我这样入门玩家能写代 ...
LD3320貌似只能用3.3V的单片机啊 请问楼主,ardunio通过UART接到WT5001的什么接口啊,WT5001在哪家买的?谢谢!
页:
[1]