Si vous voulez juste créer un clavier, sans utiliser votre Makey Makey, vous pouvez le faire en utilisant la fonctionnalité GPIO du Raspberry Pi. Mais comme indiqué précédemment, le Raspberry Pi n'a pas suffisamment de broches disponibles pour créer un clavier réellement utile.
Cependant, si vous êtes prêt à ajouter 2 IC, vous pouvez vous faire un clavier avec tellement de touches que vous aurez du mal à trouver une fonction pour chaque touche!
Ma suggestion est de connecter 2 circuits intégrés I2C au bus I2C du Raspberry Pi et de les utiliser pour créer votre propre matrice de numérisation.
Si vous utilisez un PCF8574, vous avez 8 broches d'E / S disponibles, si vous obtenez un PCF8575, vous avez même 16 broches d'E / S disponibles. En combinant alors vous pouvez obtenir une matrice de scan de:
- 64 touches: (2x PCF8574)
- 128 touches: (1x PCF8574 et 1x PCF8575)
- 256 touches: (2x PCF8575)
Vous devez toujours en utiliser un en sortie et un en entrée. Sur la sortie vous laissez un peu «marcher» du bit 0 au bit n (7 ou 15), ce sont les colonnes de la matrice. De l'autre, vous lisez constamment la valeur de l'entrée et ce sont les lignes de la matrice. La combinaison de ce bit de sortie est actif et de ce bit d'entrée est «1» est la touche qui est enfoncée.
En fait, créer la matrice est le plus de travail, et pendant que vous y êtes, n'oubliez pas d'ajouter une diode après chaque interrupteur que vous mettez dans la matrice, cette diode (une 1N4148 normale fera l'affaire) doit être placée avec l'anode au commutateur et la cathode à la ligne de ligne. La chute de tension de 0,6 V sur cette diode ne devrait pas être un problème, les 2,7 V restants (3,3 V-0,6 V) devraient toujours être un «1» logique.
La raison de ce camion de diodes est qu'il empêchera les images fantômes et le masquage des clés. Le fantôme est l'effet que si vous appuyez sur plus de trois touches en même temps, il est possible qu'il soit interprété comme une touche totalement différente car plus de lignes auront un «1» logique. Le masquage est l'effet que, si vous appuyez sur plusieurs touches et relâchez une touche, cela (dans certaines situations) ne sera pas détecté car la ligne de cette touche est toujours un «1» logique.
L'image montre un exemple de fantôme, les boutons A, B, D sont enfoncés et en plus de la ligne 1 (pour le bouton A), la ligne 2 (pour le bouton C) est également élevée, au moment où la colonne 1 est active, ce qui n'est pas correct.
Après toute l'aventure matérielle, vous devez écrire ou adapter un pilote de noyau pour utiliser réellement le clavier sous Linux. Un bon point de départ pourrait être ce lien: Pilote pour les clés sur l'expandeur IO TCA6416 I2C , c'est une idée similaire, mais utilise uniquement un clavier à 16 touches.
J'espère que ça vous aidera un peu.