Servus, ich habe ein Problem mit dem Nano Every. Ich möchte den DFPlayer über den Nano Every steuern, doch leider baut er keine verbindung zum Modul auf. Mit einem UNO Funktioniert es Problem los nur mit dem Nano Every nicht.
Ich habe gelesen das der Chip ATMEGA4809 vom Nano Every anscheinend zu schnell für den DFPlayer ist und er nicht hinterher kommt. Stimmt das?
Wenn ja, gibt es eine Lösung das zu beheben?
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("DFPlayer Mini Bahnhof"));
Serial.println(F("Initialisiere DFPlayer ... (Bitte warten! Kann bis zu 5 Sekunden dauern)"));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("MP3 Player nicht ereichbar:"));
Serial.println(F("1.Bitte überprüfen Sie die Verbindung!"));
Serial.println(F("2.Prüfen sie ob eine SD-Karte eingelegt ist!"));
Serial.println(F("3.Prüfen sie ob RX und TX richtig angeschlossen ist!"));
Serial.println(F("4.Prüfen sie die Spannungsversorgung auf 5V!"));
Serial.println(F("Danach bitte Reset drücken!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(25); //Set volume value. From 0 to 30
myDFPlayer.play(2); //Play the first mp3
}
void loop()
{
static unsigned long timer = millis();
if (millis() - timer > 200000) {
timer = millis();
myDFPlayer.next(); //Play next mp3 every 3 second.
}
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Auszeit!"));
break;
case WrongStack:
Serial.println(F("Stapel falsch!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Karte eingelegt!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Karte entfernt!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Karte Online!"));
break;
case DFPlayerUSBInserted:
Serial.println("USB Eingefügt!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB entfernt!");
break;
case DFPlayerPlayFinished:
Serial.print(F("Nummer:"));
Serial.print(value);
Serial.println(F(" Spielen beendet!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Karte nicht gefunden"));
break;
case Sleeping:
Serial.println(F("Schlafen"));
break;
case SerialWrongStack:
Serial.println(F("Holen Sie sich den falschen Stapel"));
break;
case CheckSumNotMatch:
Serial.println(F("Prüfsumme stimmt nicht überein"));
break;
case FileIndexOut:
Serial.println(F("Datei Index außerhalb der Grenzen"));
break;
case FileMismatch:
Serial.println(F("Datei nicht auffindbar"));
break;
case Advertise:
Serial.println(F("In Werbung"));
break;
default:
break;
}
break;
default:
break;
}
}