2014-3-12 17:38:08 [显示全部楼层]
6596浏览
查看: 6596|回复: 2

[已解决] 求助,DFRobot Arduino TTL串口SD卡mp3播放器串口5无法返回低电平

[复制链接]
本帖最后由 cai4728 于 2014-3-12 17:40 编辑

有人用过这个模块吗?这个mp3播放模块介绍说音频文件播放完毕后会输出一个低电平。但我试了一下没有成功。我把串口的5号接到Arduino的数字口8上,但是mp3播放完毕数字口检测不到低电平。Serial.print(digitalRead(playing))在monitor上总是返回1;  ,如果有输出低电平的话应该会返回0吧?还是说我的线路连的不对吗?

*我在做一个通过声音传感器触发播放mp3的玩具,现在的问题就是如果一个mp3还没播放完毕,再次检测到声音就会播放下一个mp3了。我想让mp3播放完毕,再放下一个mp3。、

ps:wiki上面的代码有问题,必须把(digitalRead(button)==LOW)改成if(digitalRead(button)==HIGH)才能正常工作,不过就算改了也还是有点问题,按钮按下去的时候会重复触发这个if判断句,直到放开按钮才会执行。
还有就是说明上面写着“语音文件名称\r\n 播放相应名称的歌曲,如果找到歌曲播放正确将返回 Play ok\r\n“   但是我就算在代码中写上了\r\n,也不会返回我Play ok。我的意思是我得不到任何返回值


产品wiki: https://wiki.dfrobot.com.cn/index.php/(SKU:TOY0008)DFRduino_Player_V2.0(.NET_Gadgeteer_Compatible)MP3%E6%92%AD%E6%94%BE%E6%A8%A1%E5%9D%97

连线

连线

代码

代码

bobo  NPC

发表于 2014-3-12 18:22:37

OUT脉冲是表示歌曲播放完毕,输出脉冲非常短 只有1ms 你通过轮询的形式来读取这个脉冲是不容易读取到的。

另外你写的下一曲命令是错误的

//按按键播放下一首
void loop()
  {
   
     if(digitalRead(button)==HIGH)   //检测是否有按钮按下,注意看看你手上的DF单按钮是不是按下是高电平,新版本是按下高电平。
      {
        delay(50);  //延迟去抖动
        if(digitalRead(button)==HIGH)
            {      Serial.println("\\:n");  // 播放下一首
                  Serial.println("OK");
                   while( digitalRead(PlayEnd)==HIGH) ;  // OUT管脚如果是高一直死循环,等待歌曲完成推出,再次检测按钮按下
             }               
        }
    }



回复

使用道具 举报

cai4728  学徒
 楼主|

发表于 2014-3-12 18:39:17

bobo 发表于 2014-3-12 18:22
OUT脉冲是表示歌曲播放完毕,输出脉冲非常短 只有1ms 你通过轮询的形式来读取这个脉冲是不容易读取到的。

...

成功了,谢谢大神!原来脉冲只有1ms,我之前一直都看成是1秒了。
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail