Arduino Uno 上的 DF Player Mini 无法播放
DF Player Mini on Arduino Uno Not Playing
我遇到了一个让我发疯的问题。我想使用 dfmini 播放器在 arduino 上播放歌曲并将其输出到 8 欧姆 0.5W 扬声器上,但没有任何效果。我正在使用 DFRobotDFPlayerMini 库代码按原样但根本没有播放。这是我的连接照片。
Image Here
如果我的照片不清楚,我深表歉意,因为我没有时间用软件绘图,而且我没有使用面包板,因为实际上 DF Player 比孔稍大。
使用的 Arduino 引脚为 11,10 和 5V 以及用于 GND 的 2 个引脚
这是按原样使用的 DFRobot 库的代码。
SD 卡上的文件位于 mp3 文件夹中,写为 0001.mp3 0002.mp3 ..etc
当我连接并尝试时。 MP3 播放器上的蓝色 LED 不亮,在串行监视器波特 115200 上:
DFRobot DFPlayer 迷你版
DFRobot DFPlayer 迷你演示
正在初始化 DFPlayer ...(可能需要 3~5 秒)
DFPlayer Mini 在线。
在串行监视器波特 9600 上:
⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮,f⸮⸮⸮⸮⸮⸮⸮⸮
如果有人能解决这个问题,将不胜感激
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
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, false)) { //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(10); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
static unsigned long timer = millis();
if (millis() - timer > 3000) {
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("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 DFPlayerUSBInserted:
Serial.println("USB Inserted!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB Removed!");
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;
}
}
尝试更改:
if (!myDFPlayer.begin(mySoftwareSerial, false))
至:
if (!myDFPlayer.begin(mySoftwareSerial, true, false))
出现的问题是在 Arduino 电缆中,确保电缆本身工作正常
我遇到了一个让我发疯的问题。我想使用 dfmini 播放器在 arduino 上播放歌曲并将其输出到 8 欧姆 0.5W 扬声器上,但没有任何效果。我正在使用 DFRobotDFPlayerMini 库代码按原样但根本没有播放。这是我的连接照片。 Image Here 如果我的照片不清楚,我深表歉意,因为我没有时间用软件绘图,而且我没有使用面包板,因为实际上 DF Player 比孔稍大。 使用的 Arduino 引脚为 11,10 和 5V 以及用于 GND 的 2 个引脚 这是按原样使用的 DFRobot 库的代码。 SD 卡上的文件位于 mp3 文件夹中,写为 0001.mp3 0002.mp3 ..etc 当我连接并尝试时。 MP3 播放器上的蓝色 LED 不亮,在串行监视器波特 115200 上: DFRobot DFPlayer 迷你版 DFRobot DFPlayer 迷你演示 正在初始化 DFPlayer ...(可能需要 3~5 秒) DFPlayer Mini 在线。 在串行监视器波特 9600 上: ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮,f⸮⸮⸮⸮⸮⸮⸮⸮ 如果有人能解决这个问题,将不胜感激
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
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, false)) { //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(10); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
static unsigned long timer = millis();
if (millis() - timer > 3000) {
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("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 DFPlayerUSBInserted:
Serial.println("USB Inserted!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB Removed!");
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;
}
}
尝试更改:
if (!myDFPlayer.begin(mySoftwareSerial, false))
至:
if (!myDFPlayer.begin(mySoftwareSerial, true, false))
出现的问题是在 Arduino 电缆中,确保电缆本身工作正常