KeyMatrix mit mehreren mcp23017

OP #7747152
Lesenswert?

Hallo zusammen, ich baue eine ButtonBox für den PC. Gibt sich mittels ESP32 via BTLE als Gamepad aus (es gibt nur Buttons, kein Steuerkreuz). Das funktioniert auch schon.

Nun möchte ich eine vorhandene Tastatur-Matrix nutzen. Ich habe sie ausgelesen und komme auf 7 Zeilen und 25 Spalten (nicht alle Kombinationen gibt es, es sind 84 Tasten).

Nun stehen mir noch 4 mcp23017 Portexpander zur Verfügung. Aber alle Beispiele die ich finden konnte beziehen sich auf einen einzigen Expander.

Kennt jemand eine Möglichkeit mehrere MCP's an einer einzigen Key-Matrix zu nutzen?

Vielen Dank im Voraus, Christian...

Ich nutze die Arduino IDE und habe diese Beispiele gefunden: https://github.com/Mystfit/ESP32-BLE-CompositeHID/blob/master/examples/GamepadExamples/Keypad4x4/Keypad4x4.ino https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library/blob/master/examples/mcp23xxx_button/mcp23xxx_button.ino https://github.com/ReneRichterDE/ButtonMatrix/blob/main/examples/Example04_i2c_ioexpansion/Example04_i2c_ioexpansion.ino

Beitrag #7747176 wurde von einem Moderator gelöscht.
#7747278
Lesenswert?

Matthias S. schrieb:

Der Spaß beginnt, wenn du die INT A oder INT B aller Chips auswerten willst oder musst.

Man kann die doch als open-drain konfigurieren und dann parallel schalten.

Beachten muß man bei dem Chip, daß mit dem BANK-Bit die Adressen komplett durcheinander gewürfelt werden und leider auch das Register mit dem BANK-Bit selber. Es ist also ziemlich tricky, bei unbekannter BANK, den Chip in einen bekannten Zustand zurück zu bringen, ohne andere Register zu verstellen. Vorzugsweise sollte man ihn daher im Resetzustand belassen (BANK 0).

(Firma: Gast) #7747286
Lesenswert?

Peter D. schrieb:

Es ist also ziemlich tricky,

Es gibt in der Arduino Welt ein gefühltes Dutzend Libraries die diesen Baustein korrekt abhandeln.

Peter D. schrieb:

durcheinander gewürfelt

Soweit ich das sehe, gibts da keine Notwendigkeit zum durcheinander würfeln.

Natürlich kann man das ganze I2C Gedönse neu erfinden, bzw. selber dengeln. Aber schneller fertig ist man damit wohl nicht. Und, ob man dann portablen Code hinbekommt, steht auf einem 2ten Blatt. Ob der TO das hinbekommt ist auch fraglich, da ihm mit einer Matrix Abfrage grundsätzlich schon genügend gefordert scheint.

OP #7747563
Lesenswert?

Mario M. schrieb:

Christian K. schrieb:

7 Zeilen und 25 Spalten (nicht alle Kombinationen gibt es, es sind 84 Tasten)

Bist Du sicher? Das kommt mir sehr merkwürdig vor. Gibts Fotos bzw. auch sonst mehr Details?

Ich hoffe, dass ich mich da nicht vertan habe. Ich hatte mich auch gewundert und fand diese Matrix sehr unübersichtlich und kompliziert. Ein Bild der Matrix habe ich nicht (dazu müsste ich das Teil zerstören), aber eine LibreCalc-Tabelle nebst Auswertung. Es handelt sich dabei um eine PrehKeyTec MCI84 ohne Elektronik. Also nur die Tastatur. https://www.prehkeytec.de/produkte/programmierbare-tastaturen/mci-84/

OP #7747567
Lesenswert?

Peter D. schrieb:

Christian K. schrieb:

Nun möchte ich eine vorhandene Tastatur-Matrix nutzen.

Michael B. schrieb:

Nur wenn er 3 elektrisch unabhängige Tastaturen anschliesst.

Hä.

Christian K. schrieb:

Ich habe sie ausgelesen und komme auf 7 Zeilen und 25 Spalten

Macht 32 IOs, d.h. 2 Expander mit je 16 IO-Pins.

Da bin ich mir nur zu 99% sicher, denn das Design wurde geändert. Ich glaube aber, dass die die ich hier habe von vor der Änderung sind.

Hier ist mehr zu finden (beachte "Wichtiger Hinweis!!!"): https://wolles-elektronikkiste.de/portexpander-mcp23017

OP #7747662
Lesenswert?

Mario M. schrieb:

Christian K. schrieb:

7 Zeilen und 25 Spalten (nicht alle Kombinationen gibt es, es sind 84 Tasten)

Bist Du sicher? Das kommt mir sehr merkwürdig vor. Gibts Fotos bzw. auch sonst mehr Details?

Allerdings... kommt mir gerade in den Sinn: bei 32 Leitungen könnten es auch 2 8x8 Matrizen sein. 🤔

Das positiviert die Ausgangssituation erheblich 👍

OP #7747664
Lesenswert?

Hier zeige ich mal meine Analyse. Die Pins oben in der Matrix habe ich wirklich gemessen und bin blind von einer einzigen Matrix ausgegangen. Unten die Zordnung Zeile/Spalte habe ich irgendwann mal stupide vervollständigt als ich keine Treffer mehr hatte. Also das Multimeter an Pin 1 (Spalte) und 21, jede Taste gedrückt, kein Durchgang: dann muss es ja ebenfalls eine Spalte sein. Vielleicht ist dem ja gar nicht so. Ich messe nochmal vom letzten Pin 32, vielleicht ergibt sich gleich etwas anderes 😉

Angehängte Dateien:
OP #7747815
Lesenswert?

Peter D. schrieb:

Der MCP23017 hat leider keine open-drain Ausgänge wie der PCF8574/A. Werden in der Matrix mehrere Tasten gedrückt, können die Ausgänge gegeneinander kämpfen. Daher sind Dioden in den Ausgängen notwendig.

Was passiert wenn keine Dioden verbaut werden? Zerstörung durch Kurzschluss? Blöd, denn an der Tastatur kann ich nichts ändern 🤔

Der ESP32 hat's bisher überlebt. Da habe ich dieses Folien-Keypad angeschlossen: https://learn.adafruit.com/matrix-keypad/pinouts

OP #7747821
Lesenswert?

Peter D. schrieb:

Der MCP23017 hat leider keine open-drain Ausgänge wie der PCF8574/A. Werden in der Matrix mehrere Tasten gedrückt, können die Ausgänge gegeneinander kämpfen. Daher sind Dioden in den Ausgängen notwendig.

Und wenn ich jedem Pin einen 360 Ohm Widerstand spendiere? Dann fließen im schlimmsten Fall knapp 150mA durch den Chip und durch jeden Pin fließen auch weniger als 25mA die er abkann. Ob das dann noch zum detektieren reicht?

OP #7747822
Lesenswert?

Peter D. schrieb:

Christian K. schrieb:

Was passiert wenn keine Dioden verbaut werden?

Sollte nicht schlimm sein, lt. Datenblatt ist der Strom bei Low größer, d.h. Low setzt sich durch. Bei Deiner 7x25 Matrix kommen die 7 Dioden einfach zum mcp23017 in Reihe.

Das ist ohnehin doch keine 7x25 Matrix wie ich nun gemessen habe (Screenshot folgt).

Achso, ich nahm an, es müsse eine Diode pro Taster sein und nicht pro Reihe 😊

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