Je cherche maintenant à passer une variable à la fonction
player.play();
Le code suivant fonctionne parfaitement
void loop()
{
player.play(5);
delay(5000);
}
Mais avec celui ci dessous Je n'ai aucun résultat, ni aucun retour dans la console,
puis-je avoir vos avis.
void loop() {
if (Serial.available() > 0) { // Vérifie s'il y a des données disponibles
char caractere = Serial.read(); // Lit le caractère entrant en code ascii
Serial.printf("la touche tapée est : %c", caractere);
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é
player.play(nombre);
Serial.printf("le nombre correspondant est : %c", nombre);
delay(5000);//laisser le DFPLAYER jouer le son avant de boucler
}
}
}
Parfait merci.
Je suis sur ESP32-S2-WROOM-I avec un DFPLAYER GD3200B
#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
Serial.begin(19200);
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2); // 16,17
delay(5000);
if (player.begin(dfSD)) {
Serial.println("OK");
// Set volume to maximum (0 to 30).
player.volume(25); //30 is very loud
} else {
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
void loop() {
if (Serial.available() > 0) { // Vérifie s'il y a des données disponibles
char caractere = Serial.read(); // Lit le caractère entrant en code ascii
//Serial.print(caractere);
Serial.printf("la touche tapée est : %c", caractere);
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é
player.play(nombre);
//Serial.print(nombre);
Serial.printf("le nombre correspondant est : %c", nombre);
delay(5000);//
}
}
}
Bonsoir, j'ai enfin un code qui marche
-il établi correctement la liaison avec le DFPLAYER
-il permet de faire jouer un fichier son de la carte SD en tapant son numéro dans le serial
-il établi correctement la liaison en UART avec l'ESP32SAOLA via Serial0
-il affiche correctement la touche enfoncée dans le moniteur
Un grand merci aux contributeurs de ce forum
voici le code que j'utilise
/*
DFPLAYER avec chip GD3200B:
https://github.com/enjoyneering/DFPlayer
ESP32-SAOLA-S1-WROOM-I
Topics:
DFPLAYER play file number
https://forum.arduino.cc/t/dfplayer-jouer-le-son-n/1138600/3
PRINT et PORTS UART
https://forum.arduino.cc/t/print-nest-pas-universel/1138645/9
https://forum.arduino.cc/t/acquisition-oscilloscope-demande-de-conseils/1135232/15
UART sur SAOLA
https://forum.arduino.cc/t/acquisition-oscilloscope-demande-de-conseils/1135232/18
help codes DFPLAYER
https://forum.arduino.cc/t/esp32-and-dfplayermini-not-working-for-me/1011138/13 1
*/
#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();
}
}
}