Algorithme pour if imbriqués et passage conditionnel
develdelphi
Messages postés97Date d'inscriptionmercredi 7 avril 2004StatutMembreDernière intervention20 avril 2009
-
27 juin 2007 à 12:10
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 2007
-
2 oct. 2007 à 14:46
Bonjour,
Voici un algorithme que j'ai fait et dont le but est de, si et seulement si le microphone d'environnement n'est pas connécté (moyenne 0 )au système pendant 60 sec et que nous sommes en mode automatique (P1_5 1), d'afficher sur l'écran "No ambiance micro" et egalement de faire une alerte sonore (Gong) les 5 premières minutes si le micro d'environnement n'est pas connécté. Après les 5 minutes passées on devra toujours affiché "No ambiance micro" mais il ne devrait plus avoir d'alerte sonore. Tel est le cycle.
Deplus si le microphone est reconnécté il faut pouvoir réinitialisé correctement les variables de façon à refaire correctement le cycle normale si le micro se deconnète à nouveau:
Voici mes variables:
<!-- BEGIN TEMPLATE: bbcode_code -->
data unsignedchar CPT_NoMic=0;
bit NoMic_Bit=0; // variable pour dire que le microphone est reconnécté
int Al_no_mic=0; //270607 variable pour jouer gong si pas de micro env
Voici mon code:
if((moyenne==0)&&(P1_5 == 1))// If AUTOMATIC MODE & ADC Average=0
{
CPT_NoMic++;
if( CPT_NoMic>61) //2706 ajout car si pas alors on ne repasse pas dans "No ambiance microphone"
CPT_NoMic=0;
if( Al_no_mic>6) //2706 ajout car si pas alors on ne repasse pas dans "No ambiance microphone"
Al_no_mic=0;
}
/* //2706 dis car intégrer en plus le gong pendant 5 reprises si pas mic env
if ((CPT_NoMic==60)&&(NoMic_Bit==0)) // If ADC Average=0 during 60 seconds
{
#ifdef DEBUG_ME //testali0304
printf("No ambiance microphone\n"); // No Ambiance microphone => Volume = maximum
#endif //testali0304
CPT_NoMic=0;
NoMic_Bit=1;
}
*/
if((CPT_NoMic==60)&&(NoMic_Bit==0)&&(Al_no_mic<=5))// If ADC Average=0 during 60 seconds
{
printf("No ambiance microphone\n"); // No Ambiance microphone => Volume = maximum
The_Guardian
Messages postés317Date d'inscriptionvendredi 25 mai 2007StatutMembreDernière intervention19 octobre 20071 2 oct. 2007 à 14:46
Bonjour,
ta question n'est pas claire en fait pour moi. Enfin la manière d'expliquer le problème et du coup le programme qui en résulte est dur à lire. Je vais essayer de me clarifier solo:
_ tu as une fonction qui est executee toutes les secondes, disons il faut qu'au début tu mettes à jour la moyenne du bruit d'ambiance puis ensuite vient ton problème et ce que tu veux dire c'est :
SI mode_automatique ET moyenne=0 ALORS
SI on-est-dans-les-5-premieres-minutes ALORS
faire un GONG sonore
FSI
afficher l'alerte
FINSI
mettre a jour la moyenne
Quoi encore, pense aussi à mettre des noms de variables explicites plutot que P1_5, tu see ?
=