Comment un travail Matrice clé
Quelles sont les matrices clés?


Les boutons sont nommés à la colonne: nom de la ligne qui se connectent. Par exemple, le bouton supérieur gauche est nommé A1 et en bas à droite est nommé D4.
Comment une clé-matrice?
Pour comprendre le principe de fonctionnement, je vais redessiner la matrice ci-dessus sans couleurs. Je vais aussi mettre des broches de connexion à chaque fil de ligne et colonne. Ensuite, je donnerai à une seule colonne, la colonne B. Le fil rouge, indique qu'il a le pouvoir et le bouton qui est le violet indique que le bouton est enfoncé. Ensuite, je vais simuler un bouton à appuyer sur le bouton numéro B3:
Une matrice dans la vie réelle
Alors, comment une matrice fonctionne enfin? Si vous avez comprendre l'exemple précédent, il sera très facile pour vous de suivre. La matrice est commandée par un microcontrôleur. Pour la matrice 4x4 ci-dessus à 16 touches, 8 broches du microcontrôleur sont utilisées. Les 4 premières broches seront OUTPUTS et seront reliés aux fils de colonnes, tandis que les 4 autres repères seront entrées et sont reliés aux fils de lignes. Les sorties du microcontrôleur ne seront pas tous le pouvoir en même temps. Les sorties passent haut un par un dans le cycle. Cela se produit plusieurs fois par seconde, mais je vais ralentir les choses.
Donc, cela est -Dans motion- très lent comment un microcontrôleur typique du cycle de ses sorties. Pendant ce temps, il surveillera également les entrées pour un signal. Tant que toutes les entrées sont faibles (avec une résistance ou tirer vers le bas avec des résistances pull-down uC internes), l'uC ne prendra aucune mesure. Maintenant, supposons que l'opérateur appuie sur le bouton 3C. Regardez ce qui se passe:
Le microcontrôleur boucles de ses sorties normalement. L'opérateur a appuyé sur le bouton C3. Ce bouton a connecter la matrice col C, à la rangée de la matrice 3. Lorsque la sortie C du microcontrôleur passe au niveau haut, le signal arrive également à l'entrée 3 du microcontrôleur, par l'intermédiaire du bouton pressé. Le uC surveille les 4 entrées et détecte que lorsque la sortie spécifique (C) est élevé, il y a un signal HAUT à l'entrée 3. Donc, cela signifie que le C3 d'entrée est pressé! Il est facile non?
En appuyant sur plusieurs boutons sur une matrice
En appuyant sur plusieurs boutons simultanément sur une matrice est pas toujours une bonne idée. Il y a des situations que la matrice fonctionne normalement, mais pas toujours. Supposons par exemple que quelqu'un a appuyé sur les boutons B1, B2 et B3 simultanément. Qu'est-ce qui va se passer? Nous allons jeter un coup d'oeil:

Lorsque la sortie B devient élevée, les trois entrées 1,2 et 3 du microcontrôleur également devenir HIGH. En supposant que le firmware est écrit d'une manière qui peut gérer un tel événement, l'opération sera effectuée normalement. Le uC comprendra que les boutons B1, B2 et B3 sont pressés. Voyons une autre situation où les boutons A3, B3 et C3 sont pressés:
Dans ce cas, la matrice sera également fonctionner normalement. Le microcontrôleur détecte un signal d'entrée au numéro 3, lorsque la sortie A, B et C sont élevées. Lorsque la sortie D est au niveau HAUT, aucun signal est détecté.
Le problème ghosting
Je vais continuer les exemples ci-dessus avec une autre situation, où les touches C2, B2 et B3 sont pressés simultanément:

Lorsque la sortie C est élevée, l'entrée 2 également devenir HIGH. Le uC comprendra que le bouton C2 est pressé. Mais quelque chose d'autre se passe ici. Le bouton B2 est également pressé! Cela signifie que le signal HIGH passera par le bouton B2 à la colonne B. Et en raison du fait que le bouton B3 est enfoncé, le signal arrivera simultanément à l'entrée # 3 ainsi! Mais le microcontrôleur sait qu'à ce moment, seule la sortie C est élevée et parce qu'il détecte le signal HIGH aux entrées 2 et 3, il pensera que les boutons C2 et C3 sont pressés, ce qui est faux! Le bouton C3 est pas vraiment pressé! Ceci est connu comme ghosting. et donne généralement un casse-tête pour les joueurs PC, surtout quand le jeu nécessite plusieurs boutons à presser simultanément. Prenons par exemple la console MAME, qui simule les jeux d'arcade. Si vous jouez Samurai Shodown 1v1, et un joueur a une faible défense et coups de pied tandis que l'autre vole haut et utilise l'épée, il faudra 6 touches à presser! Yawks! se produit Ghosting. (C'est pourquoi je l'ai fait ma console d'arcade MAME)
Le problème de masquage P] Le problème de masquage vient continuer à le ghosting. Lors d'un masquage est produit, le contrôleur ne peut pas détecter un changement important qui a lieu. Supposons par exemple que le problème ghosting a lieu, en appuyant sur C2, B2 et B3 en même temps, comme dans l'exemple précédent. Le contrôleur pensera que le bouton C2 C3 est pressé, bien que l'opérateur n'a pas appuyé sur C3. Maintenant, l'opérateur appuie sur le bouton C3 sans relâcher tout autre bouton. Rien ne change au microcontrôleur. Et maintenant, l'opérateur relâche le bouton C2. Ce qui se produit? Rien! Le microcontrôleur pense toujours que C2 est pressé et ne peut pas détecter la sortie de bouton! C'est le problème de masquage, aussi un casse-tête de joueurs. [/ P]



En appuyant sur les touches C2, B2 et B3 en même temps, le problème ghosting se produit.
L'opérateur appuie sur le bouton C3, mais rien ne change
Maintenant, l'opérateur relâche le bouton C2. Pourtant rien ne change et l'uC ne peut pas détecter la sortie de bouton! Masking a lieu.
Toute solution au masquage et ghosting?
Oui il y a! Et il est un pas cher. En utilisant une diode pour chaque bouton, les problèmes de masquage et ghosting sont immédiatement résolus! Voilà comment cela fonctionne:
La situation ci-dessus devrait normalement provoquer ghosting. Pourtant, les diodes empêche le courant de revenir en arrière. Pour une meilleure compréhension, vous pouvez voir les 3 étapes de l'animation ci-dessus ici (comme toujours, cliquez pour agrandir les images):



Parce que la vitesse du vélo doit être assez rapide (certains Khz), vous devez choisir des diodes appropriées. Une solution est pas cher les diodes à usage général 1N4148. Si vous prévoyez d'avoir plusieurs clés et donc vous avez besoin d'échantillonnage plus rapide, puis sélectionnez une diode Schottky à la place.
Qu'en est-il une matrice avec des sorties au lieu des entrées?
Ceci est également un chapitre très intéressant avec des matrices. En utilisant des matrices, vous pouvez contrôler par exemple 9 LEDs chacun séparément, avec seulement 6 sorties. Regardez comment cela fonctionne:

Au-dessus il y a un 3 typique x 3 matrice LED. Toutes les broches du microcontrôleur, pour les colonnes et les lignes sont maintenant OUTPUTS. Supposons maintenant que toutes les sorties sont élevées. Toutes les LED ont HAUT sur l'anode et la cathode, et cela signifie que rien LED s'allume! Voici comment désactiver complètement la matrice LED, en donnant haute ou basse à toutes les sorties. Maintenant, supposons que nous voulons tourner au milieu LED. Pour ce faire, nous donne des réponses à la colonne 2 et les lignes 1 et 3, et LOW à la colonne 1 et 3 et la ligne 2. C'est ce qui va se passer:

La LED centrale est polarisée en direct et donc des lumières. Toutes les autres LED sont soit polarisée en inverse, ou ils ont la même tension (positive ou négative) à leurs deux fils, et par conséquent, ils ne le font pas la lumière. De cette façon, une personne peut contrôler par exemple de 64 LED chacun d'eux séparément, avec une matrice 8x8, en utilisant seulement 16 sorties à partir d'un microcontrôleur.
Une question cependant; sera la diode correctif pour
ghosting travail lorsque les entrées utilisent pull-up
résistances (comme les Arduinos font de nos jours) par simple
commutation de direction des diodes et en utilisant un 0v
sortie comme la ligne « active »?
Je ne rowport d'abord = 0x00, pour en faire une entrée
port d'accès et la colonne haute Barrettes un par un.
J'ai clavier à matrice 8x8, que je veux lire
plusieurs touches pressées (maximum 32 à la fois, comme je l'ai
je suis la conception pour échiquier)
Pouvez-vous s'il vous plaît consulter:
En suivant les lignes prend du temps.
mon circuit a 4-18-4 broches.
Alors, évidemment. il est pour 8x18 matrice.
Base sur les spécifications, il attire 250mA.
Depuis les ports usb fournit 500mA.
Puis-je faire juste une connexion parallèle pour obtenir la
autres 250mA?
Je vais l'utiliser 250mA pour alimenter un autre circuit.
Ce circuit sera utilisé pour automatiser les clics
du circuit du clavier.
J'ai maintenant le circuit du clavier USB.