Bonjour, j'ai un autre problème de boucle sur mon programme. C'est pour réaliser un autotest d'interrupteur, je demande à l'opérateur d'appuyer sur 8 boutons et si je détecte l'appuie je dis que c'est bon et sinon je dis que ce n'est pas bon. ca marchait mais j'ai remarqué que en cas de panne d'un bouton le test était bloqué la et je souhaite donc rajouter un timer pour que si l'opérateur appuie sur le bouton mais que celui ci est en rade, le programme passe au prochain step au bout de 5 s...
voila le bout de code:
//Autotest commandes boite de raccordement EV:
for (int i = 0; i < nombreCommandes; i++) {
genie.WriteStr(9, "appuyer sur Cde bte raccord EV");
tempo = millis();
evenement = lireEvenement(&numPoussoir);
while( millis() - tempo < 5000 || evenement != EVENEMENT_PRESSE){
evenement = lireEvenement(&numPoussoir);
if (evenement == EVENEMENT_PRESSE) { //si on appuie sur une commande du boitier de raccordement EV
resultatAT++;
genie.WriteStr(affCr[numPoussoir + 16], "OK");
} else {
genie.WriteStr(affCr[numPoussoir + 16], "NOK");
}
delay(10);
}
}
//autotest des commandes déportées:
for (int i = 0; i < nombreCommandes; i++) {
genie.WriteStr(9, "appuyer sur Cde deportee EV");
etatCev[i] = digitalRead(pinCEV[i]);
if (etatCev[i] != 0) {
tempo = millis();
while (millis() - tempo < 5000 || etatCev[i] == 1) {
etatCev[i] = digitalRead(pinCEV[i]);
if (etatCev[i] == 0) {
resultatAT++;
genie.WriteStr(affCr[i + 24], "OK");
} else {
genie.WriteStr(affCr[i + 24], "NOK");
}
}
} else {
genie.WriteStr(affCr[i + 24], "NC");
AT++;
}
}
La première partie du code test 8 boutons qui sont sur un seul fil, si au bout de 5s le bouton n'est pas détecté appuyé je passe au bouton suivant et ainsi de suite.
La deuxième partie ce sont des télécommandes déportées optionnelles du coup si je met à la masse la pin de mesure ca signifie que la télécommande n'est pas connectée… pour le reste c'est le même principe, je détecte un appui je met ok sinon je met nok.
Le problème est que la tempo marche sur toute la boucle for au lieu de fonctionner sur la while. Je souhaite en fait que pour chaque bouton, l'opérateur a 5s pour appuyé sinon on considère que le bouton est HS et on passe au bouton suivant. donc si on passe les 5 s je veux afficher NOK et incrémenter ma boucle for… alors que la, d'une je n'ai pas le NOK qui s'affiche et en plus j'ai 5s pour appuyé sur les 8 boutons en gros…