Wenn Sie nur eine Tastatur erstellen möchten, ohne Makey Makey zu verwenden, können Sie dies mit der GPIO-Funktionalität des Raspberry Pi tun. Wie bereits erwähnt, verfügt der Raspberry Pi jedoch nicht über genügend Pins, um eine Tastatur zu erstellen, die tatsächlich nützlich ist.
Wenn Sie jedoch zwei ICs hinzufügen möchten, können Sie sich eine Tastatur mit so vielen Tasten erstellen, dass Sie Probleme haben, für jede Taste eine Funktion zu finden!
Mein Vorschlag ist, zwei I2C-ICs an den I2C-Bus des Raspberry Pi anzuschließen und daraus Ihre eigene Scan-Matrix zu erstellen.
Wenn Sie einen PCF8574 verwenden, stehen Ihnen 8 E / A-Pins zur Verfügung. Wenn Sie einen PCF8575 erhalten, stehen Ihnen sogar 16 E / A-Pins zur Verfügung. Durch Kombination erhalten Sie eine Scanmatrix von:
- 64 Schlüssel: (2x PCF8574)
- 128 Schlüssel: (1x PCF8574 & 1x PCF8575)
- 256 Schlüssel: (2x PCF8575)
Sie müssen immer eine davon als Ausgabe und eine als Eingabe verwenden. Auf dem Ausgang lassen Sie ein bisschen von Bit 0 nach Bit n (7 oder 15) "laufen", das sind die Spalten der Matrix. Zum anderen liest man ständig den Wert der Eingabe und dies sind die Zeilen der Matrix. Die Kombination, welches Ausgangsbit aktiv ist und welches Eingangsbit "1" ist, ist die Taste, die gedrückt wird.
Tatsächlich ist das Erstellen der Matrix die meiste Arbeit. Vergessen Sie nicht, nach jedem Schalter, den Sie in die Matrix einfügen, eine Diode einzufügen. Diese Diode (ein normaler 1N4148 reicht aus) muss zusammen mit der Anode platziert werden an den Schalter und die Kathode an die Zeilenleitung. Der Spannungsabfall von 0,6 V über dieser Diode sollte kein Problem sein, die verbleibenden (3,3 V - 0,6 V) 2,7 V sollten immer noch eine logische "1" sein.
Der Grund für diese Wagenladung von Dioden ist, dass Dinge wie Geisterbilder und das Maskieren von Schlüsseln verhindert werden. Ghosting ist der Effekt, dass, wenn Sie mehr als drei Tasten gleichzeitig drücken, dies möglicherweise als völlig anderer Schlüssel interpretiert wird, da mehr Zeilen eine logische '1' haben. Maskierung ist der Effekt, dass, wenn Sie mehrere Tasten gedrückt haben und eine Taste loslassen, dies (in einigen Situationen) nicht erkannt wird, da die Zeile für diese Taste immer noch eine logische '1' ist.
Das Bild zeigt ein Beispiel für Ghosting, die Tasten A, B, D sind gedrückt und neben Zeile 1 (für Taste A) ist auch Zeile 2 (für Taste C) hoch, im Moment ist Spalte 1 aktiv, was nicht korrekt ist.
Nach dem ganzen Hardwareabenteuer müssen Sie einen Kerneltreiber schreiben oder anpassen, um die Tastatur unter Linux tatsächlich zu verwenden. Ein guter Ausgangspunkt könnte dieser Link sein: Treiber für Tasten am TCA6416 I2C IO-Expander , dies ist eine ähnliche Idee, verwendet jedoch nur eine Tastatur mit 16 Tasten.
Hoffe das hilft dir ein wenig.