El teclado matricial 4x4 de membrana permite ingresar números y letras a un proyecto Arduino con solo 8 pines. Es el método de entrada más usado en cerraduras electrónicas, sistemas de acceso y menús de configuración.
Cómo Funciona la Matriz
Las 16 teclas se organizan en una cuadrícula de 4 filas × 4 columnas. El Arduino escanea cada combinación fila/columna para detectar qué tecla está presionada. Esto requiere solo 8 pines en lugar de 16.
Conexión
| Teclado (pin) | Arduino | Función |
|---|---|---|
| 1 | Pin 2 | Fila 1 |
| 2 | Pin 3 | Fila 2 |
| 3 | Pin 4 | Fila 3 |
| 4 | Pin 5 | Fila 4 |
| 5 | Pin 6 | Columna 1 |
| 6 | Pin 7 | Columna 2 |
| 7 | Pin 8 | Columna 3 |
| 8 | Pin 9 | Columna 4 |
Código: Sistema de Contraseña
#include <Keypad.h>
const byte FILAS = 4;
const byte COLS = 4;
char teclas[FILAS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pinsFilas[FILAS] = {2, 3, 4, 5};
byte pinsCols[COLS] = {6, 7, 8, 9};
Keypad teclado = Keypad(makeKeymap(teclas), pinsFilas, pinsCols, FILAS, COLS);
const String CLAVE = "1234";
String intento = "";
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); // LED verde
Serial.println("Ingresa contraseña:");
}
void loop() {
char tecla = teclado.getKey();
if (!tecla) return;
if (tecla == '#') { // Confirmar
if (intento == CLAVE) {
Serial.println("Acceso concedido!");
digitalWrite(13, HIGH);
delay(3000);
digitalWrite(13, LOW);
} else {
Serial.println("Clave incorrecta");
}
intento = "";
} else if (tecla == '*') { // Borrar
intento = "";
Serial.println("Borrado");
} else {
intento += tecla;
Serial.print("*"); // Ocultar dígitos
}
}
Proyectos con Teclado Matricial
- Cerradura electrónica: combinar con servo o relay para desbloquear una puerta
- Calculadora DIY: LCD 1602 + teclado 4x4 para operaciones matemáticas
- Alarma con código de desactivación: buzzer que se apaga al ingresar PIN correcto
- Control de menú en LCD: A/B/C/D como flechas de navegación, # para confirmar