Need Help with mini dfplayer

I am not very proficient with arduino, and i was trying to build an mp3 player using an Arduino Pro Micro and a mini dfplayer connected to a pair of earbuds.

i started with a simple code found on youtube to expand upon, but after briefly working it stopped working all of a sudden and now, while i can sometimes hear the static sound of the earbuds "working" when connecting them, music no longer plays

code:

#include "mp3tf16p.h"

MP3Player mp3(8,9);

void setup() {

Serial.begin(9600);

mp3.initialize();

mp3.playTrackNumber(1,30);

}

void loop() {

// put your main code here, to run repeatedly:

}

mp3tf16p.h code:

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

#define MP3_ERROR_ONLY 1
#define MP3_ALL_MESSAGE 2

class MP3Player
{
private:
SoftwareSerial *mySoftwareSerial;
void statusOnSerial(uint8_t type, int value);
void waitPlayIsTerminated(void);
int p_RX;
int p_TX;

public:
DFRobotDFPlayerMini player;
MP3Player(int RX, int TX);
~MP3Player();
void playTrackNumber(int trackNumber, int volume, boolean waitPlayTerminated = true);
boolean playCompleted(void);
void initialize(void);
int serialPrintStatus(int errorOnly);
};

MP3Player::MP3Player(int RX, int TX)
{
p_TX = TX;
p_RX = RX;
}

MP3Player::~MP3Player()
{
}

void MP3Player::initialize(void)
{
mySoftwareSerial = new SoftwareSerial(p_RX, p_TX);

mySoftwareSerial->begin(9600);
Serial.println(F("Initializing MP3Player ..."));

if (!player.begin(*mySoftwareSerial,true,false))
{
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)
;
}
player.volume(10);
Serial.println(F("MP3Player online."));
}

void MP3Player::playTrackNumber(int trackNumber, int volume, boolean waitPlayTerminated)
{
player.volume(volume);
player.play(trackNumber);
if (waitPlayTerminated)
{
waitPlayIsTerminated();
}
}

void MP3Player::waitPlayIsTerminated(void)
{
while (!playCompleted())
{
}
}

boolean MP3Player::playCompleted(void)
{
if (player.available())
{
return player.readType() == DFPlayerPlayFinished;
}
return false;
}

// Print the detail message from DFPlayer to handle different errors and states.
//

int MP3Player::serialPrintStatus(int verbose)
{
if (player.available())
{
uint8_t type = player.readType();
int value = player.read();
if (verbose == MP3_ERROR_ONLY)
{
if (type == DFPlayerError)
{
statusOnSerial(type, value);
}
}
else
{
statusOnSerial(type, value);
}
if(type == DFPlayerError) {
return value;
} else {
return 0;
}
}
}

void MP3Player::statusOnSerial(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;
}
}

the Gnd and Vcc are all connected directly to the arduino pro micro,TX is connected to the 8 pin directly while RX is connected to pin 9 through a 1K Resistor
the ear jack should be wired to thre correct pins (not stereo) and to the gnd of the arduino

After you learn how to properly post , look into a library for that then look at the sample code. YT samples vary a lot in quality and often do not work at all.

If you use DFPlayerMini in I/O mode, you only need to send a short LOW signal to IO_1 or IO_2 to load the next or previous file. Hold that LOW a little longer on IO_1 or IO_2 to increase or decrease volume.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.