Bonjour,
Je suis en train de remapper un vieux clavier à partir de sa platine (pas de ps/2 ni d'usb bien sûr), ce qui me fait arriver à une matrice de 8 x 8.
Chaque touche pressée vient fermer le circuit entre 1 ligne et une colonne (je crois qu'on dit contact sec mais pas sûr).
Je pense utiliser mon arduino micro pro et la librairie keyboard (l'idée est de le faire detecter comme un clavier usb habituel)
Est ce que je prends un risque à ce que les contacts écoutés soient directs?
J'ai vu que beaucoup de touches de claviers modernes ont des resistances à chaque touche, pourquoi ?
bonsoir,
on dit effectivement "contact sec", et les résistances dont tu parles permettent d'éviter les courts-circuits entre +Vcc et 0V lors des appuis : ce sont ce qu'on appelle des "pull-up" ou "pull-down".
MAIS je vois que @dfgh est en train de te répondre, je lui laisse la main.
Si c'est à chaque ligne ce sont des résistances car on va mettre par exemple une colonne à 5V et la ligne sélectionnée par le bouton pressé va passer à 5V. Mais les autres lignes sont en l'air. Pour éviter cela, on va mettre une résistance vers la masse de toutes les lignes pour fixer le potentiel à 0 pour les lignes non sélectionnées.
Si on appuie sur 3 touches dans 3 coins, on aura le mêmes potentiels que si on appuie sur les 4 coins. On peut prendre en compte une seule touche, mais en cas d'appuis multiple cela ne marche pas.
Si il y a un composant sur chaque bouton, c'est en principe une diode qui permet de lire plusieurs touches.
tu peux voir que tu as les ports B et D disponibles.
le principe est de mettre les colonnes sur un port ex : B et les colonnes sur l'autre port ex : D
tu valides B en entrees pullup, et D en sorties à LOW. tu lis le port B et tu sais quel bit de B est à LOW
tu valides D en entrées pullup , et B en sorties à LOW. tu lis le port D et tu sais quel bit de D est à LOW
donc les contacts "écoutés" sont "protégés" par les résistances de pullup.
j'ai déjà utilisé cette librairie avec un clavier matricé , garanti sans résistances
Alors je prenais l'exemple des touches "modernes" mais mon clavier l'est absolument pas donc c'est vraiment du contact sec, pour être transparent il s'agit d'un clavier de minitel, ci joint une photo de la platine (edit: au post suivant je suis limité à une image par post. Ce fut très plaisant de lire les chemins et retrouver la correspondance des touches.
J'ai fais un erratum sur le nom de ma carte arduino, qui est un arduino micro pro mega32u4
(que je ne retrouve pas sur le listing des hardwares officiels).
Si jamais en appuyant sur deux touches il y avait un problème, cela se saurait! Je ne crois pas qu'une bibliothèque officielle puisse faire cette erreur.
Pour qu'il y ait un problème, il faudrait mettre au moins une broche à HIGH au lieu de INPUT_PULUP.
Le problème peut venir si on pilote en direct et que l'on ne fait pas attention.
Si il n'y a pas de diodes, on peut reconnaitre deux touches en même temps. Il faut par contre que le code soit fait pour. Le code rapide du post#4 ne le permet pas. Pour les lire, il faut mettre tout en INPUT_PULLUP sauf la première colonne à LOW et regarder les lignes. Puis passer ainsi avec les colonnes suivantes.
Sans diodes on ne peut pas distinguer si il y a 3 ou 4 touches appuyées et si il y en a trois, on ne peut pas savoir lesquelles quand les boutons en question sont aux coins d'un rectangle.
Avec des diodes, on peut voir toutes les touches appuyées avec l'algorithme de ce post.