Auslesen einer 8x8 Taster-Matrix mittels PCF8474 möglich?

Liebe Leute,
ich habe 64 verschiedene Taster und habe mich entschieden, diese in einer 8x8 Matrix anzuordnen. Da ich keine Lust habe, 64 Tasten einzeln auszulesen und nicht zwei Tasten gleichzeitig gedrückt werden sollen, ging ich davon aus, dass ich diese Konstruktion nichts anderes ist als ein Keypad mit 8x8 Tasten.

Nun hat ein Arduino ja nur 14 digitale In- und Outputs. Schön wäre es, wenn ich 16 gehabt hätte, aber leider ist das ja nicht der Fall. So habe ich einen PCF8574-IO-Expansion-Baustein gekauft und über I2C mit dem Arduino verbunden, so dass ich auf dem Arduino 8 Outputs nutzen kann und die 8 Inputs des Expansion Bausteins. Die Taster habe ich entsprechend einer Keypad-Konstruktion miteinander verbunden und zwischen die digitalen Arduino-Pins einerseits und die PCF8574-Pins andererseits gelegt. Die Arduino-Pins sollten den Pegel liefern, die Taster weitergeben und die Pins des PCF8574 auslesen. So schön, so gut. Aber irgendwo ist hier ein Denkfehler, denn ich messe auf den Pins des PCF8574 nur Unsinn. Ich bin mir ziemlich sicher, dass ich irgendetwas nicht beachtet habe, aber was??

Problemlösungsversuche:

  1. Ich habe geschaut, ob der PCF ordnungsgemäß funktioniert. Das ist der Fall. Der Baustein ist nicht kaputt. Er ist auch ordnungsgemäß über I2C mit dem Arduino verbunden. Wenn ich nur einen Pol eines Tasters an P0,P1,...P8 vom PCF anschließe und den anderen an GND, kann ich die Taste auslesen.
  2. Natürlich senden die Arduino-Pins auch abwechselnd HIGH und LOW-Pegel. Auch hier gibt es keine Probleme.

Nur ArduinoPin->Taster->P0,P1,...P8 macht Schwierigkeiten. Da messe ich nichts gescheites. Aber warum? Kann mir das jemand erklären? Stimmt die Schaltung nicht? Oder ist der PCF8574 für sowas nicht geeignet? Brauche ich also einen Arduino Mega??

Vielen Dank für Eure Hilfe.
Bernie007 grüßt

Du brauchst pullup bzw pulldown Widerstände (je nach Logik) an den Eingängen des PCF8574. Wenn Du jedem Taster eine Diode in Reihe spendierst dann kannst Du auch mehrere Tastendrücke geleichzeitig erkennen.
Ich würde 2 PCF8574 für die Tastatur nehmen oder einen MCP23016-I/SP
Grüße Uwe

oder du baust dir ein R2R-Gatter - dann kannst du auf den PCF komplett verzichten und brauchst nur einen freien Analogpin und kannst soviele Buttons drücken, wie du willst.

Marcus W
Wie soll das gehen? Du baust Dir einen 64bit DAC und willst den mit einem 10 Bit ADC des Arduinos auswerten? :roll_eyes: :roll_eyes: :roll_eyes:
Außerdem brauchst Du 192 Widerstände für das R2R Netzwerk. Da sind 2 16-polige oder ein 28-poliges ICs weniger platzaufwendig bzw verdrahtungstechnisch einfacher Bei einer Tastatur Matrix hast Du nur 16 Anschlüße von Tastenfeld zum Auswertungselektronik. Beim R2R sind das 64 Kabel.

Grüße Uwe

du musst doch nicht 64bit addresieren - es reichen doch 8Bit und multiplexing.

Dann brauchst Du immernoch 192 Widerstände für die acht 8-Tasten Blöcke und zusätzlich einen analogen Multiplexer.
Da ist eine digitale Matrix einfacher, störsicherer und schneller auszulesen.

Grüße Uwe

Uwe, um auf deinen ersten Vorschlag zurückzukommen: Warum sollte ich zwei PCF8475 verwenden? Ist das besser als wenn ich mit 8 digitalen Arduino-Pins den Output erzeuge und die 8 PCF-Pins als Input nehme? Riechst du da irgendwelche Probleme, von denen ich keine Ahnung habe??
fragt sich Bernie

Prinzipiell ist es kein Problem 8 Pins vom Arduino zu nehmen. Es ist einfach "sinnvoller" vom Prinzip her.
Grüße Uwe