ESP32 - Teclado

Este tutorial te enseña cómo usar el ESP32 con un teclado. En detalle, aprenderemos:

Acerca del teclado numérico

teclado numérico

El teclado numérico está compuesto por un grupo de botones dispuestos en una matriz (filas y columnas). Cada botón corresponde a una tecla. Existen muchos tipos de teclados numéricos. Los teclados numéricos 3x4 (12 teclas) y 4x4 (16 teclas) son los dos más utilizados en proyectos de bricolaje.

Pinout del teclado

Los pines del teclado numérico se clasifican en dos grupos: fila y columna.

  • El teclado 3x4 tiene 7 pines:
    • R1, R2, R3, R4: pines de fila
    • C1, C2, C3: pines de columna
  • El teclado 4x4 tiene 8 pines:
    • R1, R2, R3, R4: pines de fila
    • C1, C2, C3, C4: pines de columna
    Pinout del teclado numérico

    Cómo funciona el teclado numérico

    Ver cómo funciona el teclado

Diagrama de cableado entre el teclado numérico y ESP32

ESP32 - Diagrama de cableado del teclado 3x4

Diagrama de cableado del teclado numérico ESP32 3x4

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Cómo conectar el ESP32 y un teclado matricial 3x4

ESP32 - diagrama de cableado de teclado 4x4

Diagrama de cableado del teclado ESP32 4x4

This image is created using Fritzing. Click to enlarge image

Cómo conectar el ESP32 y un teclado 4x4

Código ESP32

Teclado numérico 3x4

#include <Keypad.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 3 // three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16 connect to the row pins byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Teclado numérico 4x4

#include <Keypad.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {19, 18, 5, 17}; // GPIO19, GPIO18, GPIO5, GPIO17 connect to the row pins byte pin_column[COLUMN_NUM] = {16, 4, 0, 2}; // GPIO16, GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); void setup() { Serial.begin(9600); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); } }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Haz clic en el icono Bibliotecas en la barra izquierda del IDE de Arduino.
  • Escribe keypad en la caja de búsqueda, luego busca la biblioteca keypad de Mark Stanley, Alexander Brevig
  • Haz clic en el botón Instalar para instalar la biblioteca keypad.
Biblioteca de teclado para ESP32
  • Copia el código anterior y pégalo en el IDE de Arduino.
  • Compila y carga el código en la placa ESP32 haciendo clic en el botón Subir en el IDE de Arduino
  • Abre el Monitor Serial en el IDE de Arduino
Cómo abrir el monitor serie en el IDE de Arduino
  • Presiona algunas teclas en el teclado numérico
  • Mira el resultado en el monitor serie
COM6
Send
1 2 3 4 * #
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Teclado numérico y contraseña

El teclado numérico se utiliza ampliamente para autenticar a alguien mediante una contraseña. En este tutorial, una contraseña válida está predefinida en el código. Cuando un usuario introduce la contraseña desde el teclado numérico, se compara con la contraseña predefinida:

  • Si coincide, se concede el acceso.
  • Si no, se define el acceso.

Para usar una contraseña con el teclado numérico, especificamos dos teclas especiales:

  • Una tecla para empezar a introducir la contraseña. Por ejemplo, la tecla "*"
  • Una tecla para terminar de introducir la contraseña. Por ejemplo, la tecla "#"

La contraseña ingresada por un usuario se almacenará en una cadena, llamada la cadena de contraseña ingresada. Cuando se presiona una tecla:

  • Si una tecla ingresada es "*", borra la cadena de contraseña introducida para comenzar una nueva contraseña
  • Si una tecla ingresada NO es "* " o "#", añade la tecla a la cadena de contraseña introducida.
  • Si una tecla ingresada es "#", compara la cadena de contraseña introducida con la contraseña predefinida.

Teclado numérico - Código de acceso

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp32/esp32-keypad */ #include <Keypad.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 3 // three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {18, 5, 17, 16}; // GPIO18, GPIO5, GPIO17, GPIO16 connect to the row pins byte pin_column[COLUMN_NUM] = {4, 0, 2}; // GPIO4, GPIO0, GPIO2 connect to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "7890"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // clear input password } else if (key == '#') { if (password == input_password) { Serial.println("The password is correct, ACCESS GRANTED!"); // DO YOUR WORK HERE } else { Serial.println("The password is incorrect, ACCESS DENIED!"); } input_password = ""; // clear input password } else { input_password += key; // append new character to input password string } } }
  • Ejecuta el código anterior
  • Abre el Monitor serie en el IDE de Arduino
Cómo abrir el monitor serie en el IDE de Arduino
  • Pulsa las teclas "123456" y pulsa "#"
  • Pulsa las teclas "7890" y pulsa "#"
  • Consulta el resultado en el monitor serie. Se ve como se muestra a continuación:
COM6
Send
The password is incorrect, ACCESS DENIED! The password is correct, ACCESS GRANTED!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!