Ardu? No!Les boutons ≫ Lecture digitale ou analogique?

Lecture digitale ou analogique?

On a deux grandes possibilités pour gérer les boutons:
- en lisant des valeurs logiques avec digitalRead()
- en lisant une valeur analogique avec analogRead()

Lecture digitale (ou logique)

La lecture numérique demande en général plus de broches que la lecture analogique, mais est moins sensible aux vieillissements des composants. C'est la plus utilisée. Si on est limité en broches disponibles, on peut utiliser les lectures analogiques.

Pour les lectures digitales, on a deux sous-familles. Dans la première le ou les boutons ont une borne fixe sur une alimentation (cas classique quand on a un seul bouton) et dans la deuxième les boutons sont entre deux entrées (clavier matriciel par exemple).

Lecture analogique

Avec une Nano, Uno ou Mega, le convertisseur donne un résultat sur 10 bits soit 1024 valeurs. Si tout était parfait, on pourrait donc avec une seule entrée, différencier 1023 boutons différents si un seul bouton est appuyé à la fois (lecture mono) ou l'état de 10 boutons en lecture poly. Mais le monde des bisounours n'existant pas, on sera bien en dessous. Pour s'en rendre compte, il suffit de faire un pont diviseur avec deux résistances de 10kΩ et de voir si la valeur lue est toujours 512 ou pas. Il va donc être impossible de donner le nombre maximum de boutons que l'on peut lire avec une seule entrée. La Uno ayant un circuit CNA mal pensé, on pourra lire avec certitude moins de boutons qu'avec une Nano.

Si la lecture est capable de différentier par exemple 32 valeurs différentes, on peut différentier un appui de 1 bouton parmi 32 ou connaître l'état de tous les boutons si on en a 5 (32 états possibles). La lecture poly est donc plus limitée.

Certaines personnes ont émis l'hypothèse de différencier des boutons par une mesure de constante de temps, ce qui permettrait de différencier plus de boutons, mais les temps de lecture sont tels que cette solution est peu réaliste. Je ne la développerai pas.

Sachant qu'avec une seule broche, on peut lire deux boutons avec une lecture digitale en mono, la lecture analogique ne peut être intéressante que si l'on a au moins 2 boutons en poly ou trois boutons en mono.

Pour les lectures, on utilisera une conversion analogique → numérique et un tri sur la valeur numérique permet de connaître l'état des boutons. Plus l’intervalle numérique entre deux possibilités sera important, plus on a des chances d'avoir un résultat fiable, et/ou plus on peut mettre de boutons. L'idéal est donc de répartir les possibilités aussi régulièrement que possible sur l'étendue de mesure.