Aller au contenu


Photo
- - - - -

Interrompre un fichier audio en cours de lecture en fonction d'une variable


23 réponses à ce sujet

#21 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 05 janvier 2022 - 10:12

Bonsoir,

et bonne année!

 

Avec tous les changements, est-ce que tu pourrais nous dire pour le code ci-dessus (ie celui que tu viens de poster) ce qui marches, et ce qui ne marches pas?


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#22 paquito

paquito

    Membre

  • Membres
  • 12 messages
  • Gender:Male
  • Location:France

Posté 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.



#23 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 260 messages
  • Gender:Male

Posté 07 janvier 2022 - 12:44

Bonjour,

est-ce que quand la mélodie joue, tu as "Compteur = " qui s'affiche dans le moniteur série? Si oui, une seule fois après le lancement du son (quasi en simultané), ou une fois toutes les 0.1 secondes?

 

 

 

Sinon, pour y voir un peu plus clair, est-ce que tu pourrais modifier le début du loop de la manière suivante :

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); 

  Serial.print("Duree_Signal_Canal_3=");
  Serial.println(Duree_Signal_Canal_3);
  
  // 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); 

et pour chaque mélodie, rajouter un println juste avant le play et un juste après: par exemple :

// Alarme 1               
                         
  if(Memoire_Bruitage==1)// Si la mémoire de bruitage est égal à 1
  {     
  Serial.println("Play Alarm1 start");                    
  tmrpcm.play("Alarm1.wav");// On diffuse la mélodie   
  Serial.println("Play Alarm1 started");                      
  }               

Et me dire :

1) la durée entre l'affichage de sart et de started (soit c'est quasi instantané, soit c'est la durée de la mélodie)

2) faire un copier coller du moniteur série. (coche la case "afficher l’horodatage", ce sera encore mieux)


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#24 paquito

paquito

    Membre

  • Membres
  • 12 messages
  • Gender:Male
  • Location:France

Posté 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

 





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users