Module son minimp3 lecture fichier

bonjour
j'ai ecrit un petit programme qui ,en autre doit lire des fichiers MP3 .
actuellement ,j'avais fait un test avec1 seul fichier MP3 , tout fonctionne bien,

ce matin , j'ai voulu lire un 2 et 3 fichier MP3, et la tout ce complique, puisque la lecture du bon fichier ne se fait pas .

sur ma carte SD , j'ai cree le repertoir MP3 et mis mes quatres fichiers . libelé 0001-bouton1.mp3;0002-radar.mp3; 0003-rire.mp3 et enfin 0004-tombe.mp3

puis j'utilise la commande
myDFPlayer.play(3); pour lire ici le fichier 3 donc 0003-radar.mp3

au resultat il me lit le fichier 0001- bouton1.mp3 ?

j'ai repris pas à pas et voila le resultat

si je commande myDFPlayer.play(1); j'ai le fichier 0004 en lecture
si je commande myDFPlayer.play(2); j'ai le fichier 0002 en lecture
si je commande myDFPlayer.play(3); j'ai le fichier 0001 en lecture
si je commande myDFPlayer.play(4); j'ai le fichier 0003 en lecture

le programme ci-dessous

// declacaration des bibliotheques
#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED
#include "Arduino.h"//son 
#include "SoftwareSerial.h"// son 
#include "DFRobotDFPlayerMini.h"//son

//declaration variables



#define WS2812pin 3 // n° pin des led w2812
#define WS2812nbled 7 // n° de led sur le bandeau ws2818
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//systaxe strip.setPixelColor(ws2812numerodelaled, rouge, vert, bleu);
Adafruit_NeoPixel strip = Adafruit_NeoPixel(WS2812nbled, WS2812pin, NEO_GRB + NEO_KHZ800);

DFRobotDFPlayerMini myDFPlayer;//son 

SoftwareSerial mySoftwareSerial(A4, A5); // RX, TX  SON si sur autre port que A4(rx) et A5(tx) 1 
int compteurson=0;// son variable pour eviter la repetion du son 

int SW1=A0;
int etatsw1=0;

int SW2=A1;
int etatsw2=0;

int SW3=A2;
int etatsw3=0;

int SW4=A3;
int etatsw4=0;




void setup() //definition des pin

{

  mySoftwareSerial.begin(9600);//SON si sur autre port que 0(rx) et (tx) 1 
 if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3. si sur autre port que 0(rx) et (tx) 1 
  
  
  
 }
  
  
  myDFPlayer.volume(28);  //Set volume value. From 0 to 30 SON
  myDFPlayer.play(1);  //lit le 3 fichier mp3 SON  mettre un son comme boitier X activer
  
  pinMode(A0,INPUT);//SW1
  pinMode(A1,INPUT);//SW2
  pinMode(A2,INPUT);//SW3
  pinMode(A3,INPUT);//SW4
  
  pinMode(6,OUTPUT);//ES1
  pinMode(3,OUTPUT);//le ws2812
  strip.begin();//ws2812
  strip.show(); // intialise toutes les led du ws2812

 
  
  
  
  
  
  
  }



void loop() //programme principal tourne en boucle 
  
 {
  
  
  etatsw1=digitalRead(SW1);// on regard letat du entrée 1 
  delay(50);
  etatsw2=digitalRead(SW2);// on regarde letat du entree 2
  delay(50);
  etatsw3=digitalRead(SW3);// on regarde letat du entree 3
  delay(50);
  etatsw4=digitalRead(SW4);// on regarde letat du entre 4
  delay(50);
  
 
  // *********on allume ce que lon veut superviser enfonction del'etat************.
   // on part sur la base de  supervise toutes les entrees et sorties
  //**********entrée  ou sortie utilise= led allume en vert si condition ok en rouge si condition no***********
  //***********entree ou sortie non utilisé =led eteinte**************************
// on part sur led1 = entree1, led2=entree2, led3=entrée3,.....
// reste à savoir comment on les dispose et on les connecte sur la   boite ???
// sinon on supervise que les sortie surc la meme base ! 
  
 // ******************on verifie et affiche l'etat des entreées qui sont necessaire *****************************
  if (etatsw1==HIGH)
  {strip.setPixelColor(1, 0, 255, 0);//ws2812 on allume la led n°1 en vert
  strip.show();//ws2812 on affiche
  }
  else 
  {
  strip.setPixelColor(1, 255, 0, 0);//ws2812 on allume la led n°1 en rouge
  strip.show();//ws2812 on affiche
  
  
  }
  
   if (etatsw2==HIGH)
  {strip.setPixelColor(2, 0, 255, 0);//ws2812 on allume la led n°2 en vert
  strip.show();//ws2812 on affiche
  }
  else 
  {
  strip.setPixelColor(2, 255, 0, 0);//ws2812 on allume la led n°2 en rouge
  strip.show();//ws2812 on affiche
  }
   
    if (etatsw3==LOW)
  {strip.setPixelColor(3, 0, 255, 0);//ws2812 on allume la led n°3 en vert
  strip.show();//ws2812 on affiche
  }
  else 
  {
  strip.setPixelColor(3, 255, 0, 0);//ws2812 on allume la led n°3 en rouge
  strip.show();//ws2812 on affiche
  }
  
   if (etatsw4==HIGH)
  {strip.setPixelColor(4, 0, 255, 0);//ws2812 on allume la led n°3 en vert
  strip.show();//ws2812 on affiche
  }
  else 
  {
  strip.setPixelColor(4, 255, 0, 0);//ws2812 on allume la led n°3 en rouge
  strip.show();//ws2812 on affiche
  }
  
  
  
  
  //============= imbrication des entrées à testées====================================
  if (etatsw1== HIGH && etatsw2== HIGH && etatsw3==LOW && etatsw4==HIGH )
  // ici on supervise la sortie repondant à la condition du IF
 
  {
   //********on supervise l'etat de la sortie 1******************** 
   //vert=  toute les conditions sont ok 
   //rouge= une ou plusiers condition pas bonnes
     
    //  ws2812allume la led n° 5 en verte
   //systaxe strip.setPixelColor(ws2812numerodelaled, rouge, vert, bleu);
   strip.setPixelColor(5, 0, 255, 0);//ws2812 on allume la led n°1 en vert
   strip.show();//ws2812 on affiche 
   
    // on joue un son 1 seul fois si les conditions sont reunies       
        //  if (compteurson==0)// afin de ne pas repeter le son en bcle
        // {
         //    myDFPlayer.play(1);  //lit le 1 fichier mp3 SON mettre son comme coffre ouvert
          //   delay(50);
          //  compteurson=compteurson+1;// on rajoute +1 
          //}
         
         digitalWrite(6,HIGH);// ES1 est Haute +5V 
  }
  
  else 
  {
   // ws2812allume la led n° 5 en rouge
   //systaxe strip.setPixelColor(ws2812numerodelaled, rouge, vert, bleu);
   strip.setPixelColor(5, 255, 0, 0);//ws2812 on allume la led n°1 en rouge
   strip.show();//ws2812 on affiche
   
   compteurson = 0 ;//son blce mise à zero de la variable compteur son 
   
   digitalWrite(6,LOW);//ES1 est BASSe à OV 
  
  
  
  }
  
}

j'avoue que je ne comprends pas .

Le code se place entre balises "code" pas "Quote".
C'est trop chiant à lire ...

Tu peux corriger ?

Faire un Nouveau Sujet ou le corriger avec les Balises... - Français - Arduino Forum voir CORRIGER UN POST EXISTANT

Tu auras plus de chances de réponse.

Autrement :

Personnellement j'utilise plutôt :

Voici le structure de ma SD :

  • FOLDER 01
  • 001-dog.mp3
  • 002-crocodile.mp3
  • 003-aligator.mp3
  • 004-gorilla.mp3
  • FOLDER 02
  • 001-cuckoo.mp3
  • 002-finch.mp3
  • 003-raven.mp3
  • 004-crow.mp3
  • 005-magpie.mp3

Comme tu peux le voir, les noms de répertoire sont sur 2 digits. Les nom de fichiers sont sur 3 digits, mais tu peux ajouter du texte derrière pour que ce soit plus parlant. Le DFPLAYER n'en tient pas compte.

    myDFPlayer.playFolder(2, 1); // pour entendre le chien

bonjour
la correction esf faite,
je suis un peu troublé avec ces balises.

la librairie que j'utilise ne permet pas cette lecture directe ,j'ai du decomposé
mais le resultat est le meme.

voici les modifications j'ai fait.

 myDFPlayer.volume(28);  //Set volume value. From 0 to 30 SON
  myDFPlayer.playMp3Folder(1);  
  delay(50);
  myDFPlayer.play(2);

bonjour
j'ai trouvé sur le fichier je mettais sur 4 digit et non 3 .
maintenant c'est ok
merci

la librairie que j'utilise ne permet pas cette lecture directe ,j'ai du decomposé

J'utilise la même pourtant.

OK. Cool.
@+

bonsoir

A t'on un moyen d'attendre qu'un fichier en cours de lecture soit fini pour executer le suivant ?

Bien sûr.

Tu dois lire ce que raconte le DFPLAYER et ensuite appeler myDFPlayer.readType()
Si la méthode retourne DFPlayerPlayFinished c'est fini.

J'utilise la librairie DFRobotDFPlayerMini