Bonjour,
j'ai lu sur le forum que la lecture d'un DFPlayer est non bloquante et il semble que lorsque j'enchaine des lectures de son sans attendre leur fin au bout d'un moment le process de lecture déraille : son qui ne déclenchent plus ou très brièvement.
Le DFPlayer a un PIN BUSY qui est LOW lorsque la lecture est en cours si j'ai bien compris. Dois-je gérer cela pour stopper une lecture en cours avant d'en démarrer une autre?
A quoi sert ce pin au final, on pourrait très bien faire un STOP suivi d'un PLAY non.
Vos avis bienvenus avant que je doive tout tester ...
La ref :
https://github.com/DFRobot/DFRobotDFPlayerMini/blob/master/examples/FullFunction/FullFunction.ino
Mon code
#include "HardwareSerial.h"
#include "DFRobotDFPlayerMini.h" //lib native du DFPLAYER par la cnie DFRobot
const byte RXD2 = 16; // Connects to module's RX
const byte TXD2 = 17; // Connects to module's TX
HardwareSerial dfSD(1); // Use UART channel 1
DFRobotDFPlayerMini player;
void setup() {
//Serial1.begin(9600, SERIAL_8N1,16,17);//RX,TX sur le port serial1 qui est le 3eme UART du SAOLA S2, voir https://forum.arduino.cc/t/comment-utiliser-avec-esp32s2-laffichage-sur-port-serie/941511/21?u=romainl
Serial0.begin(115200); // Use UART channel 0 pour la connexion USB et les retours print() dans la console
Serial0.println("Salut, je suis une vroum"); //test
//Use hardware Serial pour la com avec DFPLAYER
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2); // 16,17
delay(5000);
if (player.begin(dfSD)) {
Serial0.println("liaison UART avec DFPLAYER OK !");
// Set volume to maximum (0 to 30).
player.volume(25); //30 is very loud
} else {
Serial0.println("Connecting to DFPlayer Mini failed!");
}
}
void loop() {
if (Serial0.available() > 0) { // Vérifie s'il y a des données disponibles
char caractere = Serial0.read(); // Lit le caractère entrant en code ascii
//Serial0.print(caractere);
Serial0.printf("la touche tapée est : %c", caractere);
Serial0.println();
if (isdigit(caractere)) { // Vérifie si le caractère est un chiffre
uint16_t nombre = caractere - '0'; // Convertit le caractère en un entier
//en ascii le nombre 0 a pour code 48 , en soustrayant 48 du nombre entrant on obtient le bon nombre et pas le code ascii qui est un nombre 48x plus élevé
//Le fichier son est joué en son entier à moins qu'on appelle un nouveau numéro
player.play(nombre);
//Serial0.print(nombre);
//ici comme nombre est un nombre, le format doit être %d
Serial0.printf("le nombre correspondant est : %d", nombre);
Serial0.println();
}
}
}
