概述
首先要感谢stm32通过 一线串口通信控制JQ8900-16P语音模块的作者
我就是根据这位博主的代码改写的,但是碰到了意想不到的问题。其实代码是写对了,语音模块是单独供电,这个供电的地要和arduino的地共用。(我第一天测试的时候其实也注意到了这个需要共地,但是反复测试不行,因为没有保存代码,今天只能重新一遍,居然就好了。)另外接上一个3W的喇叭,直接用arduino的板子给语音模块供电也是可以带动的。不需要额外电源。
void setup()
{
pinMode(3,OUTPUT);
}
void loop()
{
SendData(0x0a); //清空数字
SendData(0x01); //曲目号
SendData(0x00);
SendData(0x0b); //选曲播放
delay(2000); //延时
//发送0x01
SendData(0x0a);
SendData(0x01);
SendData(0x0b);
delay(2000);
//发送0x07
SendData(0x0a);
SendData(0x07);
SendData(0x0b);
delay(2000);
//发送0x03
SendData(0x0a);
SendData(0x03);
SendData(0x0b);
delay(2000);
}
void SendData (char addr )//发送函数。
{
digitalWrite(3,HIGH); /*开始拉高*/
delayMicroseconds ( 1000 );
digitalWrite(3,LOW); /*开始引导码*/
delayMicroseconds ( 3200 );/*此处延时最少要大于2ms*/
for (int i = 0; i < 8; i++ ) /*总共8位数据 */
{
digitalWrite(3,HIGH);
if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示 */
{
delayMicroseconds ( 600 );
digitalWrite(3,LOW);
delayMicroseconds ( 200 );
}
else /*1:3表示数据位0 ,每个位用两个脉冲表示 */
{
delayMicroseconds ( 200 );
digitalWrite(3,LOW);
delayMicroseconds ( 600 );
}
addr >>= 1;
}
digitalWrite(3,HIGH);
}
啧啧啧,搞了两天。另外我发现音量控制有点问题设置成20和80的音量值,感觉都是一样的。都比较小,怎么回复原来的音量呢?给语音板断电就恢复成默认大音量了。
在淘宝店可以搜到这个模块产品和说明书。音量的设置方法有详细的说明。
另外原作者提到在网上找了很多延时函数都达不到要求,但是在arduino里面直接用自带的微秒延时就行了。说明还是很准的。
最后
以上就是知性果汁为你收集整理的arduino控制JQ8900-16P语音模块的全部内容,希望文章能够帮你解决arduino控制JQ8900-16P语音模块所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复