Se vuoi solo creare una tastiera, senza usare Makey Makey, puoi farlo utilizzando la funzionalità GPIO di Raspberry Pi. Ma come commentato prima, il Raspberry Pi non ha pin sufficienti disponibili per creare una tastiera che sia effettivamente utile.
Tuttavia, se sei disposto ad aggiungere 2 IC puoi farti una tastiera con così tanti tasti che avrai un problema a inventare una funzione per ogni tasto!
Il mio suggerimento è di collegare 2 IC I2C al bus I2C sul Raspberry Pi e utilizzarli per creare la propria matrice di scansione.
Se usi un PCF8574 hai 8 pin I / O disponibili, se ottieni un PCF8575 hai anche 16 pin I / O disponibili. Combinando quindi puoi ottenere una matrice di scansione di:
- 64 tasti: (2x PCF8574)
- 128 tasti: (1x PCF8574 e 1x PCF8575)
- 256 tasti: (2x PCF8575)
Devi usarne sempre uno come output e uno come input. Sull'output si lascia un po 'camminare' dal bit 0 al bit n (7 o 15), queste sono le colonne della matrice. Dall'altro leggi costantemente il valore dell'input e queste sono le righe della matrice. La combinazione di quale bit di uscita è attivo e quale bit di ingresso è "1" è il tasto premuto.
In realtà creare la matrice è la maggior parte del lavoro, e mentre ci sei, non dimenticare di aggiungere un diodo dopo ogni interruttore inserito nella matrice, questo diodo (un normale 1N4148 andrà bene) deve essere posizionato con l'anodo all'interruttore e il catodo alla linea di fila. La caduta di tensione di 0,6 V su questo diodo non dovrebbe essere un problema, il restante (3,3 V-0,6 V) 2,7 V dovrebbe comunque essere un '1' logico.
La ragione di questo carico di diodi è che impedirà cose come il fantasma e il mascheramento delle chiavi. Il fantasma è l'effetto che se si premono più di tre tasti contemporaneamente, è possibile che venga interpretato come un tasto completamente diverso perché più righe avranno un '1' logico. Il mascheramento è l'effetto che, se si premono più tasti e si rilascia un tasto, questo (in alcune situazioni) non verrà rilevato perché la riga per quel tasto è ancora un "1" logico.
L'immagine mostra un esempio di ghosting, i pulsanti A, B, D vengono premuti e oltre alla riga 1 (per il pulsante A) anche la riga 2 (per il pulsante C) è alta, al momento la colonna 1 è attiva, il che non è corretto.
Dopo l'intera avventura hardware, è necessario scrivere o adattare un driver del kernel per utilizzare effettivamente la tastiera in Linux. Un buon punto di partenza potrebbe essere questo link: Driver per chiavi su TCA6416 I2C IO expander , questa è un'idea simile, ma utilizza solo una tastiera a 16 tasti.
Spero che questo ti aiuti un po '.