Recientemente compré el Makey Makey (basado en Arduino Leonardo / ATMega32u4), con la esperanza de construir un teclado USB completo estilo steampunk a partir de algunas partes metálicas. Antes de que llegara, volví a leer los detalles y me di cuenta de que solo tenía 18 entradas posibles, por lo que 85+ teclas no funcionarían. ¿Alguien tiene ideas de cómo podría crear una bestia así, posiblemente con una Raspberry Pi? (que se conecta con bastante facilidad, de publicaciones anteriores )
15
Respuestas:
Si solo quiere hacer un teclado, sin usar su Makey Makey, puede hacerlo usando la funcionalidad GPIO de la Raspberry Pi. Pero como comentamos antes, la Raspberry Pi no tiene suficientes pines disponibles para hacer un teclado que sea realmente útil.
Sin embargo, si está dispuesto a agregar 2 circuitos integrados, puede hacerse un teclado con tantas teclas que tendrá un problema para encontrar una función para cada tecla.
Mi sugerencia es conectar 2 I2C IC al bus I2C en la Raspberry Pi, y usarlos para crear su propia matriz de escaneo.
Si usa un PCF8574, tiene 8 pines de E / S disponibles, si obtiene un PCF8575, incluso tiene 16 pines de E / S disponibles. Al combinarlos, puede obtener una matriz de escaneo de:
Debe usar siempre uno de ellos como salida y uno como entrada. En la salida, deja que un bit "camine" del bit 0 al bit n (7 o 15), estas son las columnas de la matriz. Por otro lado, lee constantemente el valor de la entrada y estas son las filas de la matriz. La combinación de qué bit de salida está activo y qué bit de entrada es '1' es la tecla que se presiona.
En realidad, crear la matriz es la mayor parte del trabajo, y mientras lo hace, no olvide agregar un diodo después de cada interruptor que coloque en la matriz, este diodo (un 1N4148 normal funcionará bien) debe colocarse con el ánodo al interruptor y el cátodo a la línea de la fila. La caída de voltaje de 0.6V sobre este diodo no debería ser un problema, el 2.7V restante (3.3V-0.6V) debería ser un '1' lógico.
La razón de este camión lleno de diodos es que evitará cosas como el efecto fantasma y el enmascaramiento de las llaves. El efecto fantasma es el efecto de que si presiona más de tres teclas al mismo tiempo, es posible que se interprete como una tecla totalmente diferente porque más filas tendrán un '1' lógico. El enmascaramiento es el efecto de que, si tiene varias teclas presionadas y suelta una tecla, esto (en algunas situaciones) no se detectará porque la fila de esa tecla sigue siendo un '1' lógico.
La imagen muestra un ejemplo de efecto fantasma, se presionan los botones A, B, D y además de la Fila 1 (para el botón A) también la Fila 2 (para el botón C) es alta, en este momento la Columna 1 está activa, lo cual no es correcto.
Después de toda la aventura de hardware, debe escribir o adaptar un controlador de kernel para usar realmente el teclado en Linux. Un buen punto de partida podría ser este enlace: Controlador para las teclas en el expansor IOC TCA6416 I2C , esta es una idea similar, pero solo utiliza un teclado de 16 teclas.
Espero que esto te ayude un poco.
fuente
Si desea hacer un teclado completo para escribir, probablemente sería mejor con el IC fuera de un teclado USB. O conserve la PCB en sí misma enterrada en lo profundo de su sistema donde no se puede ver y conecte los cables a sus conmutadores, o fabrique algo personalizado con la misma matriz.
Si realmente necesita cambiar la matriz eléctrica, es posible que necesite hacer su propio diseño desde cero, pero de lo contrario no es realmente necesario.
Incluso con una placa personalizada, puede terminar con algo que enumera y funciona como un teclado USB, eliminando la necesidad de controladores personalizados.
fuente