Hey,
ich würde gerne bei einem Projekt eine MP3 abspielen (sozusagen als Hintergrundmusik). Sobald ich jedoch einen Schalter drücke, soll eine andere MP3 abgespielt werden. Ist diese zu Ende, soll die Hintergrundmusik erneut von vorne abgespielt werden.
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
const int buttonPin = 2;
int buttonState = 0;
SoftwareSerial mySoftwareSerial(10, 11);
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
randomSeed(analogRead(0));
Serial.begin(115200);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
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."));
}
void loop()
{
myDFPlayer.play(1);
delay(6000);
buttonState = digitalRead(buttonPin);
randNumber = random(2);
if (buttonState == LOW) {
switch(randNumber){
case 0:
myDFPlayer.stop();
myDFPlayer.play(2);
delay (1500);
break;
case 1:
myDFPlayer.stop();
myDFPlayer.play(3);
delay (1500);
break;
}
static unsigned long timer = millis();
if (millis() - timer > 3000) {
timer = millis();
// myDFPlayer.next(); //Play next mp3 eve
}
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read());
}
else {
myDFPlayer.stop();
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}
Leider funktioniert nur das eine oder das andere. Sprich ich kann zwar die MP3 abspielen, dann hat der Schalter aber keine Funktion. Oder aber ich lasse die "Hintergrund-MP3" weg, dann funktioniert der Schalter und es wird mal die eine mal die andere MP3 abgespielt.
Könnt ihr mir evtl. weiterhelfen? Gibt es eine Lösung für das Problem?