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
Christian K. schrieb: > Beispiele die ich finden konnte beziehen sich auf einen einzigen > Expander. Tja.... Manchmal passiert es wirklich, dass man der erste ist. Dann muss man selber Arbeit investieren. Übrigens: 4 Expander sind für Arduinos Wire kein Problem.
Beitrag #7747176 wurde vom Autor gelöscht.
Da der MCP23017 drei Adresspins hat, gibt es bis zu 8 Expander auf einem I²C Bus. Das sollte also klappen. Der Spaß beginnt, wenn du die INT A oder INT B aller Chips auswerten willst oder musst.
:
Bearbeitet durch User
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?
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).
Matthias S. schrieb: > Das sollte also klappen. Nur wenn er 3 elektrisch unabhängige Tastaturen anschliesst. Nicht wenn die 3 an eine Matrix sollen.
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.
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.
Peter D. schrieb: > Hä Ja, du verstehst nicht. Versuche doch, das Problem zu verstehen, bevor du postest.
Michael B. schrieb: > Ja, du verstehst nicht. Zitiere mal die Stelle von Christian K. mit den "3 Tastaturen". Ich finde sie nicht.
Wenn man es geschickt anstellt, macht es wohl keinen großen Unterschied, ob 1 oder 3 Tastaturen. Außerdem sind wir da nicht. Bisher war nur von einer Matrix die Rede.
Was mag in "Beitrag #7747176 wurde vom Autor gelöscht" gestanden haben?
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/
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
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 👍
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 😉
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.
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
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.
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?
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 😊
Eine Diode pro Taster braucht man nur, wenn 3 oder mehr Tasten gleichzeitig erkannt werden sollen. Bei PC-Tastaturen sind deshalb Shift, Alt, Strg nicht mit in der Matrix.
Peter D. schrieb: > Eine Diode pro Taster braucht man nur, wenn 3 oder mehr Tasten > gleichzeitig erkannt werden sollen. Mehrfache-Tastendrücke müssen nicht erkannt werden. Hauptsache es geht nix kaputt. Brauche ich die Dioden trotzdem?
Christian K. schrieb: > Das ist ohnehin doch keine 7x25 Matrix wie ich nun gemessen habe Also das ist doch unübersichtlicher als ich dachte. Ich komme nach mehreren hin und her Versuchen auf 3 MCP23017.
Christian K. schrieb: > Also das ist doch unübersichtlicher als ich dachte. Aber nur für die Software. Verdrahtet werden maximal 32 Anschlüsse, d.h. 2 Expander. Ein 3. IC bringt überhaupt nichts.
Ich muss aber doch Zeilen und Spalten definieren. Da habe ich aber noch kein System entdeckt. Einfach Zeilen 1-16 und Spalten 17-32 funktioniert nicht. Oder irre ich mich? 🤔
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.