3x4 Keypad an I2C Beschaltung

Gast #4383399
Hallo Leute,

ich stehe gerade mal wieder auf dem Schlauch.

Folgendes Problem:

Ich habe ein 3x4-KeyPad (membrane), entsprechend 4 Reihen und 3 Spalten.
Um die Pins auf dem µC zu sparen, habe ich diesen an einen I2C IC 
angeschlossen (PCF8574AP).

Das Auslesen des ICs ist kein Problem, alles wird über den I2C Bus 
richtig übertragen.

Schließe ich nun das KeyPad an, bekomme ich keine Signale an den 
richtigen Pins. Ich habe schon im INet einige Beschaltungen angeschaut 
und ausprobiert und auch selber einige ausprobiert, aber irgendwie habe 
entweder keine Signale oder die sind an den ganzen Reihen oder Spalten 
gleich.

1  2  3
4  5  6
7  8  9
*  0  #

z.B. 1, 2 oder 3 liefern am Bus 0x32.

Übersehe ich da was oder mache ich das gänzlich falsch?

Bin für jeden Tipp dankbar.

Gruß
#4383443
Hallo Sergey,

sollte nicht das Kaypad, wie auf dem angehängtem Schema
funktionieren, d.h. Du musst das Kaypad mit den Outputs
des MC's aktiv ansteuern, um zu sehen, welche Leitung
das Signal, durch den entsprechenden Tastendruck zurückliefert.

Gruß
Markus
DL8MBY
Angehängte Dateien:
#4383462
Sergej schrieb:
> Kann es sein das es verschiedene Pads gibt, mit anderen Beschaltung.
>

Natürlich.
Nur weil im PC Bereich jede Steckkarte und jeder Stecker normiert ist 
und nur in die dafür vorgesehene Buchse passt, bedeutet das nicht, das 
das immer und überall so ist. Ganz im Gegenteil ist das sogar meistens 
nicht so. Die PC Komponenten Hersteller waren es nur leid, dauernd mit 
Garantie-Ansprüchen konfrontiert zu werden, nur weil irgendein 
Hobby-Bastler wieder mal das Telefon an der Ethernet Buchse angesteckt 
hat.

Wenn du dich also strikt an einen Schaltplan hängst, aber ganz andere 
Bauteile hast, dann ist es eine gute Idee, im Vorfeld zu überprüfen, ob 
die Pinbelegung tatsächlich 1:1 identisch ist.

Bei einm Keypad ist das ja auch kein grosses Problem und mit einem 
Ohmmeter schnell gemacht.
Gast #4383476
@ Markus W.

Mit "j" bitte ;-)

Werde ich mal ausprobieren.

@Karl Heinz

Das Durchtesten der Leitungen ist schon längst gemacht, das ist ja auch 
der Grund, wieso ich mich im Forum erkundigen will. Mit dem Multimeter 
ist auch alles logisch, nur wenn ich es beschalte ist, ist es irgendwie 
nicht mehr.

@Selfcoder

Die Beschaltung ist ein höher gewesen.

Gruß
Gast #4383482
Sergej schrieb:
> Das Auslesen des ICs ist kein Problem, alles wird über den I2C Bus
> richtig übertragen.

Das reicht nicht. Ein Matrix-KB muss aktiv angesteuert werden, d.h. du 
musst eine Spalte auswählen mit Outputbefehlen, erst dann kannst du 
einlesen welche Taste in dieser Spalte gedrückt ist.

Georg
(Firma: matzetronics) #4383489
Eigentlich steht alles zum PCF8574 schon im Datenblatt. Der Port ist ein 
Quasibiderektionaler 8-Bit Port und das Schreiben eines Ausgangs auf 
high aktiviert für eine I2C Clock Dauer einen starken Pullup.
Du schreibt also nach dem Adressbyte die gewünschte Spalte auf low und 
liest mit dem nächten I2C Kommando den Port und maskierst dir die Zeilen 
da raus.

Der PCF gibt dir nicht direkt irgendwelche gedrückten Tasten aus, das 
Entheddern der Matrix muss dein Steurrechner machen.
#4383494
Es hängt vom Schaltplan ab.
D.h. die Zuordnung von D7..0 an Row3..0 und Col2..0.
Z.B. erst 0x70 hinschicken, rücklesen, dann 0x0F hinschicken, rücklesen.
Und dann die beiden Bytes auswerten wie bei direktem Anschluß.
Gast #4383501
Sergej schrieb:
> @Selfcoder
>
> Die Beschaltung ist ein höher gewesen.

Das kann gar nicht sein. Du hast da einen Link zu einer Beschaltung 
gepostet, die Du irgendwo im Internet gefunden hast. Das hat garantiert 
nichts mit Deiner Schaltung zu tun, da Du ja einen PCF8574 benutzt.
Gast #4383519
Das richtige Schlagwort ist schon von Georg gefallen.

Das in der Schaltung statt PCF8574 das Wort MCU steht tut der Sache 
keinen Abbruch. Und das war ja auch ein Beispiel wie ich meine 
Komponente beschaltet habe ;)

ROW über Widerstände (in meinem Fall 10kOhm) an VCC und an den IC
und COL direkt an den IC
Gast #4383556
Aber gut es funktioniert jetzt wunderbar.

Ich dachte man bräuchte die Sachen nur beschalten und regelmäßig den Bus 
abfragen, aber nix da.

Danke für die Tips

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.