'teclado desde cero' registrando pulsaciones de teclas

2

Para mi primer hackeo de hardware, estoy probando un 'teclado mecánico desde cero' (donde scratch significa componentes individuales).

Planeo usar un tablero teensy ++ (16MHz) y me preguntaba cómo buscar pulsaciones de teclas, hasta ahora estaba pensando en usar una cuadrícula (matriz) para las teclas, cada fila es un pin de salida y cada columna es A en el pin, los interruptores los conectan (junto con un diodo para limitar la dirección de la corriente a fin de reducir el efecto fantasma).

Por lo tanto, habría un ciclo de exploración, durante el cual una columna se establece en alta (o baja, según sea) y luego cada fila se prueba para este valor. Mi pregunta se refiere a si esto sería o no lo suficientemente preciso, significa que el interruptor debe cerrarse en el momento exacto en que se comprueban la fila y la columna, de lo contrario la clave no se registrará en absoluto. ¿Es así como se hace o hay un enfoque mucho mejor?

También existe el problema del rebote de la clave, por lo que puede haber un retraso entre la verificación de la misma clave (podría ser el resultado del ciclo de exploración) y / o un contador en el que se debe activar una determinada tecla varias veces.

Gracias de antemano :)

    
pregunta cjh

2 respuestas

5

Lo que describe es básicamente la forma en que los micros de 8 bits solían hacerlo, antes de que todos los teclados tuvieran microcontroladores dedicados (que de todos modos hicieron lo mismo).

La entrada del teclado del usuario humano no es muy rápida. Si escanea la matriz de claves una vez cada 20 ms, y establece que es una regla que solo cuenta la tecla como presionada si la ve presionada en dos exploraciones consecutivas, eliminará el rebote de la tecla.

    
respondido por el JustJeff
1

Sí, una matriz con diodos es exactamente cómo se hace.

Voy a suponer que seleccionas seleccionar una columna a la vez al reducirla, dejar que todas las demás columnas floten (colector abierto) (o elevar todas las demás columnas a la altura), y sus pines de entrada de fila tienen resistencias de tracción .

En principio, las tomas de teclado súper breves se perderían si la MCU no selecciona esa columna durante todo el intervalo desde que se presiona la tecla hasta que se suelta la tecla. En la práctica, los humanos son tan lentos que incluso cuando intentan tocar rápidamente una tecla, un codificador de teclado típico con una MCU bastante lenta escaneará cada columna docenas de veces durante ese intervalo. El récord mundial de velocidad de escritura es de 1075 pulsaciones en el transcurso de 1 minuto. Eso es un promedio de un poco más de 1 pulsación de tecla por milisegundo en promedio. Es casi seguro que algunas teclas se mantuvieron presionadas más tiempo, y otras más cortas, pero mientras no estés intentando batir el récord mundial, Sospecho que un tiempo de escaneo del teclado de 100 microsegundos es más que suficientemente rápido. Un procesador de 16 MHz debería poder escanear cada columna en 100 microsegundos o menos fácilmente. De hecho, algunos botones de baja calidad tienen "rebote de teclas" durante tanto tiempo que puede obtener varias (falsas) pulsaciones de teclas y pulsaciones de teclas cuando un ser humano intenta presionar el botón una vez, lo que requiere una complejidad adicional en el hardware o el software. seguro que se interpreta como una sola pulsación de tecla.

La mayoría de los codificadores de teclado simplemente escanean el teclado una y otra vez (sondeo), seleccionando solo una columna a la vez.

Los codificadores de teclado de baja potencia controlan todas las columnas bajas, configure una interrupción para despertarlos si cualquier fila se agota, y luego ir a dormir. Cuando se despiertan, escanean el teclado una y otra vez (sondeo) seleccionando solo una columna a la vez, hasta que no se presione ninguna tecla, Luego vuelve a dormir.

    
respondido por el davidcary

Lea otras preguntas en las etiquetas