Forum: Mikrocontroller und Digitale Elektronik zu viele Taster


von Max (Gast)


Lesenswert?

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

von Marek S. (Gast)


Lesenswert?

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.

von Ale (Gast)


Lesenswert?

Hier gibt ein Paar Beispiele mit mehr Tasten als Pins

http://geocities.com/hppacito/calcs.html

(mit soft)

von Oliver (Gast)


Lesenswert?

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

von 2-Phase (Gast)


Angehängte Dateien:

Lesenswert?

Hi, im Anhang befindet sich eine AN von Atmel, in der eine 4x4 Matrix 
erklärt wird.

Gruß 2-Phase

von Rahul, der Trollige (Gast)


Lesenswert?

>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.



von Rolf I. (for_ro)


Lesenswert?

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

von Max (Gast)


Lesenswert?

@Rolf
Bist du dir sicher das man 2 Taster gleichzeitig drücken kann??

von Rahul, der Trollige (Gast)


Lesenswert?

>Bist du dir sicher das man 2 Taster gleichzeitig drücken kann??

Bin zwar nicht Rolf, aber sicher...

von Max (Gast)


Lesenswert?

ok passt... vielen dank

von Rolf I. (for_ro)


Lesenswert?

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

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

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

von Rahul, der Trollige (Gast)


Lesenswert?

>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.

von König Europas (Gast)


Lesenswert?

Du kannst auch 255 Tasten an einen Pin hängen...wenn es der 
Analogeingang ist!

von Rahul, der Trollige (Gast)


Lesenswert?

>Du kannst auch 255 Tasten an einen Pin hängen...wenn es der
>Analogeingang ist!

Da der AVR einen 10bit-ADC hat, würden auch 1023 gehen...

von Rahul, der Trollige (Gast)


Lesenswert?

OK, AVR wurde nicht erwähnt...

von Thomas B. (yahp) Benutzerseite


Lesenswert?

Riskante Sache, mit bei einem Bitfehler von mindestens +- 1/2 LSB...

von Rolf I. (for_ro)


Lesenswert?

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.

von tubie (Gast)


Lesenswert?

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

von Jasmin (Gast)


Lesenswert?

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 ?

von Dirk (Gast)


Lesenswert?

PS2 Numpad auswerten ist auch eine Möglichkeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.