MEMBUAT MP3 DENGAN DF PLAYER WEMOS DAN DOT MATRIK DENGAN TAMPILAN TRACK JUDUL LAGU
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
#include <IRremoteESP8266.h>
#include <IRrecv.h>
#include <IRutils.h>
#include <MD_Parola.h>
#include <MD_MAX72XX.h>
#include <SPI.h>
#define IR_PIN D5
#define RX_PIN D6
#define TX_PIN D7
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define DATA_PIN D0
#define CS_PIN D3
#define CLK_PIN D4
SoftwareSerial mySerial(RX_PIN, TX_PIN);
DFRobotDFPlayerMini mp3;
IRrecv irrecv(IR_PIN);
decode_results results;
MD_Parola matrix = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
const char* songTitles[] = {
"0001 SURAT ALFATIHAH",
"0002 SURAT ALBAQORAH",
"0003 SURAT AL-IMRAN",
"0004 SURAT AN-NISA"
};
int currentTrack = 1;
void setup() {
Serial.begin(115200);
mySerial.begin(9600);
irrecv.enableIRIn();
matrix.begin();
matrix.setIntensity(3);
matrix.displayClear();
if (!mp3.begin(mySerial)) {
Serial.println("Gagal inisialisasi DFPlayer Mini!");
displayMessage("DFPlayer Error");
while (true);
}
mp3.volume(10);
}
void displayMessage(const char* message) {
matrix.displayClear();
matrix.displayText(message, PA_CENTER, 100, 1000, PA_SCROLL_LEFT, PA_SCROLL_LEFT);
while (!matrix.displayAnimate()) {
delay(100);
}
}
void playTrack(int track) {
if (track > 0 && track <= (sizeof(songTitles) / sizeof(songTitles[0]))) {
mp3.play(track);
Serial.print("Playing: ");
Serial.println(songTitles[track - 1]);
displayMessage(songTitles[track - 1]);
}
}
void loop() {
if (irrecv.decode(&results)) {
if (results.value == 0xFFA25D) { // Tombol Play
playTrack(currentTrack);
} else if (results.value == 0xFF629D) { // Tombol Stop
mp3.stop();
Serial.println("Stop");
displayMessage("Stop");
} else if (results.value == 0xFFE21D) { // Tombol Next
if (currentTrack < (sizeof(songTitles) / sizeof(songTitles[0]))) {
currentTrack++;
}
playTrack(currentTrack);
} else if (results.value == 0xFF22DD) { // Tombol Previous
if (currentTrack > 1) {
currentTrack--;
}
playTrack(currentTrack);
} else if (results.value == 0xFF02FD) { // Tombol Volume Up
mp3.volumeUp();
Serial.println("Volume Up");
displayMessage("Volume Up");
} else if (results.value == 0xFFC23D) { // Tombol Volume Down
mp3.volumeDown();
Serial.println("Volume Down");
displayMessage("Volume Down");
} else if (results.value == 0xFFE01F) { // Tombol EQ Mode
mp3.EQ(DFPLAYER_EQ_JAZZ);
Serial.println("EQ Mode Changed");
displayMessage("EQ Mode");
}
irrecv.resume();
}
delay(100);
}
Komentar
Posting Komentar