#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10,11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
///////////////////////////////////////////////////
const int buttonPin = 2;
int buttonState;            
int lastButtonState = LOW;  
int val=0;

unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;


void setup() {
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  pinMode(buttonPin, INPUT_PULLUP);


  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
  
  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    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); // Code to compatible with ESP8266 watch dog.
    }
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.volume(25);//0-30
  delay(3000);

}

void loop() {
  
  int reading = digitalRead(buttonPin);

  
  if (reading != lastButtonState) {
    
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
  
   
    if (reading != buttonState) {
      buttonState = reading;

      
      if (buttonState == LOW) {
        
        val=1;
      }
    }
  }
  
  lastButtonState = reading;


  switch (val) {
    case 1:
   myDFPlayer.next();
      val=2;
      break;
      
    case 2:
      delay(10);
      val=0;
      break;

  }


  
}
