Aller au contenu


paquito

Inscrit(e) (le) 22 nov. 2021
Déconnecté Dernière activité janv. 10 2022 04:53
-----

Messages que j'ai postés

Dans le sujet : Interrompre un fichier audio en cours de lecture en fonction d'une...

07 janvier 2022 - 09:18

Bonsoir,
Voici les modifications effectuées:
 
void loop()
{
 Serial.println("debut du loop");

 // ACQUISITION ET TRAITEMENT DU SIGNAL DU CANAL 3 DE L'EMETTEUR RC
  
  // On Mesure la durée du signal canal 3 
  Duree_Signal_Canal_3 = pulseIn(Signal_Canal_3, HIGH); 
  
  // On Convertit la durée du signal du canal 3 en pourcentage ( -100% = au manche mini, +100% = au manche maxi, le neutre étant à 0%)
  Valeur_Signal_Canal_3 = map(Duree_Signal_Canal_3,Temps_Mini_3,Temps_Maxi_3,-100,100); 
  
  // Si le signal du canal 3 n'est pas dans la plage de temps ( mini ou maxi) avec une tolérance
  if ( Duree_Signal_Canal_3 <= 1055  || Duree_Signal_Canal_3 >= 1895 ) 
  {
      Valeur_Signal_Canal_3=0;  // On considère que la valeur du  signal du canal 3 est égale à 0% ( manche au neutre)
      Compteur_Impulsions=0;// On reset le compteur à 0
      Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions sur le manche du canal 3
  } 

 Puis :

 

//ACTIVATION DES MELODIES
     
// Alarme 1               
                        
  if(Memoire_Bruitage==1)// Si le compteur d'impulsions est égal à 1
  {                         
  Serial.println("Play Alarm1 start"); 
  tmrpcm.play("Alarm1.wav");// On diffuse la mélodie                        
  Serial.println("Play Alarm1 started"); 
  }               
                
// Corne de brume  
               
  if(Memoire_Bruitage==2)// Si le compteur d'impulsions est égal à 2
  {               
  Serial.println("Play Horn1 start"); 
  tmrpcm.play("Horn1.wav");// On diffuse la mélodie                         
  Serial.println("Play Horn1 started");  
  }
                         
//Ancre 
             
  if(Memoire_Bruitage==-1) //Si le compteur d'impulsions est égal à -1
  {                     
  Serial.println("Play Ancre start"); 
  tmrpcm.play("Ancre.wav");// On diffuse la mélodie                                                          
  Serial.println("Play Ancre started"); 
  }              


// Sonnette
            
  if(Memoire_Bruitage==-2)// Si le compteur d'impulsions est égal à -2
  {
  Serial.println("Play Ring start"); 
  tmrpcm.play("Ring.wav");// On diffuse la mélodie
  Serial.println("Play Ring started"); 
  }

Voici la copie du moniteur série pour un compteur à 1 et la diffusion de l'alarme 1.

Je constate que très peu d'écart de temps:

20:50:10.518 -> Play Alarm1 start
20:50:10.552 -> Play Alarm1 started

20:50:07.319 -> debut du loop
20:50:07.319 ->  Compteur = 0
20:50:07.319 ->  Memoire de Bruitage = 0
20:50:07.455 -> debut du loop
20:50:07.455 ->  Compteur = 0
20:50:07.455 ->  Memoire de Bruitage = 0
20:50:07.523 -> debut du loop
20:50:07.658 ->  Compteur = 1
20:50:07.658 ->  Memoire de Bruitage = 0
20:50:07.728 -> debut du loop
20:50:07.796 ->  Compteur = 1
20:50:07.796 ->  Memoire de Bruitage = 0
20:50:07.896 -> debut du loop
20:50:07.896 ->  Compteur = 1
20:50:07.896 ->  Memoire de Bruitage = 0
20:50:07.997 -> debut du loop
20:50:07.997 ->  Compteur = 1
20:50:07.997 ->  Memoire de Bruitage = 0
20:50:08.100 -> debut du loop
20:50:08.100 ->  Compteur = 1
20:50:08.100 ->  Memoire de Bruitage = 0
20:50:08.200 -> debut du loop
20:50:08.200 ->  Compteur = 1
20:50:08.200 ->  Memoire de Bruitage = 0
20:50:08.337 -> debut du loop
20:50:08.337 ->  Compteur = 1
20:50:08.337 ->  Memoire de Bruitage = 0
20:50:08.440 -> debut du loop
20:50:08.440 ->  Compteur = 1
20:50:08.440 ->  Memoire de Bruitage = 0
20:50:08.541 -> debut du loop
20:50:08.541 ->  Compteur = 1
20:50:08.541 ->  Memoire de Bruitage = 0
20:50:08.643 -> debut du loop
20:50:08.643 ->  Compteur = 1
20:50:08.643 ->  Memoire de Bruitage = 0
20:50:08.746 -> debut du loop
20:50:08.746 ->  Compteur = 1
20:50:08.746 ->  Memoire de Bruitage = 0
20:50:08.883 -> debut du loop
20:50:08.883 ->  Compteur = 1
20:50:08.883 ->  Memoire de Bruitage = 0
20:50:08.983 -> debut du loop
20:50:08.983 ->  Compteur = 1
20:50:08.983 ->  Memoire de Bruitage = 0
20:50:09.086 -> debut du loop
20:50:09.086 ->  Compteur = 1
20:50:09.086 ->  Memoire de Bruitage = 0
20:50:09.187 -> debut du loop
20:50:09.187 ->  Compteur = 1
20:50:09.187 ->  Memoire de Bruitage = 0
20:50:09.323 -> debut du loop
20:50:09.323 ->  Compteur = 1
20:50:09.323 ->  Memoire de Bruitage = 0
20:50:09.423 -> debut du loop
20:50:09.423 ->  Compteur = 1
20:50:09.423 ->  Memoire de Bruitage = 0
20:50:09.526 -> debut du loop
20:50:09.526 ->  Compteur = 1
20:50:09.526 ->  Memoire de Bruitage = 0
20:50:09.628 -> debut du loop
20:50:09.628 ->  Compteur = 1
20:50:09.628 ->  Memoire de Bruitage = 0
20:50:09.764 -> debut du loop
20:50:09.764 ->  Compteur = 1
20:50:09.764 ->  Memoire de Bruitage = 0
20:50:09.865 -> debut du loop
20:50:09.865 ->  Compteur = 1
20:50:09.865 ->  Memoire de Bruitage = 0
20:50:09.969 -> debut du loop
20:50:09.969 ->  Compteur = 1
20:50:09.969 ->  Memoire de Bruitage = 0
20:50:10.072 -> debut du loop
20:50:10.072 ->  Compteur = 1
20:50:10.072 ->  Memoire de Bruitage = 0
20:50:10.208 -> debut du loop
20:50:10.208 ->  Compteur = 1
20:50:10.208 ->  Memoire de Bruitage = 0
20:50:10.312 -> debut du loop
20:50:10.312 ->  Compteur = 1
20:50:10.312 ->  Memoire de Bruitage = 0
20:50:10.415 -> debut du loop
20:50:10.415 ->  Compteur = 1
20:50:10.415 ->  Memoire de Bruitage = 0
20:50:10.518 -> debut du loop
20:50:10.518 -> Play Alarm1 start
20:50:10.552 -> Play Alarm1 started
20:50:10.552 ->  Compteur = 0
20:50:10.587 ->  Memoire de Bruitage = 0
20:50:10.653 -> debut du loop
20:50:10.653 ->  Compteur = 0
20:50:10.653 ->  Memoire de Bruitage = 

De la même manière la copie du moniteur série pour un compteur à 2 et la diffusion de la Corne de brume  .

Je constate que très peu d'écart de temps:

21:09:52.979 -> Play Horn1 start
21:09:53.010 -> Play Horn1 started
21:09:49.907 -> debut du loop
21:09:49.907 ->  Compteur = 0
21:09:49.907 ->  Memoire de Bruitage = 0
21:09:50.009 -> debut du loop
21:09:50.111 ->  Compteur = 1
21:09:50.111 ->  Memoire de Bruitage = 0
21:09:50.216 -> debut du loop
21:09:50.250 ->  Compteur = 1
21:09:50.250 ->  Memoire de Bruitage = 0
21:09:50.349 -> debut du loop
21:09:50.349 ->  Compteur = 1
21:09:50.349 ->  Memoire de Bruitage = 0
21:09:50.453 -> debut du loop
21:09:50.453 ->  Compteur = 1
21:09:50.453 ->  Memoire de Bruitage = 0
21:09:50.555 -> debut du loop
21:09:50.555 ->  Compteur = 1
21:09:50.555 ->  Memoire de Bruitage = 0
21:09:50.656 -> debut du loop
21:09:50.792 ->  Compteur = 2
21:09:50.792 ->  Memoire de Bruitage = 0
21:09:50.862 -> debut du loop
21:09:50.897 ->  Compteur = 2
21:09:50.897 ->  Memoire de Bruitage = 0
21:09:51.001 -> debut du loop
21:09:51.001 ->  Compteur = 2
21:09:51.001 ->  Memoire de Bruitage = 0
21:09:51.105 -> debut du loop
21:09:51.105 ->  Compteur = 2
21:09:51.105 ->  Memoire de Bruitage = 0
21:09:51.244 -> debut du loop
21:09:51.244 ->  Compteur = 2
21:09:51.244 ->  Memoire de Bruitage = 0
21:09:51.344 -> debut du loop
21:09:51.344 ->  Compteur = 2
21:09:51.344 ->  Memoire de Bruitage = 0
21:09:51.451 -> debut du loop
21:09:51.451 ->  Compteur = 2
21:09:51.451 ->  Memoire de Bruitage = 0
21:09:51.555 -> debut du loop
21:09:51.555 ->  Compteur = 2
21:09:51.555 ->  Memoire de Bruitage = 0
21:09:51.654 -> debut du loop
21:09:51.654 ->  Compteur = 2
21:09:51.654 ->  Memoire de Bruitage = 0
21:09:51.790 -> debut du loop
21:09:51.790 ->  Compteur = 2
21:09:51.790 ->  Memoire de Bruitage = 0
21:09:51.891 -> debut du loop
21:09:51.891 ->  Compteur = 2
21:09:51.891 ->  Memoire de Bruitage = 0
21:09:51.993 -> debut du loop
21:09:51.993 ->  Compteur = 2
21:09:51.993 ->  Memoire de Bruitage = 0
21:09:52.095 -> debut du loop
21:09:52.095 ->  Compteur = 2
21:09:52.095 ->  Memoire de Bruitage = 0
21:09:52.229 -> debut du loop
21:09:52.229 ->  Compteur = 2
21:09:52.229 ->  Memoire de Bruitage = 0
21:09:52.334 -> debut du loop
21:09:52.334 ->  Compteur = 2
21:09:52.334 ->  Memoire de Bruitage = 0
21:09:52.435 -> debut du loop
21:09:52.435 ->  Compteur = 2
21:09:52.435 ->  Memoire de Bruitage = 0
21:09:52.539 -> debut du loop
21:09:52.539 ->  Compteur = 2
21:09:52.539 ->  Memoire de Bruitage = 0
21:09:52.669 -> debut du loop
21:09:52.669 ->  Compteur = 2
21:09:52.669 ->  Memoire de Bruitage = 0
21:09:52.771 -> debut du loop
21:09:52.771 ->  Compteur = 2
21:09:52.771 ->  Memoire de Bruitage = 0
21:09:52.875 -> debut du loop
21:09:52.875 ->  Compteur = 2
21:09:52.875 ->  Memoire de Bruitage = 0
21:09:52.979 -> debut du loop
21:09:52.979 -> Play Horn1 start
21:09:53.010 -> Play Horn1 started
21:09:53.010 ->  Compteur = 0
21:09:53.045 ->  Memoire de Bruitage = 0
21:09:53.113 -> debut du loop
21:09:53.113 ->  Compteur = 0
21:09:53.113 ->  Memoire de Bruitage = 0

Pour les autres mélodies c'est identique

 

Merci pour votre aide

 


Dans le sujet : Interrompre un fichier audio en cours de lecture en fonction d'une...

06 janvier 2022 - 07:32

Bonsoir,

 

Avec le code ci-dessous, j'ai bien la mélodie de jouée, le compteur et la mémoire de bruitage sont bien resetés mais le compteur n'évolue pas tant la mélodie n'est pas terminée.

 

Merci pour votre aide.


Dans le sujet : Interrompre un fichier audio en cours de lecture en fonction d'une...

05 janvier 2022 - 08:12

Bonsoir à tous, 

 

A l'occasion de la nouvelle année je vous souhaite tous mes vœux de bonheur et surtout une bonne santé, je reviens vers vous concernant ma problématique qui n'est toujours pas résolue.

Afin de vous faciliter  la compréhension de mon code, je l'ai modifié pour qu'il soit  moins " imbriqué et compliqué " et compte 7 parties distinctes qui pourraient être comparées à des "fonctions":

 

- DEFINITION DES VARIABLES

- ACQUISITION ET TRAITEMENT DU SIGNAL DU CANAL 3 DE L'EMETTEUR RC

- COMPTAGE DES IMPULSIONS DU MANCHE DU CANAL 3

- TRAITEMENT DES IMPULSIONS DU CANAL 3

- ACTIVATION DES MELODIES

- DESACTIVATION DE LA MEMOIRE DE BRUITAGE

-  AFFICHAGE DES INFORMATIONS SUR LE MONITEUR SERIE

 

 

//DEFINITION DES VARIABLES


// Le canal 3 Manche côté droit de la RC Graupner à fond en BAS ( mini) et à fond en HAUT (maxi) 


int Signal_Canal_3 = 2;      // Signal du récepteur du canal 3 Broche D2 
int Duree_Signal_Canal_3;     // Durée du signal du canal 3 en microseconde  ( pour visualiser le temps mini et temps maxi sur le moniteur série)


int Valeur_Signal_Canal_3;    // Valeur de la durée du signal du canal 3 convertie en pourcentage ( pour commander les mélodies)


int Temps_Mini_3 = 1070;         // Durée mini de l'impulsion du signal en microseconde ( manche au mini)   ( pour débugger)
int Temps_Maxi_3 = 1870;         // Durée maxi de l'impulsion du signal en microseconde ( manche au maxi)   ( pour débugger)  


//on définit les temporisations
int Tempo_Cycle_Impulsions= 0;// Temporisation du cycle d'impulsions sur le manche du canal 3


//on définit les mémoires utilisées
int Memoire_Valeur_Haute_Canal_3 = 0; // Mémoire de la valeur haute du signal du canal 3 ( +5 volts pour éviter de compter des impulsions lors du maintien du manche en position maxi ou mini)
int Memoire_Bruitage = 0; // Mémoire de bruitage


// On définit le compteur d'impulsion du canal 3
int Compteur_Impulsions= 0;


// On définit la variable du temps actuel en ms
unsigned long Temps;


// On définit la variable du temps de la temporisation de cycle d'impulsions en ms pour mémoriser le temps écoulé depuis son activation 
unsigned long Temps_Tempo_Cycle_Impulsions;  


//on définit les librairies utilisées
#include <SPI.h>// Pour la communication avec la carte SD 
#include <SD.h>  //  Inclure la librairie SD
#include <TMRpcm.h> // bibliothèque de mélodie


TMRpcm tmrpcm;


// on définit la broche du CS du lecteur de carte SD (shield SD)
#define SDPIN 10 


void setup() 
{
Serial.begin(9600);  // Vitesse de transmission


if (!SD.begin(SDPIN)) // On initialise du lecteur de carte micro SD
{
Serial.println("initialisation ratée!");
 return;
}


tmrpcm.speakerPin = 9; // Speaker sur la broche 9
tmrpcm.setVolume(5);// On définit la gestion du volume 0 à 7
tmrpcm.quality(1); // qualité audio 0 ou 1  
}


void loop()
{


 // ACQUISITION ET TRAITEMENT DU SIGNAL DU CANAL 3 DE L'EMETTEUR RC
  
  // On Mesure la durée du signal canal 3 
  Duree_Signal_Canal_3 = pulseIn(Signal_Canal_3, HIGH); 
  
  // On Convertit la durée du signal du canal 3 en pourcentage ( -100% = au manche mini, +100% = au manche maxi, le neutre étant à 0%)
  Valeur_Signal_Canal_3 = map(Duree_Signal_Canal_3,Temps_Mini_3,Temps_Maxi_3,-100,100); 
  
  // Si le signal du canal 3 n'est pas dans la plage de temps ( mini ou maxi) avec une tolérance
  if ( Duree_Signal_Canal_3 <= 1055  || Duree_Signal_Canal_3 >= 1895 ) 
  {
      Valeur_Signal_Canal_3=0;  // On considère que la valeur du  signal du canal 3 est égale à 0% ( manche au neutre)
      Compteur_Impulsions=0;// On reset le compteur à 0
      Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions sur le manche du canal 3
  } 
                                                                    


 // COMPTAGE DES IMPULSIONS DU MANCHE DU CANAL 3
     
   if (Memoire_Valeur_Haute_Canal_3 == 0)  // Si la mémoire de la valeur haute du canal 3 est égale à 0 (0V)
   {
        if((Valeur_Signal_Canal_3)>=80) //Si la valeur du signal du canal 3 est supérieure ou égale 80% ( manche considéré au maxi) 
        {
          Memoire_Valeur_Haute_Canal_3 = 1;// On active la mémoire de la valeur haute du signal du canal 3           
          Tempo_Cycle_Impulsions= 1;// On active la temporisation du cycle d'impulsions sur le manche du canal 3
          Compteur_Impulsions++;// On incrémente de 1 dans le compteur  
          delay(100);  // Attente 100ms
        }
        if((Valeur_Signal_Canal_3)<=-80)//Si la valeur du signal du canal 3 est égale -80% ( manche considéré au mini)
        {   
         Memoire_Valeur_Haute_Canal_3 = 1;// On active la mémoire de la valeur haute du signal du canal 3        
         Tempo_Cycle_Impulsions= 1;// On active la temporisation du cycle d'impulsions sur le manche du canal 3
         Compteur_Impulsions--;// On décrémente de 1 dans le compteur  
         delay(100);  // On attend 100ms
        }    
   }


   if((Valeur_Signal_Canal_3 >= -10) && (Valeur_Signal_Canal_3 <= 10))//Si la valeur du signal du canal 3 est comprise entre -10% et 10%
   { 
   Memoire_Valeur_Haute_Canal_3= 0;// On désactive la mémoire de la valeur haute du signal du canal 3  
   }


                                                                 
// TRAITEMENT DES IMPULSIONS DU CANAL 3 


 if (( Tempo_Cycle_Impulsions)==0 )//  Si la temporisation est désactivée du cycle d'impulsions sur le manche du canal 3
 {                        
   Temps_Tempo_Cycle_Impulsions = millis();// On charge le temps actuel dans la variable  temps de départ de la temporisation (temps départ temporisation = temps actuel)
 }


  if (( Tempo_Cycle_Impulsions)==1 )// Si la temporisation de cycle d'impulsions est activée,
   {                
    Temps = millis();// On charge le temps actuel dans la variable temps
       
       if (Temps-Temps_Tempo_Cycle_Impulsions >= 3000)//Si la temporisation du cycle d'impulsions sur le manche du canal 3 est supérieure à 3 secondes
        {         
          if ((Valeur_Signal_Canal_3 >= -10) && (Valeur_Signal_Canal_3 <= 10))// Si la valeur du signal du canal 3 est comprise entre -10% et +10% ( manche du canal 3  au neutre )
          {             
           Memoire_Bruitage = Compteur_Impulsions;// On charge la valeur du compteur dans la mémoire de bruitage
           Compteur_Impulsions = 0;// On reset le compteur à 0
           Tempo_Cycle_Impulsions = 0;// On désactive la temporisation de cycle d'impulsions sur le manche du canal 3           


          }
        }
   }


          
//ACTIVATION DES MELODIES
     
// Alarme 1               
                         
  if(Memoire_Bruitage==1)// Si la mémoire de bruitage est égal à 1
  {                         
  tmrpcm.play("Alarm1.wav");// On diffuse la mélodie                        
  }               
                
// Corne de brume  
               
  if(Memoire_Bruitage==2)// Si la mémoire de bruitage est égal à 2
  {               
  tmrpcm.play("Horn1.wav");// On diffuse la mélodie                         
  }
                         
//Ancre 
             
  if(Memoire_Bruitage==-1) //Si la mémoire de bruitage est égal à -1
  {                     
  tmrpcm.play("Ancre.wav");// On diffuse la mélodie                                                          
  }              


// Sonnette
            
  if(Memoire_Bruitage==-2)// Si la mémoire de bruitage est égal à -2
  {
  tmrpcm.play("Ring.wav");// On diffuse la mélodie
  }




// DESACTIVATION DE LA MEMOIRE DE BRUITAGE


 if (Compteur_Impulsions==0)
 {
 Memoire_Bruitage=0;
 }




// AFFICHAGE DES INFORMATIONS SUR LE MONITEUR SERIE


 // On affiche la valeur du compteur sur le moniteur série
 Serial.print(" Compteur = ");
 Serial.println(Compteur_Impulsions);
      
 // On affiche la valeur de la mémoire de bruitage sur le moniteur série
 Serial.print(" Memoire de Bruitage = ");
 Serial.println(Memoire_Bruitage);


delay (100); // Pas nécessaire mais on attend 0.1 seconde avant d'afficher d'autres valeurs sur le moniteur série ( pour débugger)
}

Dans l'attente de vos réponses, je vous remercie à l'avance


Dans le sujet : Interrompre un fichier audio en cours de lecture en fonction d'une...

12 décembre 2021 - 09:42

Bonjour,

 

J'ai remplacer mon arduino nano atmega 328 ch 340 mais les broches a6 et a7 ne fonctionnent pas en sorties numériques, d'après  mes recherches sur internet cela semble normale.

 

Pouvez-vous me le confirmer?

 

Merci de votre aide


Dans le sujet : Interrompre un fichier audio en cours de lecture en fonction d'une...

25 novembre 2021 - 02:30

Pour info:
 
1- Le code suivant avec les relais, le compteur évolue et est reseté mais aucun relais n'est commandé 
 
      if( Memoire_Impulsion_Longue == 1)//Si la mémoire de l'impulsion longue est activé                
          {
            
  
//RELAIS 7        
           
           if ((Compteur_Impulsions==1)&&(digitalRead (Relais_7)== LOW)) // Si le compteur est égal 1 et que le relais 7 est désactivé
            {
              digitalWrite (Relais_7 ,HIGH);//On active le relais 7
              //Compteur_Impulsions=0;// On reset le compteur à 0
              //Tempo_Cycle_Impulsions= 0;// On désactive la temporisation de cycle d'impulsions sur le manche du canal 3     
            }


          
            if ((Compteur_Impulsions==1)&&(digitalRead (Relais_7)== HIGH ))// Si le compteur est égal 1 et que le relais 7 est activé
            {
              digitalWrite (Relais_7 ,LOW);//on désactive le relais 7
              //Compteur_Impulsions=0;// On reset le compteur à 0
              //Tempo_Cycle_Impulsions= 0;// On désactive la temporisation de cycle d'impulsions sur le manche du canal 3
             }         
         
  //RELAIS 8        
           
           if ((Compteur_Impulsions==2)&&(digitalRead (Relais_8)== LOW)) // Si le compteur est égal 2 et que le relais 8 est désactivé
            {
              digitalWrite (Relais_8 ,HIGH);//On active le relais 8
              //Compteur_Impulsions=0;// On reset le compteur à 0
              //Tempo_Cycle_Impulsions= 0;// On désactive la temporisation de cycle d'impulsions sur le manche du canal 3     
            }      
          
          if ((Compteur_Impulsions==2)&&(digitalRead (Relais_8)== HIGH ))// Si le compteur est égal 2 et que le relais 8 est activé
            {
              digitalWrite (Relais_8 ,LOW);//on désactive le relais 8
              //Compteur_Impulsions=0;// On reset le compteur à 0
              //Tempo_Cycle_Impulsions= 0;// On désactive la temporisation de cycle d'impulsions sur le manche du canal 3
             }                    
          }
       Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition  ci-dessus est vraie
      Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions sur le manche du canal 3 si aucune condition ci-dessus est vraie   
         
         } 
      //Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition  ci-dessus est vraie
      //Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions sur le manche du canal 3 si aucune condition ci-dessus est vraie        
  }    
 }

2- Avec le code suivant, j'ai bien la mélodie de jouée, le compteur est reseté mais le compteur n'évolue pas tant la mélodie n'est pas terminée

 if (( Tempo_Cycle_Impulsions)==1 )// Si la temporisation de cycle d'impulsions est activée,
   {                
    Temps = millis();// On charge le temps actuel dans la variable temps
       
       if (Temps-Temps_Depart_Tempo_Cycle_Impulsions >= Temps_Tempo_Cycle_Impulsions  )//Si la temporisation du cycle d'impulsions sur le manche du canal 3est supérieure ou égale au temps déterminé
        {
          if ((Valeur_Signal_Canal_3 >= -10) && (Valeur_Signal_Canal_3 <= 10))// Si la valeur du signal du canal 3 est comprise entre -10% et +10% ( manche du canal 3  au neutre )
          {             
                      
//BRUITAGE           
              if( Memoire_Impulsion_Longue == 0)// Si la mémoire de l'impulsion longue est désactivée
               {
     
// Alarme 1               
                         
               if(Compteur_Impulsions==1)// Si le compteur d'impulsions est égal à 1
               {               
                               
                Memoire_Bruitage=1;// On active la mémoire de bruitage à 1
                tmrpcm.play("Alarm1.wav");// On diffuse la mélodie               
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0
                }               
                
// Corne de brume  
                
               if(Compteur_Impulsions==2)// Si le compteur d'impulsions est égal à 2
               {            
                Memoire_Bruitage=2;// On active la mémoire de bruitage à 2        
                tmrpcm.play("Horn1.wav");// On diffuse la mélodie
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0            
                }
                         
//Ancre 
             
               if(Compteur_Impulsions==-1) //Si le compteur d'impulsions est égal à -1
               {         
                Memoire_Bruitage=4; // On active la mémoire de bruitage à 4                         
                tmrpcm.play("Ancre.wav");// On diffuse la mélodie
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0
                }              


// Sonnette
            
               if(Compteur_Impulsions==-2)// Si le compteur d'impulsions est égal à -2
               {
                Memoire_Bruitage=5;// On active la mémoire de bruitage à 5
                tmrpcm.play("Ring.wav");// On diffuse la mélodie
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0
                } 
            }                
      Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition  ci-dessus est vraie
     Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions sur le manche du canal 3 si aucune condition ci-dessus est vraie         
       }        
  }    
 }

3- Avec le code suivant, j'ai bien la mélodie de jouée, le compteur est reseté mais le compteur n'évolue pas tant la mélodie n'est pas terminée.

 

même problématique  avec des else if 

//BRUITAGE           
              if( Memoire_Impulsion_Longue == 0)// Si la mémoire de l'impulsion longue est désactivée
               {
     
// Alarme 1               
                         
               if(Compteur_Impulsions==1)// Si le compteur d'impulsions est égal à 1
               {                                           
                Memoire_Bruitage=1;// On active la mémoire de bruitage à 1
                Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition
                Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions 
                tmrpcm.play("Alarm1.wav");// On diffuse la mélodie               
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0
                }               
                
// Corne de brume  
                
               else if(Compteur_Impulsions==2)// Si le compteur d'impulsions est égal à 2
               {            
                Memoire_Bruitage=2;// On active la mémoire de bruitage à 2        
                Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition
                Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions
                tmrpcm.play("Horn1.wav");// On diffuse la mélodie
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0            
                }
                         
//Ancre 
             
               else if(Compteur_Impulsions==-1) //Si le compteur d'impulsions est égal à -1
               {         
                Memoire_Bruitage=4; // On active la mémoire de bruitage à 4                         
                Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition
                Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions
                tmrpcm.play("Ancre.wav");// On diffuse la mélodie
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0
                }              


// Sonnette
            
               else if(Compteur_Impulsions==-2)// Si le compteur d'impulsions est égal à -2
               {
                Memoire_Bruitage=5;// On active la mémoire de bruitage à 5
                Compteur_Impulsions = 0;//  On désactive le compteur si aucune condition
                Tempo_Cycle_Impulsions= 0;// On désactive la temporisation du cycle d'impulsions
                tmrpcm.play("Ring.wav");// On diffuse la mélodie
                Memoire_Bruitage=0;// On reset la mémoire de bruitage à 0
                } 


               else
              {
               Compteur_Impulsions = 0;// On désactive le compteur si aucune condition ci-dessus est vraie
               Tempo_Cycle_Impulsions = 0; // On désactive la temporisation du cycle d'impulsions sur le manche du canal 3 si aucune condition ci-dessus est vraie
              }           
            }                     
       }        
  }    
 }

4- Avec le code suivant, j'ai bien la mélodie de jouée, le compteur n'est pas toujours ( nouveau bug ) reseté après 4 impulsions mais le compteur n'évolue pas tant la mélodie n'est pas terminée.

 

même problématique avec le switch :

//BRUITAGE           
              if( Memoire_Impulsion_Longue == 0)// Si la mémoire de l'impulsion longue est désactivée
               {
     
// Alarme 1               


          switch (Compteur_Impulsions)
          {
          case 1: // Si le compteur d'impulsions est égal à 1
            Memoire_Bruitage = 1; // On active la mémoire de bruitage à 1
            Compteur_Impulsions = 0; // On reset le compteur à 0
            Tempo_Cycle_Impulsions = 0; // On désactive la temporisation de cycle d'impulsions sur le manche du canal 3
            tmrpcm.play("Alarm1.wav");// On diffuse la mélodie
            Memoire_Bruitage = 0; // On reset la mémoire de bruitage à 0
            break;


          case 2:  // Corne de brume// Si le compteur d'impulsions est égal à 2
            Memoire_Bruitage = 2; // On active la mémoire de bruitage à 2
            Compteur_Impulsions = 0; // On reset le compteur à 0
            Tempo_Cycle_Impulsions = 0; // On désactive la temporisation de cycle d'impulsions sur le manche du canal 3
            tmrpcm.play("Horn1.wav");// On diffuse la mélodie
            Memoire_Bruitage = 0; // On reset la mémoire de bruitage à 0
            break;

          case -1: //Ancre  //Si le compteur d'impulsions est égal à -1
            Memoire_Bruitage = 4; // On active la mémoire de bruitage à 4
            Compteur_Impulsions = 0; // On reset le compteur à 0
            Tempo_Cycle_Impulsions = 0; // On désactive la temporisation de cycle d'impulsions sur le manche du canal 3
            tmrpcm.play("Ancre.wav");// On diffuse la mélodie
            Memoire_Bruitage = 0; // On reset la mémoire de bruitage à 0
            break;

          case -2: // Sonnette // Si le compteur d'impulsions est égal à -2
            Memoire_Bruitage = 5; // On active la mémoire de bruitage à 5
            Compteur_Impulsions = 0; // On reset le compteur à 0
            Tempo_Cycle_Impulsions = 0; // On désactive la temporisation de cycle d'impulsions sur le manche du canal 3
            tmrpcm.play("Ring.wav");// On diffuse la mélodie
            Memoire_Bruitage = 0; // On reset la mémoire de bruitage à 0
            break;

          default : //aucun autre cas ci dessus est vérifié
            //on rajoute les deux lignes ici
            Compteur_Impulsions = 0;// On désactive le compteur si aucune condition ci-dessus est vraie
            Tempo_Cycle_Impulsions = 0; // On désactive la temporisation du cycle d'impulsions sur le manche du canal 3 si aucune condition ci-dessus est vraie
        }
      }
    }
  }
 }

5- J'ai les 2 sorties A6 et A7 qui ne fonctionne pas, je l'ai remplacées par D5 et D6, la carte arduino (AZDelivery Mini Nano Card V3.0 Atmega328 CH340 Version à Puce soudée avec câble USB incluant Un E-Book!) a peut être une autre défaillance qui génère ma problématique, je viens d'en recommander une ( la même peut être une erreur de ma part!!!!) sur amazon que j'aurai théoriquement lundi 29/11/2021.

 

6- Ma carte AZDelivery 3 x SPI Reader Mémoire Lecteur Micro SD TF Memory Card Module Shield Compatible avec Arduino incluant Un E-Book! aurait-elle aussi un dysfonctionnement????