Bonjour,
Le principe est le suivant :
avec en entrée pinState[ i] , en sortie pinStateDeb[ i]
on fixe un délai pendant lequel on considère qu'il peut y avoir des rebonds : debounceDelay (50 ms)
Tant que l'état du pin n'a pas changé on met à jour lastDebounceTime avec millis()
On compare via read - pinState[ i] - avec l'état conservé - pinStateDeb[ i]
Quand il change on attend la fin de debounceDelay (50 ms) pour modifier le pinStateDeb[ i] qui sera utilisé pour envoyer les bits au S88.
et on met à jour lastDebounceTime avec millis()
En résumé si au bout de debounceDelay on a à nouveau l'état du début, il ne se passe rien. Autrement dit, si il y a un parasite de moins de 50 ms, il n'est pas vu.
Par contre, si il y a des parasites qui durent plus de 50 ms, ils peuvent être interprétés comme un changement d'état. On peut augmenter les 50 ms.
Mon problème qui est un mélange des entrées reçues au S88 (des entrées sont prises pour d'autres) me semble maintenant plutôt un problème de timing à la lecture (avec un BaseStation modifié pour le S88) que de parasites. Avec le debounce, je suis passé du n'importe quoi à une permutation des entrées reproductive mais inexploitable quand même. Quand j'aurais du temps je vais me lancer dans les montages de Paco pour décoder le S88.
Cordialement