Ich habe kürzlich das Makey Makey (basierend auf Arduino Leonardo / ATMega32u4) gekauft, in der Hoffnung, aus einigen Metallteilen eine USB-Steampunk-Tastatur bauen zu können. Bevor es ankam, las ich die Details noch einmal durch und stellte fest, dass es nur 18 mögliche Eingaben gibt, sodass über 85 Tasten nicht funktionieren. Hat jemand eine Idee, wie ich ein solches Biest erschaffen könnte, möglicherweise mit einem Himbeer-Pi? (was sich ganz leicht verbindet, aus vorherigen Beiträgen )
15
Antworten:
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:
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.
quelle
Wenn Sie eine vollständige Tastatur erstellen möchten, auf der Sie tatsächlich tippen können, sollten Sie den IC einer USB-Tastatur am besten verwenden. Behalten Sie die Platine selbst tief in Ihrem System verborgen, wo sie nicht zu sehen ist, und führen Sie die Kabel zu Ihren Schaltern, oder fertigen Sie etwas Benutzerdefiniertes mit derselben Matrix.
Wenn Sie die elektrische Matrix wirklich ändern müssen, müssen Sie möglicherweise Ihr eigenes Design von Grund auf neu erstellen. Andernfalls ist dies nicht unbedingt erforderlich.
Sogar mit einer benutzerdefinierten Karte können Sie am Ende etwas finden, das als USB-Tastatur fungiert und auflistet, sodass keine benutzerdefinierten Treiber erforderlich sind.
quelle