Ardu? No!Les boutons ≫ Matrice triangulaire poly

Matrice triangulaire poly

On voit parfois traîner sur le net le schéma pour faire une matrice triangulaire poly. Le problème des boutons est qu'ils laissent passer le courant dans les deux sens et que cela fait des erreurs de lecture. En ajoutant une diode en série avec chacun des boutons, certains pensent que la lecture est poly. Le schéma est le suivant:

Schéma faux pour la matrice triangulaire poly

Sur une matrice aussi grande, ce n'est pas facile d'y voir quelque chose, je vais essayer avec trois entrées (et donc 3 boutons).

Schéma pour la matrice triangulaire poly avec 3 boutons

Nous allons voir que cela ne fonctionne pas. Dans un premier temps, je vais supposer que les diodes ont un seuil nul. Les boutons SW1 et SW3 sont appuyés. Les entrées sont en INPUT_PULLUP sauf une de temps en temps que l'on passera à OUTPUT en niveau LOW. Voici le tableau des lectures des entrées:

 Entrée à LOW  lecture de DO  lecture de DO  lecture de DO 
D0(LOW)HIGHHIGH
D1LOW(LOW)HIGH
D2LOWLOW(LOW)

Maintenant si on ferme aussi SW2, on obtient exactement les mêmes lectures. Cela ne fonctionne donc pas. Pour que cela fonctionne, il faudrait peut-être lire un LOW si on passe au travers d'une diode et un HIGH si on passe au travers de deux diodes ou plus. Mais avec une Arduino un LOW est certain en dessous de 30% de VCC et un HIGH à partir de 70%. Si un diode à un seuil de 0,3VCC, deux diodes auraient un seuil de 0,6VCC ce qui serait insuffisant.

Si vous avez une solution je suis preneur.

Si on veut une lecture poly, il faut se rabattre sur une matrice carrée.