Se você quiser apenas criar um teclado, sem usar o Makey Makey, poderá fazê-lo usando a funcionalidade GPIO do Raspberry Pi. Mas, como comentado anteriormente, o Raspberry Pi não possui pinos suficientes disponíveis para criar um teclado que seja realmente útil.
No entanto, se você estiver disposto a adicionar 2 ICs, você pode criar um teclado com tantas teclas que terá problemas para criar uma função para cada tecla!
Minha sugestão é conectar 2 ICs I2C ao barramento I2C no Raspberry Pi e usá-los para criar sua própria matriz de digitalização.
Se você usa um PCF8574, possui 8 pinos de E / S disponíveis; se você obtém um PCF8575, possui até 16 pinos de E / S disponíveis. Ao combinar, você pode obter uma matriz de varredura de:
- 64 teclas: (2x PCF8574)
- 128 teclas: (1x PCF8574 e 1x PCF8575)
- 256 teclas: (2x PCF8575)
Você sempre deve usar um deles como saída e outro como entrada. Na saída, você deixa um pouco 'andar' do bit 0 ao bit n (7 ou 15), essas são as colunas da matriz. Por outro lado, você lê constantemente o valor da entrada e essas são as linhas da matriz. A combinação de qual bit de saída está ativo e qual bit de entrada é '1' é a tecla pressionada.
Na verdade, criar a matriz é mais trabalhoso e, enquanto você trabalha nisso, não se esqueça de adicionar um diodo após cada comutador que você colocar na matriz, esse diodo (um 1N4148 normal funcionará bem) precisa ser colocado com o ânodo para o interruptor e o cátodo para a linha de linha. A queda de tensão de 0,6V nesse diodo não deve ser um problema, o restante (3,3V-0,6V) 2,7V ainda deve ser um '1' lógico.
A razão para esse caminhão cheio de diodos é que ele evitará coisas como fantasmas e mascaramento de chaves. O efeito fantasma é o efeito de que, se você pressionar mais de três teclas ao mesmo tempo, é possível que seja interpretado como uma tecla totalmente diferente, porque mais linhas terão um '1' lógico. Mascarar é o efeito de que, se você pressionar várias teclas e soltar uma tecla, isso (em algumas situações) não será detectado porque a linha dessa tecla ainda é um '1' lógico.
A imagem mostra um exemplo de fantasma: os botões A, B, D são pressionados e além da linha 1 (para o botão A) também a linha 2 (para o botão C) é alta, no momento em que a coluna 1 está ativa, o que não está correto.
Após toda a aventura do hardware, você precisa escrever ou adaptar um driver do kernel para realmente usar o teclado no linux. Um bom ponto de partida pode ser este link: Driver para teclas no expansor TCA6416 I2C IO , essa é uma idéia semelhante, mas usa apenas um teclado de 16 teclas.
Espero que isso ajude você um pouco.