Arduino库:DFRobotDFPlayerMini

Arduino库:DFRobotDFPlayerMini,arduino,Arduino,我对Arduino密码有问题。DFRobotDFPlayerMini库。当您按下按钮时,音乐播放,当您再次按下按钮时,音乐暂停。我让音乐播放0.5秒,然后重复播放。先谢谢你 #include "SoftwareSerial.h" #define BTN_PIN 3 #include "Arduino.h" #include "DFRobotDFPlayerMini.h" boolean butt_flag = 0; boolean butt; boolean pl; SoftwareSeria

我对Arduino密码有问题。DFRobotDFPlayerMini库。当您按下按钮时,音乐播放,当您再次按下按钮时,音乐暂停。我让音乐播放0.5秒,然后重复播放。先谢谢你

#include "SoftwareSerial.h"
#define BTN_PIN 3
#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"

boolean butt_flag = 0;
boolean butt;
boolean pl;
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
    butt = !digitalRead(3);
    mySoftwareSerial.begin(9600);
    Serial.begin(115200);
    if (!myDFPlayer.begin(mySoftwareSerial)) {
        Serial.println(F("Unable to begin:"));
        Serial.println(F("1.Please recheck the connection!"));
        Serial.println(F("2.Please insert the SD card!"));
        while(true){
            delay(0);
        }
    }
    Serial.println(F("DFPlayer Mini online."));
    pl = 0;
    myDFPlayer.volume(30); 
    myDFPlayer.play(1);
}

void loop()
{
    butt = !digitalRead(3);
    if (butt == 1 && butt_flag == 0) {
        butt_flag = 1;
        pl = !pl;
    }
    if (pl = 1)
        myDFPlayer.play();
    else
        myDFPlayer.pause();
}

这可能不是你唯一的问题,但在循环中
if(pl=1)
可能应该是
if(pl==1)
您遇到的问题与库无关,但您没有取消按钮的抖动。有关去抖动的详细信息,请参阅。最简单的策略称为“等着瞧”,提纲如下:

void loop()
{
  if (!digitalRead(3)) {
    // the button seems to be pressed, but wait...
    delay(200);
    if (!digitalRead(3)) { // check it again
      // the button IS pressed, and change player state
      pl = !pl;
      if (pl = 1)
        myDFPlayer.play();
      else
        myDFPlayer.pause();
    }
  }
}