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 电缆中,确保电缆本身工作正常