Coucou
Je pense que tu as fait 2 petites erreurs dans ton code...
À cette ligne:
if (compteur == 0)) digitalWrite(sortie, HIGH);
Il y a une parenthèse en trop:
if (compteur == 0) digitalWrite(sortie, HIGH);
Tu as mis :
derniereLecture = lecture;
en dehors du bloc if (lecture != derniereLecture),
donc même quand il n'y a pas de front, tu vas écraser l'ancienne valeur.
Il faudrait mettre la mise à jour à l'intérieur du if, uniquement quand il y a un front:
if (lecture != derniereLecture) {
...
derniereLecture = lecture; // mise à jour ici
}