Je sais, j'avais utilisé les pins qui étaient prévues dans l'exemple. Pour l'arduino mega, RX1 et TX1 sont les pins 19 et 18, que j'utilise maintenant.
La suite de l'aventure : mon DFPlayer Pro est connecté et fonctionne !
Mais je me rends compte qu'il est compliqué de faire des pistes comme avec le DFPlayer Mini classique. Ce module a l'air d'être prévu pour être utilisé uniquement comme un lecteur mp3 (next, previous, pause...) et non pour lire des pistes indépendamment.
Pour ce projet, j'ai de nombreux boutons et déclencheurs qui doivent chacun lancer une piste audio différente (comme une soundboard). Je ne peux pas utiliser "previous" et "next" car l'ordre dans lequel les boutons seront pressés est libre.
Il existe différents modes (SINGLECYCLE,ALLCYCLE,SINGLE,RANDOM,FOLDER)
Jusqu'ici aucun ne m'a permis d'obtenir le résultat : bouton 1 pressé, piste 1 jouée, stop.
Le code ci-dessous ne permet que de jouer la piste 1 quand le bouton 1 est pressé, lorsqu'on presse le bouton 2, il ne se passe rien.
#include <DFRobot_DF1201S.h>
#if defined(ARDUINO_AVR_UNO) || defined(ESP8266)
#include "SoftwareSerial.h"
SoftwareSerial DF1201SSerial(2, 3); //RX TX
#else
#define DF1201SSerial Serial1
#endif
DFRobot_DF1201S DF1201S;
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{ '1', '2', '3' },
{ '4', '5', '6' },
{ '7', '8', '9' },
{ '*', '0', '#' }
};
byte rowPins[ROWS] = { 10, 9, 8, 7 };
byte colPins[COLS] = { 6, 5, 4 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(115200);
DF1201SSerial.begin(115200);
while(!DF1201S.begin(DF1201SSerial)){
Serial.println("Init failed, please check the wire connection!");
delay(1000);
}
Serial.println("");
DF1201S.setVol(20);
delay(800);
Serial.print("VOL:");
/*Get volume*/
Serial.println(DF1201S.getVol());
/*Enter music mode*/
DF1201S.switchFunction(DF1201S.MUSIC);
/*Wait for the end of the prompt tone */
delay(2000);
/*Set playback mode to "repeat all"*/
DF1201S.setPlayMode(DF1201S.SINGLE);
Serial.print("PlayMode:");
/*Get playback mode*/
Serial.println(DF1201S.getPlayMode());
keypad.addEventListener(keypadEvent);
}
void loop() {
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey) {
switch (keypad.getState()) {
case PRESSED:
Serial.print(eKey);
switch (eKey) {
case '1':
DF1201S.playFileNum(1);
break;
case '2':
DF1201S.playFileNum(2);
break;
case '3':
DF1201S.playFileNum(3);
break;
}
}
}
Auriez-vous une idée de la façon d'obtenir un résultat de soundboard avec ce programme ?