Hallo zusammen
Mir stehen 32 Pins zur Verfügung und habe 15 Taster. Wenn ich jeden
Taster einzeln ansteuere benötige ich 15 Pins... gibt es nicht andere
Möglichkeiten die Taster anzusteuern?? Hab mal gehört man könnte das mit
einer Matrix machen, weiß aber nicht genau wie das funktioniert?!
Ich hoffe das jemand was weiß?..
Gruß Max
Hi such doch mal bei google nach Schieberegistern.
bin mir jetzt nicht 100% sicher wie dich heissen aber da bekommst du 8
Taster mit 4 Leitungen abgegriffen und wenn du 16 Taster hast brauchst
du nur 5 Leitungen da die Steuerleitungen untereinander verbunden
werden.
4*4 Matrix: Vier Leitungen von Ausgängen aus in die Matrix, senkrecht
dazu vier raus auf Eingänge. Macht 8 Pins. Jeder Taster sitzt auf einem
Knoten. Zum Abfragen der Reihe nach die vier Ausgänge auf eins setzten
(immer nur einen), und jeweils schauen, welcher Eingang kommt. Ein
Nachteil sein nicht verschwiegen: Man darf immer nur einen Taster
gleichzeitig drücken.
Oliver
>Man darf immer nur einen Taster gleichzeitig drücken.
1. Man kann einen Taster nur gleichzeitig drücken...
Besser: "Man darf immer nur einen Taster zur Zeit drücken."
{"Das war Offtopic!" frei nach der Maus)
2. Die AN von Atmel ist die einfache Variante der Matrix-Auswertung, die
sich nicht um Mehrfachtastendrücke kümmert.
Man kann die Routine aber auch problemlos so erweitern, dass man
Mehrfachtastendrücke herausfiltern kann.
Oliver wrote:
>Man darf immer nur einen Taster gleichzeitig drücken.
Mehrere gleichzeitig habe ich bei mir bewusst zugelassen. Benutzt wird
es wie eine SHIFT, STRG oder ALT Taste. Man scannt alle Knoten durch
bekommt dann eben auf zweien eine 1. Du weisst allerdings nicht, welche
Taste zuerst kam. Aber es reduziert die Anzahl der notwendigen Tasten
und damit der Leitungen.
Gruß
Rolf
Max wrote:
> @Rolf> Bist du dir sicher das man 2 Taster gleichzeitig drücken kann??
Du kannst auch alle gleichzeitig drücken. Wenn du für jeden Knoten z.B.
ein bit in einer Variable setzt, dann hast du am Ende überall eine 1
bzw. 0 drin, je nachdem wie es verschaltet ist. Und die Variable nimmst
du dann für die weitere Auswertung und nicht das bit.
Nur: du musst alle Knoten abscannen und kannst nicht beim ersten Treffer
aufhören.
Ich habe mir ein USB Keypad besorgt (Nummernblock mit Pfeilen) und das
ohne die Electronic an den µC angeschlossen. Num-Lock benutze ich, um
zwischen Zahlen und den Pfeiltasten umzuschalten.
Rolf
Suchbegriff "N-Key-Rollover" oder "2-Key-Rollover". Normalerweise ist
aber an jeder Taste eine Diode angebracht, nicht nur eine pro Zeile wie
in der AN
>Normalerweise ist aber an jeder Taste eine Diode angebracht, nicht nur >eine pro
Zeile wie in der AN
Brauchte ich komischerweise noch nie. Die Dioden in der AN sind doch
dazu da, den INT-Pin zu entkoppeln, damit man irgendeine Taste zum
Wecken benutzen kann.
Das Schöne an der Lösung in der AN ist doch, dass man sie problemlos
erweitern kann.
In der AN arbeitet man so, dass man alle Spalten (oder alle Zeilen) auf
GND legt und dann mit Hilfe der internen Pullups die Zeile (oder Spalte)
der gedrückten Taste herausfindet (und durch den entsprechenden
Spalten-Zeilen-Ansteuerung-Tausch die andere Koordinate).
Setzt man jetzt nur einen Pin auf Masse-Potential, und "sieht" sich die
korrespondieren Pins an, dann kann man durch wechseln des Masse-Pins
feststellen, ob mehr als nur eine Taste gedrückt wurde.
>Du weisst allerdings nicht, welche Taste zuerst kam.
Klar kann man das, da/wenn man die Tastatur in regelmässigen Abständen
abfragt.
Rahul, der Trollige wrote:
> Klar kann man das, da/wenn man die Tastatur in regelmässigen Abständen> abfragt.
Du kannst natürlich 100% Rechenleistung für die Abfrage der Tastatur
verbrauchen. Dann ist es auch möglich, festzustellen, ob einer den
bewährten Microsoft Doppelklick in der richtigen Zeitspanne abgedrückt
hat.
Seit neuestem verwende ich übrigens eine RC5 Fernsteuerung. Das ist auch
nur ein Pin, aber fluppt sicherer als ein analoger Eingang.
Kann mich daran erinnern, als ich mit µC angefangen habe wurde die 10er
Tastatur der C-Control so abgefragt. Unterschiedliche Widerstände pro
Taste die auf einen gemeinsamen Widerstand gehen und dann
unterschiedliche Spannungen (Spannungsteiler) zur verfügung stellen.
Diese werden dann im Programm abgefragt. Hat aber in der Praxis (bei mir
auf jeden Fall) nicht richtig funktioniert.
C-Control habe ich dann irgenwann aufgegeben und mich hats zu den AVR's
und ASM hingezogen.
Gruß,
Tubie
Mit Schieberegistern kannst du "beliebig" viele Taster anschalten und
benötigst immer nur 3 Drähte, CLOCK, DATA STROBE...
1 Draht mehr und es funktioniert auch interruptgesteuert.
Unschlagbar oder ?