请教大家关于DFPlayer Mini模块播放时长的问题

2017-07-281.1万
AI 快速预览详细 收起
本文讨论了在使用DFPlayer Mini模块播放MP3时,由于1602屏幕刷新率控制导致音乐只能播放前一秒的问题。通过调整代码逻辑,避免使用delay()函数,可以确保1602屏幕刷新率和DFPlayer Mini模块的MP3播放互不影响。具体解决方案包括使用定时器或中断来替代delay()函数,从而实现同步操作。
最近做了一个小物件,是能够在1602屏幕显示一些信息,而且能使用DFPlayer Mini同时播放MP3的,但是在1602显示的时候需要用delay(1000);来进行刷新率的控制,不然就是闪屏,但是播放MP3的时候不需要用delay();这样在一起智能播放MP3曲目的前一秒,很尴尬……请教一下各位,有没有能控制MP3播放又不影响1602刷新率与显示数据的方法?
程序如下:
if (( ( (BPM ) < ( 100 ) ) && ( (BPM) > ( 0 ) ) ))
  {
    lcd.setCursor(0,0);
    lcd.print( "Wonderfu" );

    mp3_play (1);
  }
if (( ( (BPM ) < (200 ) ) && ( (BPM) > ( 100 ) ) ))
  {
    lcd.setCursor(0,0);
    lcd.print( "BAD" );

    mp3_play (2);
  }

     lcd.setCursor(0,1);
     lcd.print( "Heart rate: " );
     lcd.print(BPM);

  delay(1000);
  lcd.clear();


这样的音乐只会响起前1秒,很糟心啊!
求助!!

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
fats114
fats114
多线程解决,但是比起楼上的SCoop,才两个线程还是推荐Proto thread,而且程序更容易写点,http://dfrobot.com.cn/community/forum.php?mod=viewthread&tid=11027&highlight=Proto%2Bthread
朱文炜
朱文炜
可以使用多线程库SCoop,具体可以参考这篇文章
http://blog.csdn.net/sdlgq/article/details/50374867
zxkof83
zxkof83
作者
写了一个函数调用MP3的播放时长,但是1602的显示刷新频率还是受影响
Forgotten
Forgotten
定义一个变量来控制mp3的播放把
- 没有更多了 -