Bonjour,
à tous je suis débutant avec l'arduino, et j'aimerai faire une enceinte portable pour ma fille.
actuellement cela fonctionne bien bouton pause/lecture, précédent,suivant VOL + et Vol -.
J'aimerai ajouter 2 boutons pour que ça lance la lecture aléatoire dans un dossier "musique" et l'autre dans un dossier histoire.
Le problème c'est que je n'arrive pas a faire de l'aléatoire dans un dossier.
Pouvez vous me donné quelque piste ? car la je bloque un peux.
Merci
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
const int btnNext = A0;
const int btnPause = A1;
const int btnPrevious = A2;
const int volumeUP = A3;
const int volumeDOWN = A4;
int pinLed=2;
int btnmusiques=3;
int btnhistoires=4;
boolean Playing = false;
boolean mode = true;
void setup()
{
pinMode(btnPause, INPUT);
pinMode(btnNext, INPUT);
pinMode(btnPrevious, INPUT);
pinMode(volumeUP, INPUT);
pinMode(volumeDOWN, INPUT);
pinMode(pinLed,OUTPUT);
pinMode(btnmusiques,INPUT);
pinMode(btnhistoires,INPUT);
digitalWrite(btnPause, HIGH);
digitalWrite(btnNext, HIGH);
digitalWrite(btnPrevious, HIGH);
digitalWrite(volumeUP, HIGH);
digitalWrite(volumeDOWN, HIGH);
digitalWrite(btnmusiques, HIGH);
digitalWrite(btnhistoires, HIGH);
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(10); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
Playing = true;
mode = true;
digitalWrite(pinLed,HIGH); // on passe le pin à +5V
}
void loop()
{
if (digitalRead(btnmusiques) == LOW)
{
if(Playing)
{
myDFPlayer.playLargeFolder(1,1);
delay(500);
mode = true;
Serial.println(mode);
}
}
if (digitalRead(btnhistoires) == LOW)
{
if(Playing)
{
myDFPlayer.playLargeFolder(2,1);
delay(500);
mode = false;
Serial.println(mode);
}
}
if (digitalRead(btnPause) == LOW)
{
if(Playing)
{
myDFPlayer.pause();
delay(500);
Playing = false;
}
else
{
Playing = true;
myDFPlayer.start();
delay(500);
}
}
if (digitalRead(btnNext) == LOW)
{
if(Playing)
{
myDFPlayer.next();
delay(500);
}
}
if (digitalRead(btnPrevious) == LOW)
{
if(Playing)
{
myDFPlayer.previous();
delay(500);
}
}
if(digitalRead(volumeUP) == LOW)
{
myDFPlayer.volumeUp();
delay(500);
Serial.println(myDFPlayer.readVolume());
}
if(digitalRead(volumeDOWN) == LOW)
{
myDFPlayer.volumeDown();
delay(500);
Serial.println(myDFPlayer.readVolume());
}
if (myDFPlayer.readType() == DFPlayerPlayFinished) { // si fin de chanson
Serial.println("fin chanson");
myDFPlayer.next();
delay(1000);
}
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerUSBInserted:
Serial.println("USB Inserted!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB Removed!");
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value) {
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}