Modifications

Sauter à la navigation Sauter à la recherche
aucun résumé de modification
Ligne 193 : Ligne 193 :  
Donc, si vous avez raté un fichier ou si vous voulez aller en arrière, ou si vous avez traversé le répertoire, vous devrez appeler '''rewind()''' pour revenir au début du répertoire!
 
Donc, si vous avez raté un fichier ou si vous voulez aller en arrière, ou si vous avez traversé le répertoire, vous devrez appeler '''rewind()''' pour revenir au début du répertoire!
   −
== Playing all the files ==
+
== Jouer tous les fichiers ==
   −
The digital audio player plays all files in the card. To do that it recursively looks in every directory, just like lsR() above so the code looks somewhat similar. The big difference is we call the play() routine to play a file!
+
Le "digital audio player" joue tous les fichier de la carte. Pour ce faire, il cherche les fichiers dans tous les répertoires de façon récursive (comme le fait lsR() ci-avant). Cela produit un code assez similaire eu point précédent.
   −
To start, pass a directory object (like root) to '''lsR()''' which will do the following:
+
La grande différence c'est que nous appelons la fonction play() qui recherche les fichiers à jouer!
# Read a file from the directory. The files are read in the order they are copied into the directory, '''not alphabetical order'''!
+
 
# If the directories are the special links "." (current directory) or ".." (upper directory) it ignores them and goes to step 1 again.
+
Le fichier est joué à l'aide de wave.play()
# It prints out spaces to create a nicely formatted output. Each level of directory gets 2 spaces
+
 
# It prints out the name of the file in 8.3 format
+
Pour commencer, passez un objet répertoire (tel que root) a '''play()''' effectue les étapes suivantes:
# If it is a subdirectory, it makes a new object and opens up the subdirectory. Then it plays all of the wave files in that new directory
+
# Lit un fichier depuis le répertoire. Les fichier sont lus dans l'ordre dans lequel ils ont étés copiés dans le répertoire, '''pas l'ordre alphabétique'''!
# If it isn't a subdirectory, it will try to play the file by opening it as a Wave object. That requires looking through the file and trying to find a Wave header, etc. If it doesnt succeed it will print out that its not valid and skip to the next file
+
# Si le répertoire à un nom/lien spécial comme "." (répertoire courant) or ".." (répertoire parent) sont ignorés et on recommence à l'étape 1.
# If the wave file is valid, it will finally start the file by calling '''play()''' on the Wave object
+
# Il affiche des espace pour créer un format d'affichage plus sympathique. Chaque niveau de répertoire ajoute deux espaces.
# While the wave sound file is playing, it prints out a dot every 100 ms or so.
+
# Il affiche le nom du fichier au format 8.3 .
# It continues to step 1 until there are no more files to be read
+
# Si c'est un sous répertoire, il crée un nouvel objet et ouvre le sous répertoire. Ensuite, il joue tous les fichioers wave qu'il y a dans ce nouveau répertoire.
 +
# Si ce n'est pas un sous répertoire, il va essayer de jouer le fichier en ouvrant celui-ci comme un objet Wave. Cela nécessite d'ouvrir le fiochier et d'essayer de trouver l'entête Wave (Wave header), etc. S'il n'y arrive pas, il affiche un message comme quoi le fichier n'est pas valide puis il passe au fichier suivant.
 +
# Si le fichier wave est valide, il commence à le jouer en appelant la fonction '''play()''' de l'objet Wave
 +
# Tant que le fichier wave est jouer, le programme affiche un point toutes les 100 ms.
 +
# Le programme continue à l'étape 1 jusqu'à ce qu'il n'y ait plus de fichier à lire.
    
  <nowiki>/*
 
  <nowiki>/*
  * play recursively - possible stack overflow if subdirectories too nested
+
  * Joue récursivement - Possibilité de dépassement de pile (stack overflow)
 +
* s'il y a trop de répertoire imbriqués
 
  */
 
  */
 
void play(FatReader &dir)
 
void play(FatReader &dir)
 
{
 
{
 
   FatReader file;
 
   FatReader file;
   while (dir.readDir(dirBuf) > 0) {    // Read every file in the directory one at a time
+
   while (dir.readDir(dirBuf) > 0) {    // lit un à un chaque fichier du répertoire
 
     // skip . and .. directories
 
     // skip . and .. directories
 
     if (dirBuf.name[0] == '.')  
 
     if (dirBuf.name[0] == '.')  
 
       continue;
 
       continue;
 
      
 
      
     Serial.println();            // clear out a new line
+
     Serial.println();            // Affiche une nouvelle ligne
 
      
 
      
 
     for (uint8_t i = 0; i < dirLevel; i++)  
 
     for (uint8_t i = 0; i < dirLevel; i++)  
       Serial.print(' ');      // this is for prettyprinting, put spaces in front
+
       Serial.print(' ');      // amélioration de l'affichage, place des espace à l'avant
   −
     if (!file.open(vol, dirBuf)) {      // open the file in the directory
+
     if (!file.open(vol, dirBuf)) {      // Ouvre le fichier dans le répertoire
       Serial.println("file.open failed");  // something went wrong :(
+
       Serial.println("file.open failed");  // Qlque chose s'est mal passé :(
       while(1);                            // halt
+
       while(1);                            // Arrêter
 
     }
 
     }
 
      
 
      
     if (file.isDir()) {                    // check if we opened a new directory
+
     if (file.isDir()) {                    // Vérifie si c'est un nouveau sous-répertoire
 
       putstring("Subdir: ");
 
       putstring("Subdir: ");
 
       printName(dirBuf);
 
       printName(dirBuf);
       dirLevel += 2;                      // add more spaces
+
       dirLevel += 2;                      // Ajouter plus d'espace
 
       // play files in subdirectory
 
       // play files in subdirectory
       play(file);                        // recursive!
+
       play(file);                        // Récursivité!
 
       dirLevel -= 2;     
 
       dirLevel -= 2;     
 
     }
 
     }
 
     else {
 
     else {
       // Aha! we found a file that isnt a directory
+
       // HaHa! nous avons trouvé un fichier qui n'est pas un répertoire
       putstring("Playing "); printName(dirBuf);       // print it out
+
       putstring("Joue... "); printName(dirBuf); // Afficher le nom du fichier
       if (!wave.create(file)) {           // Figure out, is it a WAV proper?
+
       if (!wave.create(file)) {                 // Est-ce un fichier WAV ?
         putstring(" Not a valid WAV");    // ok skip it
+
         putstring(" fichier WAV invalide");    // non, alors on passe au suivant
 
       } else {
 
       } else {
         Serial.println();                  // Hooray it IS a WAV proper!
+
         Serial.println();                  // Hourra c'est un fichier WAV!
         wave.play();                      // make some noise!
+
         wave.play();                      // Faisons donc un peu de bruit!
 
        
 
        
         while (wave.isplaying) {          // playing occurs in interrupts, so we print dots in realtime
+
         while (wave.isplaying) {          // La reproduction audio utilise les interruption,  
           putstring(".");
+
           putstring(".");                 //    nous affichons donc les points en temps réel
 
           delay(100);
 
           delay(100);
 
         }
 
         }
         sdErrorCheck();                    // everything OK?
+
         sdErrorCheck();                    // Tout est OK?
//        if (wave.errors)Serial.println(wave.errors);    // wave decoding errors
+
//        if (wave.errors)Serial.println(wave.errors);    // Erreur de decodage wave
 
       }
 
       }
 
     }
 
     }
Ligne 259 : Ligne 264 :     
== dap_hc.pde ==
 
== dap_hc.pde ==
Here is the full sketch  
+
Voici le sketch dans son intégralité.
 +
 
 +
Note MCHobby: Les commentaires ont étés traduit dans les notes explicatives ci-dessus. Il ne le sont plus dans ce sketch.
    
  <nowiki>#include <FatReader.h>
 
  <nowiki>#include <FatReader.h>
Ligne 462 : Ligne 469 :  
</nowiki>
 
</nowiki>
   −
{{ADF-Accord}}
+
{{WaveShield-TRAILER}}
 
  −
{{MCH-Accord}}
 
29 917

modifications

Menu de navigation