Bonjour,
J'aimerais coder une instruction mais j'ai un peu de mal à introduire le temps pendant la condition, voici ce que je souhaite faire :
"Si la pression atmosphérique est entre 1013 et 1024 pendant 10s, alors fait ceci"
Merci d'avance
Bonjour,
J'aimerais coder une instruction mais j'ai un peu de mal à introduire le temps pendant la condition, voici ce que je souhaite faire :
"Si la pression atmosphérique est entre 1013 et 1024 pendant 10s, alors fait ceci"
Merci d'avance
Vous mesurerez en continu la pression dans la loop()
Dès qu’elle passe la valeur seuil vous notez le temps de départ ( millis() ) dans une première variable (unsigned long) et mettez un drapeau actif pour dire que vous êtes en train de mesurer
À chaque prochaine lecture (prochain tour de loop) deux cas sont possibles
voici un modèle non complet
const unsigned long dureeMinimum = 10000; // 10 secondes
const int valeurSeuil = 22;
unsigned long topDepart;
bool enMesure;
int lireCapteur()
{
return random(0, 101); // simulation de votre capteur
}
void setup()
{
Serial.begin(115200);
enMesure = false;
}
void loop()
{
int valActuelle = lireCapteur();
if (enMesure) { // on était au dessus du seuil, l'est-on encore ?
if (valActuelle >= valeurSeuil) { // on est toujours bon
// ===============
// A VOUS DE JOUER
// ===============
} else { // on est retombé sous le seuil
// ===============
// A VOUS DE JOUER
// ===============
}
} else { // on attend le franchissement de seuil
if (valActuelle >= valeurSeuil) { // on passe le seuil, on commence à compter
topDepart = millis();
enMesure = true;
}
}
}
c’est typiquement une définition de programme qui se prête bien à la programmation par machine à états (cf mon tuto éventuellement)
EDIT: je traite que le cas borne inférieure mais le principe est identique si vous introduisez une borne sup aussi, faut juste adapter les tests à la condition recherchée qui vous fait passer en mode "mesure de la durée"