Bu Arduino projesi, popüler DFRobot DFPlayer Mini MP3 modülünü projenize entegre etmeniz için gereken temel altyapıyı sunar. Kod yapısı, modülün donanımsal haberleşmesini başlatmanın yanı sıra SD kartın takılma/çıkarılma durumlarını, oynatma kararlılığını ve olası donanımsal arıza geri bildirimlerini seri port üzerinden anlık olarak yakalar.

SoftwareSerial kütüphanesini ve pin tanımlamalarını (3. ve 2. pinler) aktif hale getirmelisiniz. ESP32, STM32 veya Arduino Mega gibi alternatif kartlarda ise doğrudan boşta olan bir donanımsal UART birimini (örneğin Serial1) kullanabilirsiniz. Arduino IDE ye DFRobotDFPlayerMini kütüphanesini eklemeyi unutmayın.
#include "DFRobotDFPlayerMini.h"
//Uno için alttaki 2 satırı aktif edin. Baştaki // leri silin ->
#include "SoftwareSerial.h"
SoftwareSerial Serial1(3, 2); //RX, TX
DFRobotDFPlayerMini myDFPlayer;
void setup()
{
Serial.begin(115200);
Serial1.begin(9600);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
//Use softwareSerial to communicate with board
if (!myDFPlayer.begin(Serial1)) {
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(0);
delay(100);
myDFPlayer.volume(15); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3. to loop, exchange 'play' for 'loop'
}
void loop()
{
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read());
}
}
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;
}
}
Taslak içerisinde yer alan printDetail fonksiyonu, modülden gelen UART veri paketlerini çözümleyerek geliştiriciye rehberlik eder. loop döngüsü içinde sürekli dinlenen veri akışı sayesinde şu durumlar gerçek zamanlı raporlanır:
Modülün kararlı çalışabilmesi için yükleme yapıldıktan sonra Arduino Seri Monitör ekranının 115200 baud hızına ayarlanması gerekir. Açılış esnasında SD kart dosya yapısının taranması 3 ila 5 saniye sürebileceğinden, sistem hazır olana kadar myDFPlayer.begin(Serial1) doğrulaması döngü içerisinde bekletilmektedir.
Kaynak:DFPlayer Mini | Wiki | UAL Creative Computing Institute
Henüz yorum yapılmamış. İlk yorumu siz yapın!