Forum: Projekte & Code Matrixtastatur am AVR


von Andreas S. (andreas) (Admin) Benutzerseite


Angehängte Dateien:

Lesenswert?

Siehe Anhang!

: Gesperrt durch Moderator
von Markus (Gast)


Lesenswert?

Hi Andreas,
bei der "Schaltung" fehlen noch ein paar Sperrdioden. Zu jedem Taster 
muß eine Diode in Reihe geschaltet werden. Wird das nicht gemacht kann 
es zu Fehlinterpretationen kommen wenn z.B. mehrere Tasten gleichzeitig 
gedrückt werden. Die Dioden verhindern das.

Gruß
Markus

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hallo Markus,

Sperrdioden sind nicht nötig, da ja immer nur eine Spalte 
"ein"geschalten wird. Die anderen sind hochohmig, also so als wären die 
Taster gar nicht angeschlossen.

Gruß
Andreas

von Markus (Gast)


Lesenswert?

Natürlich funktioniert es auch so, aber nur wenn sichergestellt wird das 
immer nur eine Taste gedrückt wird. Sobald mehrere Tasten gedwückt 
werden (beabsichtigt oder nicht) kann es zu Problemen kommen.

Gruß
Markus

von Lanius (Gast)


Lesenswert?

hat Atmel auch schon mal gebastelt, siehe:

http://www.atmel.com/atmel/acrobat/doc1232.pdf

von Markus (Gast)


Lesenswert?

Man sollte die App Notes von Atmel mal genauer anschauen. Da gibt es 
einige interessante Sachen.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Du kannst auch alle Tasten gleichzeitig drücken, ich sehe nicht wo es da 
Probleme geben sollte.

Gruß
Andreas

von Lanius (Gast)


Lesenswert?


die Anleitung ist auch schön und .... ohne Dioden :)


http://www.atmel.com/atmel/acrobat/doc1231.pdf

von Jörg Wedermann (Gast)


Lesenswert?

Hi,

wäre es nicht sinnvoller, den 8-Tastencode, den man ja mit 16Tasten 
nicht voll ausnutzt in einen 4bit-Code umzuwandeln, der ja mit 16 
Zuständen genau hinkommt? Nagut, man müßte auf eine Taste verzichten, 
damit Zustand 0000 als "kein Tastendruck" erkannt werden kann.
Dann könnte man einen Port für zwei Sachen nutzen. oder sehe ich da was 
falsch?
Wäre doch schö, wenn man mite der einen Port-Hälfte die Tasten einließt, 
und mit der andern ein Display im 4-bit-Modus ansteuern könnte.
Leider hab ich dafür noch keine fertige Lösung entdeckt. Es gibt 
sogenannte 10 -> BCD-Codierer, oder auch Prioritäten-Codierer genannt, 
man müßte es echt selber mit Gattern oder Dioden aufbauen.

Gruß Jörg

von Jurek Skrzypnik (Gast)


Lesenswert?

Hi !
@Jörg
ich hab mich das mit dem 16:4 Encoder auch schon gefragt...
hab aber auch nichts (irgendeinen billigen IC) gefunden.

Wenn wer so einen (in D erhältlichen) Baustein (max 2 EUR
sonst machts ein AVR auch) kennt, würde ich mich dafür interessieren,
um Ports zu sparen.

Die Steuerung wie sie Atmel in o.g. Dokument beschreibt funktioniert
bei mir ansonsten wirklich einwandfrei, aber 4 statt 8 Ports belegen,
wäre mir lieber...

Jurek

von Steffen (Gast)


Lesenswert?

Der Orginal beitrag und die Antworten darauf sind zwar schon etwas
"alt" aber Andreas hat recht. Wenn immer nur die abgefragte Spalte
(oder Zeile) aktiv und der Rest Tristate also als Eingang geschaltet
ist kann man auf die Dioden verzichten.

Was einen billigen 16:4 Encoder anbetrifft, den gibt es zum 1. nicht
und zweitens würde der zuviel Platz auf der Platine einnehmen. Dann
lieber eine Prozessor, der ein paar I/O´s mehr hat.

Steffen

PS: Der 16:4 Encoder hat mindestens 22 Pins (jede Taste einzeln) oder
14 Pins (Tastatur als Matrix). Bei der MC-Lösung brauche ich aber so
oder so nur 8 Pins.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Es kann bei der oben beschriebenen Tastenmatrix allerdings dazu kommen,
dass eine Taste fälschlicherweise als gedrückt erkannt wird, wenn mehr
als 2 andere Tasten gleichzeitig gedrückt sind.

von iCount (Gast)


Lesenswert?

"Tristate also als Eingang"?? :D
Ausgang - Eingang - Tristate..

von Christian B. (casandro)


Lesenswert?

Andreas Schwarz schrieb:
> Du kannst auch alle Tasten gleichzeitig drücken, ich sehe nicht wo es da
> Probleme geben sollte.

Naja, stell Dir mal eine Matrix mit 2 Zeilen A und B, sowie 3 Spalten X, 
Y und Z vor.

Du hast da jetzt 4 Tasten:
123
456
1 verbindet A und X
2 verbindet A und Y
3 verbindet A und Z
4 verbindet B und X
5 verbindet B und Y
6 verbindet B und Z

Jetzt drücken wir mal 1 und 4. Somit ist A und X, sowie B und X 
verbunden. Jetzt drückst Du gleichzeitig die Taste 3 und verbindest A 
und Z.

Ohne Dioden sind jetzt durch die Tasten 1 4 die Leitungen A und B 
miteinander verbunden. Es ist nun nicht mehr möglich die Taste 3 von der 
Taste 6 zu unterscheiden.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Gut dass wir das nach 7 Jahren endlich klären konnten ;)
Wurde aber schon erwähnt, siehe Beitrag vom 13.09.2003 01:53.

Beitrag #6135125 wurde von einem Moderator gelöscht.
Beitrag #6135127 wurde von einem Moderator gelöscht.
Beitrag #6135129 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.