Matrixtastatur 3x4 Probleme

OP #1206270
Lesenswert?

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
Gast #1206810
Lesenswert?

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
Gast #1206819
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren