Grove mp3

j'utilise un module grove mp3 2.0 avec une arduino mega.

Ce programe marche parfaitement mais je peut lire que 1 seul son alors que j'en ai 3 sur ma carte sd
comment faire pour pouvoir tous les lire? sans retéleverser le programe :wink:

#include <SoftwareSerial.h>
#include <MP3Player_KT403A.h>

SoftwareSerial mp3(9, 10); // ICI CHOISIR LES BONNES PIN (mais c'est idiot sur un MEGA !!)

void setup()
{
  mp3.begin(9600);   // le module grove est configuré pour discuter à 9600 bauds, donc c'est la vitesse que l'on choisit
  Serial.begin(9600);
  delay(100); // petit délai pour s'assurer que tout s'initialise bien
  SelectPlayerDevice(0x02);       // choisir la carte SD.
  SetVolume(20);                // définir le volume entre 0 et 30 (ou entre 0x00 et 0x1E)
 
}

void loop()
{
  SpecifyMusicPlay(1);            // lancer la chanson à l'index 1 (index entre 0-65535 - dans l'ordre d'ajout sur la carte SD sans doute)
  while (QueryPlayStatus() != 0); // uniquement si on veut que le programme attende activement la fin de la chanson
 
 
  }

Il vous faut mettre une variable à la place du 1 dans SpecifyMusicPlay([color=red][b]1[/b][/color]); et bien sûr avoir un moyen de faire changer cette variable

En effet, l'instruction
while(QueryPlayStatus() != 0);attend la fin du morceau en cours.

Pour jouer 3 morceaux, tu peux dupliquer les lignes :

    SpecifyMusicPlay(1);
    while(QueryPlayStatus() != 0);
    SpecifyMusicPlay(2);
    while(QueryPlayStatus() != 0);
    SpecifyMusicPlay(3);
    while(QueryPlayStatus() != 0);

quand je test avec :

SpecifyMusicPlay(1);
while(QueryPlayStatus() != 0);
SpecifyMusicPlay(2);
while(QueryPlayStatus() != 0);
SpecifyMusicPlay(3);
while(QueryPlayStatus() != 0);

il y a toujours que la première musique qui ce lance

affichez ce que retourne "QueryPlayStatus()"

J'ai trouvé ça :

  if (QueryPlayStatus() == 0 && current_index < max_index) {
    PlayNext();
    current_index++;
  }
  else if (current_index >= max_index) {
    current_index = 0;
    PlayPause();
  }

Il faut définir en début de code

int max_index = 3;
int current_index = 0;

Ça devrait jouer les 3 morceaux et s'arrêter.

Au fait, tes fichiers musicaux s'appellent bien 001.wav, 002.wav et 003.wav ?