Hallo zusammen, ich habe mir gerade eine Matrixtastatur 3x4 zusammengebaut. Ich möchte mit dieser einen Atmega32 Controller ansteuern. Ich habe folgendes Problem. Als Schalter habe ich Schließer verwendet. Jeder Schalter ist mit VCC und 2 Ports verbunden. Ich habe nur nicht bedacht, sobald ein Schalter gedrückt ist, dass sich die Spannung in der kompletten Schaltung fortpflanzt. Code: #include <avr/io.h> #include <avr/delay.h> int main (void) { DDRC = 0xff; PORTC = 0x00; while(1) { /* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite" Bit) in PINC gesetzt (1) ist */ if (( PINC & (1<<PINC1)) && (PINC & (1<<PINC3)) ) { /* Aktion */ PORTA = 0xff; _delay_ms(262); } else { PORTA = 0x00; } } return 0; } Wie das Problem entsteht weiss ich, wie ich es lösen kann jedoch nicht. Könnt ihr mir dabei helfen? Vielen Dank und Gruß, Stefan
http://www.fernando-heitor.de/index.php?option=com_smf&Itemid=121&topic=3941.msg20089#msg20089 Das Problem ist ohne Entkopplung der Taster nicht lösbar.
Wenn ich das also richtig sehe, dann kann ich die Schaltung über Software zum Funktionieren bringen?
Mit Vcc und zwei Ports verbunden???? Was denn nun, diskrete Schalter oder Matrix?
Hallo, ja, mein Fehler. Ich weiss wo der Fehler ist und kenne nun auch die Lösung. PIN 0..2 als Ausgang schalten PIN 3..6 als Eingang schalten wobei Pegel im Ruhezustand auf 5V log. 1 Zur Überprüfung dann die Ausgänge nach und nach auf 0 setzen, wenn ein Schalter gedrückt wurde, dann hat ein Eingang eine 0 stehen. Ich denke so müsste es funktionieren. Oder? Gruß Stefan
Zu dem Thema Matrix-Tastatur gibt es eine (oder sogar zwei) Application Notes von Atmel. Suchen und angucken! Den einen Port (z.B. Spalten) schaltet man auf GND und am anderen (Zeilen) die Pull-Ups ein und als Eingang. Die Eingänge sind log.1 wenn keine Taste gedrückt wird. Das Spiel muss man dann noch in die andere Richtung treiben (Zeilen und Spalten vertauschen) und kann dann die Postition der gedrückten Taste sehr leicht erkennen. Probleme gibt es nur bei der Auswertung, wenn mehr als eine Taste gedrückt wird.
Vielen Dank, mal sehen ob ich die Matrix-Tastatur zum Laufen bringe ;-)) Gruß Stefan
Sorry, mein Fehler. Den Herr Laufen kenne ich noch nicht. Aber, da ich ein Anfänger bin, entschuldigt bitte die Wortwahl. Ich meinte gehen ;-)) wie es geht! Außerdem, bein uns im Schwabenland, sind das gängige Bezeichnungen ;-)) Gruß Stefan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.