Paso 3: Lectura de pulsaciones de teclas en AVR
Elegí PD [2..7] y PB [0..1] para mi las conexiones. Si desea utilizar la comunicación serial en su arduino u otro clon, rehúyen PD [0..1]. También tuve problemas con mis pernos flotantes, usé cuatro 10 resistores de k para tirar hacia abajo los pernos de columna al suelo. Su AVR probablemente tiene pull-UPS internas, pero la lógica que ya había llegado para arriba con en mi cabeza no funcionaba bien con eso. Se te nota que no hay pin o conexión para alimentación al teclado, a diferencia del interruptor rotativo binario hablé en un anterior instructable.
Aquí es la idea básica. Quitando la cuatro columna hasta 0V. Configurar los pines como entrada. Establecer sus pernos de fila como salida con valores iniciales lógica 0. Un bucle por cada fila, enviando una lógica 1 a la fila y lea los pernos de columna. Si hay uno ahí, entonces tienes un keypress. También es de destacar el tema de la clave debounce. A través de la experimentación encontré una tasa de retraso realizable, de lo contrario tendrás muchos muchas notificaciones de keypress de cada keypress solo. Dependiendo de la velocidad de la MCU, usted tenga que modificas lo un poco, demasiado.
Os he adjunto un archivo en la parte inferior que escribí para que esta sección demostrar la conexión directa y lectura del teclado. Si usted elige utilizarlo que tendrás que modificar como bibliotecas que escribí para la comunicación serial. Aparte de eso, creo que debe ser generalmente fino. Aquí es el pseudo código para mostrar el flujo:
NOTA: Los números son sus lógicas números del 0 al 15, no el número de la tecla que se presionó. Para ello, necesitará agregar más lógica en su sección "el número es...", o asignar a un array, que es sólo un par de pasos. En primer lugar, vamos a ver cómo reducir el número de pines de I/O este teclado está tomando en nuestro microcontrolador.