Wie ein Key Matrix Arbeits
Was sind die wichtigsten Matrizen?


Row Namen, die sie verbinden: Die Tasten sind mit der Spalte mit dem Namen. Zum Beispiel wird die obere linke Schaltfläche mit dem Namen A1 und der rechten unteren Ecke ist D4 genannt.
Wie funktioniert eine Schlüssel-Matrix funktioniert?
Um das Funktionsprinzip zu verstehen, ich werde die obige Matrix ohne Farben neu zeichnen. Ich werde auch Anschlusspins zu jeder Zeile und Spalte Draht gesetzt. Dann werde ich Macht nur eine Spalte geben, die Spalte B. Der Draht, der rot ist, zeigt an, dass sie die Macht hat, und die Taste, die lila ist, zeigt an, dass die Taste gedrückt wird. Dann werde ich auf einen Knopf drücken, um Tastennummer B3 simulieren:
Eine Matrix im wirklichen Leben
Also, wie funktioniert eine Matrix arbeitet schließlich? Wenn Sie das vorherige Beispiel verstehen, dann wird es sehr einfach für Sie zu folgen. Die Matrix wird durch einen Mikrocontroller gesteuert. Für die obige 16-Tasten-4x4-Matrix, 8 Pins des Mikrocontrollers verwendet. Die ersten 4 Pins werden OUTPUT sein und werden an die Spaltendrähte verbunden werden, während die anderen 4 Pins INPUTS sein und werden an die Zeilendraht angeschlossen werden. Die Ausgänge des Mikrocontrollers werden alle haben nicht die Macht zugleich. Die Ausgänge gehen hoch eins nach dem anderen im Zyklus. Dies geschieht viele Male pro Sekunde, aber ich werde die Dinge verlangsamen.
Also, das ist -in sehr, sehr langsam motion-, wie ein typischer Mikrocontroller würde Zyklus seine Ausgänge. Während dieser Zeit wird es überwacht auch die Eingänge für ein Signal. Solange alle Eingänge niedrig sind (mit einem Pull-Down-Widerstand oder mit Innen uC pull-down-Widerständen), wird die uC keine Aktion. Nehmen wir nun an, dass der Bediener die Taste 3C drückt. Schauen Sie, was passiert:
Der Mikrocontroller Schleifen seine Ausgänge normal. Der Bediener hat die C3-Taste gedrückt wird. Diese Taste hat die Matrix C col verbinden, mit der Matrixzeile 3. Wenn das Ausgangssignal C des Mikrocontrollers hoch wird, gelangt das Signal auch an dem Eingang 3 des Mikrocontrollers durch die gedrückte Taste. Die uC überwacht die Eingänge 4 und erkennt, dass, wenn die spezifische Leistung (C) hoch ist, ein hohes Signal am Eingang 3. So bedeutet dies, dass der Eingang C3 gedrückt wird! Leicht ist es nicht?
Durch Drücken mehrerer Tasten auf einer Matrix
mehr Tasten gleichzeitig auf einer Matrix Drücken ist nicht immer eine gute Idee. Es gibt Situationen, in denen die Matrix normal arbeitet, aber nicht immer. Nehmen wir zum Beispiel, dass jemand die Tasten B1 gedrückt, B2 und B3 gleichzeitig. Was wird passieren? Lass uns einen Blick darauf werfen:

Wenn der Ausgang B hoch wird, dann sind die drei Eingänge 1,2 und 3 des Mikrocontrollers wird auch hoch. Angenommen, dass die Firmware in einer Weise geschrieben, dass ein solches Ereignis verarbeiten kann, wird der Betrieb normal ausgeführt. Der uC wird verstehen, dass die Tasten B1, B2 und B3 gedrückt werden. Lassen Sie sich eine andere Situation sehen, wo die Tasten A3, B3 und C3 gedrückt:
In dieser Situation wird die Matrix auch normal. Der Mikrocontroller wird ein Signal an der Eingangsnummer 3, erkennen, wenn der Ausgang A, B und C hoch ist. Wenn das Ausgangssignal D HOCH ist, wird kein Signal detektiert.
Das Ghosting Problem
Ich werde die obigen Beispiele mit einer anderen Situation weiter, wo die Tasten C2, B2 und B3 gleichzeitig gedrückt werden:

Wenn der Ausgang C hoch ist, dann 2 wird der Eingang auch hoch werden. Der uC wird verstehen, dass die Taste C2 gedrückt wird. Aber etwas anderes passiert hier. Die Taste B2 wird auch gedrückt! Dies bedeutet, dass das HIGH-Signal durch die Taste B2 in die Spalte B Und aufgrund der Tatsache gehen, dass die Taste B3 gedrückt wird, wird das Signal 3 als auch gleichzeitig am Eingang # ankommen! Aber der Mikrocontroller weiß in diesem Moment, dass nur der Ausgang C hoch ist, und weil es HIGH-Signal an den Eingängen 2 und 3 erkennt, wird denken, dass die Tasten C2 und C3 gedrückt wird, etwas, das ist falsch! Die Taste C3 ist nicht wirklich gedrückt! Dies wird als Ghosting bekannt. und in der Regel gibt Kopfschmerzen PC-Spieler, vor allem, wenn das Spiel mehr Tasten erfordert gleichzeitig gedrückt werden. Nehmen Sie zum Beispiel die MAME-Konsole, die Arcade-Spiele simuliert. Wenn Sie Samurai Shodown 1v1 spielen, und ein Spieler hat eine niedrige Verteidigung und Tritte, während der andere hoch fliegen und verwendet das Schwert, wird diese 6 Tasten erfordern gedrückt werden! Yawks! Ghosting auftritt. (Das ist, warum ich meine MAME Arcade-Konsole gemacht)
Die Maskierung Problem P] Das Maskierungs Problem kommt weiterhin zu dem Ghosting. Wenn aufgetreten Maskierung kann der Controller keinen Schlüssel Änderung erfassen, die auftreten, hat. Nehmen wir zum Beispiel, dass das Ghosting Problem auftreten hat, durch Drücken der Taste C2, B2 und B3 gleichzeitig, wie im vorherigen Beispiel. Der Controller wird denken, dass die Taste C2 C3 gedrückt wird, obwohl der Bediener C3 nicht gedrückt hat. Nun drückt der Bediener die Taste C3 ohne andere Taste loslassen. Nichts ändert sich an den Mikrocontroller. Und jetzt gibt der Bediener die Taste C2. Was geschieht? Nichts! Der Mikrocontroller denkt immer noch, dass C2 gedrückt wird und die Taste loslassen nicht erkennen kann! Dies ist das Maskierungs Problem, auch ein Spieler Kopfschmerzen. [/ P]



Durch Drücken der Tasten C2, B2 und B3 gleichzeitig tritt das Ghosting Problem.
Der Bediener drückt Taste C3, noch ändert sich nichts
Nun die Bediener Taste C2. Immer noch nichts ändert und die uC kann die Taste loslassen nicht erkennen! Masking hat auftreten.
Jede Lösung für das Ghosting und Maskierung?
Ja da ist! Und es ist ein billiger. Mit Hilfe einer Diode für jede Taste werden die Maskierung und Ghosting-Probleme sofort gelöst! So funktioniert es:
Die oben beschriebene Situation würde normalerweise dazu führen, Ghosting. Dennoch verhindern die Dioden den Strom rückwärts zu gehen. Zum besseren Verständnis können Sie die 3 Schritte der obigen Animation sehen hier (wie immer, klicken Sie auf die Bilder vergrößern):



Da die Fahrgeschwindigkeit muss recht schnell sein (etwas Khz), sollten Sie die richtigen Dioden wählen. Eine günstige Lösung ist die 1N4148 Allzweck-Dioden. Wenn Sie viele Schlüssel haben zu planen und somit müssen Sie schneller Probenahme, dann wählen Sie stattdessen eine Schottky-Diode.
Und was ist mit einer Matrix mit Ausgängen statt Eingängen?
Dies ist auch ein sehr interessantes Kapitel mit Matrizen. Verwendung von Matrices können Sie steuern beispielsweise 9 LEDs jeweils separat, mit nur 6 Ausgängen. Schauen Sie, wie es funktioniert:

Darüber befindet sich eine typische 3 x 3 LED-Matrix. Alle Microcontroller-Pins, für beide Spalten und Zeilen sind jetzt ausgibt. Nehmen wir nun an, dass alle Ausgänge sind hoch. Alle LEDs haben sowohl eine hohe auf Anode und Kathode, und dies bedeutet, als keine LED-Licht! Dies ist, wie vollständig auszuschalten die LED-Matrix, durch entweder hoch oder niedrig an alle Ausgänge geben. Nehmen wir nun an, dass wir auf die mittlere LED drehen wollen. Um dies zu tun, wir HOCH geben Spalte 2 und die Zeilen 1 und 3, und LOW in der Spalte 1 und 3 und Zeile 2. Dies ist, was passieren wird:

Die mittlere LED vorwärts vorgespannt und daher leuchtet es. Alle anderen LEDs sind entweder umgekehrt vorgespannt ist, oder sie haben die gleiche Spannung (positiv oder negativ) zu ihren beiden Leitungen, und deshalb tun sie nicht leicht. Auf diese Weise kann jemand, beispielsweise Steuerung 64 LEDs jeweils separat mit einer 8x8-Matrix, unter Verwendung von nur 16 Ausgangssignalen von einem Mikrocontroller.
Eine Frage, obwohl; wird die Diode fix für
Ghosting Arbeit, wenn die Eingänge verwenden Pull-up
Widerstände (wie die Arduinos heute tun) einfach durch
Schaltrichtung der Dioden und unter Verwendung eines 0 V
Ausgang als „aktiv“ Linie?
Ich habe zunächst = 0x00 rowport, es zu machen, einen Eingang
Datenport und der hohen Spaltenpins einzeln.
Ich habe 8x8 Matrix Tastatur, die ich will lesen
mehr Tasten gedrückt (maximal 32 zu einem Zeitpunkt, da ich
bin der Gestaltung es für Schachbrett)
Kann man sich anschaut, bitte:
Im Anschluss an die Linien braucht Zeit.
meine Schaltung hat 4-18-4 Pins.
So offensichtlich. es ist für 8x18-Matrix.
Base auf die Spezifikationen, es zieht 250mA.
Da USB-Ports liefert 500mA.
Kann ich nur eine Parallelschaltung die bekommen
andere 250mA?
Ich werde diese 250mA verwenden, um eine andere Schaltung treiben.
Diese Schaltung wird verwenden, um die Klicks zu automatisieren
die Schaltung der Tastatur.
Ich habe jetzt die USB-Tastatur-Schaltung.