Forum: Mikrocontroller und Digitale Elektronik 4x3 Tastermatrix Schaltung


von Kalle Kantholz (Gast)


Lesenswert?

Hallo

Ich möchte an einen AVR eine Tastermatrix anschließen. Wenn ich einen
Port als Eingang nutzen will, dann schalte ich den jeweiligen Pin auf
masse.
Nun will ich aber eine 4x3 Matrix aus 1 Poligen Tastern aufbauen, und
da habe ich nun ein Problem mit der Schaltung.

Vielleicht kann mir jemand auf die Sprünge helfen, und mir verraten wie
man soetwas Schaltungsmäßig realisiert, Dioden, Schieberegister etc.

bin für jede Hilfe dankbar
Bye Kai

von Detlev (Gast)


Lesenswert?

Willst du mehr als einen Taster gleichzeitig drücken?

von Sonic (Gast)


Lesenswert?

Nimm einfach einen PORT (8 bit) des µC, Schalte die ersten 4 bit als
Ausgang ('0') und die letzten 4 bit als Eingang (Pull-up) als Matrix.
Die ersten 4 bit Vertikal und die letzten4 bit horizontal. Das Ganze
wird bei der 2. Abfrage umgedreht. Die erste Abfrage fragt Vertikal,
die zweite horizontal ab. Nun kannst Du lokalisieren, welche Taste(n)
gedrücht wurde(n). Das ist bei einer Tastatur von max. 4x4 echt einfach
zu handhaben!

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Application Note AVR204 (oder AVR240) beschreibt das gleiche Thema nur
mit einer 16er-Tastatur.
Sonic hat schon denn richtigen Weg beschrieben.
Wenn man zwischen den beiden Überprüfungen noch eine kleine Pause
macht, um die Kapazitäten zu entladen, geht das ganz wunderbar.

von Kalle Kantholz (Gast)


Lesenswert?

@ Detlev
nein. eine Taste zu einem Zeitpunkt reicht

@ Sonic
Das ist eine Lösung nach der ich gesucht habe. Vielen Dank

Ich habe auch einen guten Link der TU Chemnitz gefunden, wo alles
erklärt ist.
http://www-user.tu-chemnitz.de/~omat/Mikrocontroller/Tastenmatrix.htm

vielen Dank für eure Hilfe.
morgen früh gehts los mit dem programmieren.

von David Z. (sammy1991)


Lesenswert?

Guten Tag, ich habe das gleiche Problem, nur größer.
Meine Matrix soll 10*18 groß werden. das Prinzip mit den vertikalen und 
horizontalen Leitungen habe ich verstanden, allerdings bedeutet das, 
dass ich über mehrere Ports hinweg arbeiten muss.
Wie kann ich also per Programm feststellen, welcher Taster gedrückt ist, 
und wie kann ich hier effektiv entprellen?
Ferner soll jede Pinkombination bei aktiviertem Zustand einen Code 
bereitstellen, der dann zu einem zweiten Controller geschickt wird. Wie 
sieht hier die Realisierung in C aus?
Um eine Antwort wäre ich sehr dankbar,
Gruß David Z.

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.