En este proyecto, vamos a ver cómo integrar un teclado con una placa ESP32 para que el controlador pueda leer las teclas que presiona el usuario. Los teclados están en todos lados, desde celulares hasta microondas, por lo que saber conectarlos es fundamental para crear distintos tipos de productos comerciales.
Descripción general
Para este proyecto, vamos a usar un teclado matricial. Este tipo de teclados sigue un esquema de codificación que le permite tener muchos menos pines de salida que teclas físicas. Por ejemplo, el que usamos tiene 16 teclas pero solo 8 pines; un teclado lineal necesitaría 17 pines para funcionar, lo que hace al matricial mucho más eficiente al reducir el cableado necesario.
Componentes necesarios
(1) x Elegoo ESP32
(2) x Protoboard de 400 puntos
(1) x Módulo de teclado de membrana
(8) x Cables puente M-M (Macho a Macho)
Esquema de conexión y diagrama de cableado
Al conectar los pines a la placa ESP32, tenés que hacerlo a los pines GPIO designados. Conectá el primer pin del teclado (el lado con el símbolo *) al GPIO 18, el segundo al GPIO 19, el tercero al GPIO 21, el cuarto al GPIO 22, el quinto al GPIO 27, el sexto al GPIO 26, el séptimo al GPIO 25 y el octavo (el lado con el símbolo D) al GPIO 33.
Código
Podés hacer clic en el enlace de texto azul para descargar el programa a tu equipo y, una vez terminada la descarga, hacé doble clic en el archivo para abrirlo. Antes de empezar, asegurate de tener instalado el entorno Arduino IDE y los componentes necesarios, como el paquete de soporte de la placa y los controladores del ESP32. Si tenés dudas sobre este proceso, podés consultar la sección "Parte 1" del documento para una guía detallada.
📥 DESCARGAR custom_keypad.zip
Es muy importante que instales o reinstales la librería <Keypad> antes de ejecutar el código; de lo contrario, no va a funcionar. Una vez que el código esté compilado y subido al ESP32, las teclas que presiones se van a mostrar en el monitor serial de Arduino. Podés abrirlo haciendo clic en el botón "Monitor Serie".
Explicación del código
const byte ROWS = 4;: Define constantes para las dimensiones del teclado (una matriz de 4x4 tiene 4 filas y 4 columnas, sumando 8 pines en total). El uso de "const byte" asegura que estos valores sean fijos y usen el mínimo de memoria.
char hexaKeys[ROWS][COLS]: Es una matriz bidimensional que mapea los botones físicos del teclado con sus caracteres correspondientes.
byte rowPins[ROWS] / colPins[COLS]: Estos arreglos vinculan los pines de las filas y columnas del teclado con los pines GPIO específicos del ESP32. Esto le indica a la librería Keypad qué pines debe usar para comunicarse.
Keypad customKeypad: Crea un objeto de teclado llamado "customKeypad" para controlar el dispositivo físico.
char customKey = customKeypad.getKey(): Esta función chequea si se presionó algún botón. Si hay presión, devuelve el carácter correspondiente (según hexaKeys); si no se presiona nada, devuelve 0.
Fuente: Adaptado al español desde el wiki oficial Elegoo (licencia CC BY-SA). Revisión técnica por equipo Breva.