DFPlayer 라이브러리로 동작하는 오픈 하드웨어 미니 MP3 플레이어 모듈입니다.
마이크로 SD카드를 삽입하여 음악을 재생하며, 최대 32G까지 가능하면 별도의 MCU없이도 가단한 MP3를 구현할 수 있습니다.
#include "Arduino.h"#include "SoftwareSerial.h"#include "DFRobotDFPlayerMini.h"SoftwareSerial mySoftwareSerial(10, 11); // RX, TXDFRobotDFPlayerMini 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)) { //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);}Serial.println(F("DFPlayer Mini online."));myDFPlayer.volume(10); //Set volume value. From 0 to 30myDFPlayer.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 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;}}