Si(If) ... pendant

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

  • vous êtes retombé sous le seuil: vous regardez si millis() - tempsDepart est plus grand que votre durée minimale, si oui bingo, si non alors raté pour ce coup là et vous vous remettez en attente de passage de seuil à la hausse
  • vous êtes encore au dessus du seuil. vous regardez si millis() - tempsDepart est plus grand que votre durée minimale, si oui bingo Et vous pouvez décider de remettre temps départ au moment présent ou continuer à mesurer pour voir combien de temps vous serez resté au dessus du seuil, si non vous attendez le prochain tour de loop

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"