Vérifier état pendant un certains temps

Hello à tous !!!

Je suis en galèèèèère !

Je dois vérifier qu'un capteur hall reste en LOW pendant disons 2 secondes, voici la condition que je dois vérifier :

if ((val4 == 4)&& (hallState1 == LOW)) {
     
     i = i + 1;
     val1 = i;
     } 
}

Je pense à un truc avec la fonction millis() mais je ne trouve pas !!!

Je veux donc commencer à compter quand l'état est vérifié. Si j’atteins 2 sec, je pars sur une chose, si je ne l'atteins pas (car l'état à changé ) je pars sur autre chose.

Merci d'avance à tous !

hello
un truc comme ça ?

void loop() {
  unsigned long debut= millis();
if ((val4 == 4)&& (hallState1 == LOW)) //la condition est confirmée, on entre dans le while
{
 while ( (val4 == 4)&& (hallState1 == LOW) && (millis-debut<2000)){};//on attend 2 Secondes ou qu'une des deux autres conditions soit fausse   
 if (millis-debut>2000){on par sur autre chose};
}//sinon, si <200 c'est qu'on est sorti du while car le capteur hall à changé d'état et on boucle pour remettre "debut" à jour
}