je travaille sur un programme permettant d'afficher un message d'erreur en cas de non détection d'un objet métallique au bout de 2s.
j'arrive pas à trouver la condition qui me permet d'activer mon message dès que je dépasse les
2s (dans le programme, je ne peux pas afficher le message si le capteur ne change pas d'état)
Il semble que vous n'appliquez pas les recommandations du "Règlement et bonnes pratiques du Forum Francophone”.
Votre problème n'aura sans doute pas beaucoup de chances d’être lu en totalité et ainsi d'entrainer des réponses susceptibles de concourir à sa résolution.
unsigned long start = millis(); //début du comptage de temps en ms
int compteur;
void setup() {
Serial.begin(9600);
pinMode (7, INPUT);
pinMode (13, OUTPUT);
}
void loop() {
start = millis(); //début du comptage de temps en ms
while ( (millis() - start) <= 2000 ) {
if (digitalRead(7) == HIGH) {
while (digitalRead(7) == HIGH) {}
compteur++;
}
}
if (compteur = 0) {
Serial.println("erreur");
// tone(13,10);
//delay(100);
//noTone(13);
}
else {
Serial.println(compteur);
}
compteur = 0; // remise du comteur à 0 après dépassement de la condition
}
Merci pour l'aide.
en cas de changement de passage de l'état HIGH à l'état LOW ( en moins de 2s) le compteur s'incrémente et du coup il affiche le message d'erreur
l'objectif est de ne pas afficher le message d'erreur si le capteur passe de 1 à 0 dans un temps inférieur à 2s