• Controlling the DFplayermini x Bluetooth mp3 player

QC

Controlling the DFplayermini x Bluetooth mp3 player

In this tutorial we will see how to make an MP3 file player with the DFplayer mini module, Arduino and a 128x32 OLED screen.

Devices and components

Arduino-Nano

Software and tools

rogerbit.

Project description

Source code

Source code

1#include "U8glib.h"//Librería para el control del display oled
2U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);// I2C / TWI Se habilita esta linea según el display a usar en este caso el driver SH1106
3#include "Arduino.h"
4#include "SoftwareSerial.h"
5#include "DFRobotDFPlayerMini.h"
6String texto = "";
7int vol = 10;
8String cadena;
9SoftwareSerial mySoftwareSerial(10, 11); // RX, TX pines por software para la comunicación con el módulo dfplayer mini
10DFRobotDFPlayerMini myDFPlayer;
11int play_d2 = 2;
12int pause_d9 = 9;
13int stop_d4 = 4;
14int next_d5 = 5;
15int prev_d6 = 6;
16int voltmas_d7 = 7;
17int volmenos_d8 = 8;
18int estado_pausa = 0;
19void setup()
20{
21 mySoftwareSerial.begin(9600);
22 Serial.begin(9600);//Velocidad del módulo bluetooth
23 pinMode(play_d2, INPUT_PULLUP);
24 pinMode(pause_d9, INPUT_PULLUP);
25 pinMode(stop_d4, INPUT_PULLUP);
26 pinMode(next_d5, INPUT_PULLUP);
27 pinMode(prev_d6, INPUT_PULLUP);
28 pinMode(voltmas_d7, INPUT_PULLUP);
29 pinMode(volmenos_d8, INPUT_PULLUP);
30 Serial.println();
31 Serial.println(F("Inicializando DFPlayer mini"));
32
33 if (!myDFPlayer.begin(mySoftwareSerial)) { //Usa softwareSerial para communicarte con el módulo mp3.
34 Serial.println(F("No es posible iniciar:"));
35 Serial.println(F("1.Comprueba las conexiones"));
36 Serial.println(F("2.Por favor inserte una tarjeta SD"));
37 while(true);
38 }
39 Serial.println(F("DFPlayer Mini online."));
40
41 myDFPlayer.volume(vol); //Se setea el volumen
42 //Se mostrará el siguente texto en el display
43 texto = "NO TRACK";
44 oled();
45}
46
47void loop()
48{
49 while (Serial.available()) {
50 delay(3);
51 char c = Serial.read();
52 cadena += c;
53 }
54 //Lectura del estado de los pulsadores
55 int boton_play = digitalRead(play_d2);
56 int boton_pause = digitalRead(pause_d9);
57 int boton_stop = digitalRead(stop_d4);
58 int boton_next = digitalRead(next_d5);
59 int boton_prev = digitalRead(prev_d6);
60 int boton_volmas = digitalRead(voltmas_d7);
61 int boton_volmenos = digitalRead(volmenos_d8);
62//Si se aprieta el botón de play se cumple
63 if(boton_play == LOW || cadena == "play"){
64 delay(100);
65 myDFPlayer.enableLoopAll();
66 myDFPlayer.play();
67texto = "PLAY";//Se mostrará el siguente texto en el display
68oled();
69 }
70//Pone en pausa el track de música
71 if(boton_pause == LOW || cadena == "pause"){
72 if(estado_pausa == 0){
73 delay(200);
74 myDFPlayer.pause();
75 texto = "PAUSE";
76 oled();
77 estado_pausa = 1;
78 }else{
79 delay(200);
80 myDFPlayer.start();//Vuelve a iniciar el tema donde quedó la pausa
81 texto = "PLAY";
82 oled();
83 estado_pausa = 0;
84 }
85 }
86//Para el track de música que se estaba repoduciendo
87 if(boton_stop == LOW || cadena == "stop"){
88 delay(100);
89 myDFPlayer.stop();
90 texto = "STOP";
91 oled();
92 }
93//Reproduce el próximo tack de música
94 if(boton_next == LOW || cadena == "next"){
95 delay(100);
96 myDFPlayer.next();
97 texto = "NEXT";
98 oled();
99 delay(500);
100 texto = "PLAY";
101 oled();
102 }
103//Reproduce el anterior tack de música
104 if(boton_prev == LOW || cadena == "prev"){
105 delay(100);
106 myDFPlayer.previous();
107 texto = "PREV";
108 oled();
109 delay(500);
110 texto = "PLAY";
111 oled();
112 }
113//Incrementa el vólumen hasta 35 como máximo
114 if(boton_volmas == LOW || cadena == "volmas"){
115 delay(100);
116 if(vol <35){
117 myDFPlayer.volumeUp();
118 vol = vol + 1;
119 oled();
120 }
121 }
122//Decrementa el vólumen hasta 0 como mínimo
123 if(boton_volmenos == LOW || cadena == "volmenos"){
124 delay(100);
125 if(vol >0){
126 myDFPlayer.volumeDown();
127 vol = vol - 1;
128 oled();
129 }
130 }
131//Habilita la reproducción la aleatoria
132 if(cadena == "random"){
133 delay(100);
134 myDFPlayer.randomAll();
135 texto = "RANDOM";
136 oled();
137 }
138//Habilita la reproducción en bucle
139 if(cadena == "eloop"){
140 delay(100);
141 myDFPlayer.enableLoopAll();
142 texto = "E.LOOP";
143 oled();
144 }
145//deshabilita la reproducción en bucle
146 if(cadena == "dloop"){
147 delay(100);
148 myDFPlayer.disableLoopAll();
149 texto = "D.LOOP";
150 oled();
151 }
152//Funciones de equalizador
153//Habilita Normal
154 if(cadena == "normal"){
155 delay(100);
156 myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
157 texto = "NORMAL";
158 oled();
159 }
160//Habilita Pop
161 if(cadena == "pop"){
162 delay(100);
163 myDFPlayer.EQ(DFPLAYER_EQ_POP);
164 texto = "POP";
165 oled();
166 }
167//Habilita Rock
168 if(cadena == "rock"){
169 delay(100);
170 myDFPlayer.EQ(DFPLAYER_EQ_ROCK);
171 texto = "ROCK";
172 oled();
173 }
174//Habilita Jazz
175 if(cadena == "jazz"){
176 delay(100);
177 myDFPlayer.EQ(DFPLAYER_EQ_JAZZ);
178 texto = "JAZZ";
179 oled();
180 }
181//Habilita Classic
182 if(cadena == "classic"){
183 delay(100);
184 myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
185 texto = "CLASSIC";
186 oled();
187 }
188//Habilita Bass
189 if(cadena == "bass"){
190 delay(100);
191 myDFPlayer.EQ(DFPLAYER_EQ_BASS);
192 texto = "BASS";
193 oled();
194 }
195 if(cadena != ""){
196 cadena = "";
197 }
198 }
199
200
201//Funcíon para mostrar texto en el dislplay oled
202void oled(){
203u8g.firstPage();
204 do {
205 draw();//Llama a la función draw
206 } while( u8g.nextPage() );
207 // Reconstruir la imagen después de un tiempo
208 delay(50);
209 }
210
211 void draw(void) {
212 //Imprimimos en pantalla
213 u8g.setFont(u8g_font_unifont);
214 u8g.setPrintPos(0, 20);
215 u8g.print("REPRODUCTOR MP3");//
216 //Muestra la palabra ESTADO
217 u8g.setPrintPos(0, 40);
218 u8g.print("ESTADO: ");//
219 u8g.setPrintPos(55, 40);
220 u8g.print(texto);//Estado de reproducción del track de música PLAY STOP PAUSE
221//Muestra la palabra de VOLUMEN
222 u8g.setPrintPos(0, 60);
223 u8g.print("VOLUMEN:");
224 u8g.setPrintPos(65, 60);
225 u8g.print(vol);//Muestra el incremento o decremento del volumen de reproducción
226 }




Note: Content and images are from: https://projecthub.arduino.cc/, with some modifications.
If you want it removed due to copyright reasons, please leave a comment. Thank you.
I want to share this article more widely so that everyone knows about Arduino and your project.

Easy remote control

Remotely control an LED with ease. Devices and components Arduino Nano 33 BLE with headers Box 525 Resistors precision 1% - 17 values Breadb...