bonsoir
dans le setup il faut initialiser une variable " temporelle "
int Vtemp=0;
dans la loop () principale , a chaque passage du pointeur programme , cette variable vas s' incrémenter de 1 a la condition que (if) le relais soit actif et que aucun sons ne sois émis.
si il y a un changement d' état du relais du a un bruit on réinitialise la variable de temps(=0).
de plus on vas fixer une valeur maximale de cette variable qui va correspondre a une durée
au sens cycle machine ,nombre de passage pointeur ,et non a une durée de type délay qui met tout le programme en pause .
par exemple 2000 boucle sans bruit et relais enclenché.
au bout d' un moment ou la lampe est allumé et qu'il n'y a pas de bruits la variable devient égale a 2000 ( par exemple , valeur qu'il faudra déterminer a taton).
alors on passe le relais a zéro et la variable a zéro
----mais ou disposer tout cela ??
la difficulté c'est que le programme ne dit pas quant le relais est a zéro ou a un ;
il inverse (!) la valeur de sortie suite a un front descendant du microphone.
maintenant comme ce point d’insertion est l' événement déclencheur , forcément
c'est la que l'on peu réinitialiser la variable temps.
Vtemp=0;
une foie sortie de l'accolade et juste avant l'accolade de fin de la loop principale ,
qui je vous signale au passage , a été oublié .
vas falloir un truc du style
previousState=soundVal;//ligne deja présente
if (relayToggle == HIGH) { Vtemp=Vtemp+1;}// début rajout
if (Vtemp==2000 && relayToggle == HIGH) //un = ou deux egal nuance a voir!
{
relayToggle = LOW;//éteindre dépend du module relais
Vtemp=0;//peut être inutile a tester
}
}// accolade finale oubliée
j 'ai supposé que le module relais devient passant quant la pin 8 de l' arduino est high
mais cela dépend du module : il faut peut être inverser les high et low ??
, c 'est vrai qu'il est initialisé en début de programme comme hight.... tout de pend si a la mise sous tension , sans faire de bruit la lampe s'allume de suite.
donc a voir