probléme de lecture d'un pin

@ le sept
je me suis mal exprimé, je parlais du prg d'origine de notre ami
il initialise un boolean à true
puis dans la boucle, si la condition est confirmée, et si le boolean est true, il exécute sa fonction d'ouverture et passe le boolean à false .
la fois suivante, le boolean est false et il ne peut plus exécuter sa fonction d'ouverture
le code d'origine en simplifié

boolean ouverturePorte = true;
setup(){}
void loop() {

  val = digitalRead(pinAction);
  if (val == 1)
    if (ouverturePorte)
    {
      digitalWrite(pinSon, HIGH);
      delay(3000);
      //etc....
      ouverturePorte = false;
    }
}