Me gustaría activar mi AVR cada vez que se presiona cualquier botón del teclado. Estoy usando la biblioteca Keypad.h y un teclado 4x4 simple hecho de botones conectados directamente a los pines digitales AVR. El teclado en sí funciona perfectamente.
Una pregunta es: ¿Por qué hay extensiones conectadas a filas / cols en algunos esquemas? Cuando funciona sin ellos ...
Para activar el AVR, encontré que unir simplemente 4 columnas AND a las columnas de kepyad resolvería el problema. Antes de la suspensión, el AVR debe configurar todas las columnas en SALIDA (ALTA) y luego adjuntar la interrupción en la ENTRADA INT1 (pin 1) cuando esté BAJA. Por lo tanto, las entradas Y están ALTAS hasta que se presiona cualquier botón, luego se activa la salida Y BAJA, de modo que se activa la INT1. Pero luego vi la fuente de la biblioteca Keypad.h:
void Keypad::scanKeys() {
// Re-intialize the row pins. Allows sharing these pins with other hardware.
for (byte r=0; r<sizeKpd.rows; r++) {
pin_mode(rowPins[r],INPUT_PULLUP);
}
// bitMap stores ALL the keys that are being pressed.
for (byte c=0; c<sizeKpd.columns; c++) {
pin_mode(columnPins[c],OUTPUT);
pin_write(columnPins[c], LOW); // Begin column pulse output.
for (byte r=0; r<sizeKpd.rows; r++) {
bitWrite(bitMap[r], c, !pin_read(rowPins[r])); // keypress is active low so invert to high.
}
// Set pin to high impedance input. Effectively ends column pulse.
pin_write(columnPins[c],HIGH);
pin_mode(columnPins[c],INPUT);
}}
No entiendo ¿por qué las columnas se configuran como ENTRADAS al final? ¿Podría ser omitido? Si es así, lo cambiaré a SALIDA y conectaré todas las columnas a las entradas 74HCT21 y adjuntaré la salida al pin INT1.
¿Se necesitan piezas adicionales para conectar el 74HCT21? ¿O se puede conectar directamente a la fuente de alimentación regulada de 3.3 V como esta?
Muchas gracias!