Recentemente, comprei o Makey Makey (baseado no Arduino Leonardo / ATMega32u4), esperando construir um teclado USB estilo steampunk completo a partir de algumas peças de metal. Antes de chegar, reli os detalhes e percebi que tinha apenas 18 entradas possíveis; portanto, mais de 85 teclas não funcionam. Alguém tem idéias de como eu poderia criar uma fera assim, possivelmente com um Raspberry Pi? (que se conecta com bastante facilidade a partir de postagens anteriores )
15
Respostas:
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:
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.
fonte
Se você deseja criar um teclado completo para digitar, provavelmente é melhor usar o IC de um teclado USB. Retenha o PCB em si no fundo do sistema, onde ele não pode ser visto e passe os fios até os comutadores, ou crie algo personalizado com a mesma matriz.
Se você realmente precisar alterar a matriz elétrica, poderá ser necessário criar seu próprio design do zero, mas, caso contrário, não será realmente necessário.
Mesmo com uma placa personalizada, você ainda pode terminar com algo que enumera e funciona como um teclado USB, eliminando a necessidade de drivers personalizados.
fonte