Proyecto 25 – Teclado Matricial

En este proyecto interactuaremos con el Arduino a través de un teclado matricial 4×4, vamos a aprender a identificar por monitor serial la tecla presionada.

Teclado matricial 4×4

Teclado matricial  4x4
Teclado de membrana 4×4

El teclado matricial es un dispositivo compuesto por varios pulsadores ubicados como un arreglo o matriz, conectados en filas y columnas, por lo que puede ser leído por una menor cantidad de pines a los necesarios para leerlos de forma individual, por ejemplo un teclado matricial de 4×4 usaremos 8 pines para leerlo. Ciertamente existen una gran variedad de teclados matriciales, 1×4, 3×3, 4×3, 4×4, etc.

En nuestro caso vamos a utilizar un teclado matricial 4×4 de membrana, o sea que usa 4 pines para leer las filas y 4 pines para leer las columnas

Teclado matricial  4x4 - pines

Tal como vemos en la imagen anterior los primeros 4 pines son los que controlan las filas y los 4 últimos son las columnas.

Componentes

  • Arduino UNO o placa compatible
  • Teclado matricial 4×4
  • Cables o Jumpers
Diagrama de conexiones del teclado matricial 4x4
Diagrama de conexiones del teclado 4×4

Las conexiones de este proyecto son bastante sencillas, lo primero que debemos que tener en cuenta es que los pines del teclado se enumeran específicamente de izquierda a derecha y solo debemos conectar los pines del teclado a los del Arduino tal como lo indica la siguiente tabla:

Pin TecladoPin Arduino
19
28
37
46
55
64
73
82

Instalando la librería Keypad.h

Para utilizar nuestro teclado 4×4, podemos crear todo el código o en su lugar podemos utilizar una librería ya creada y lista para este fin. Existen varias librerías para interactuar con los teclados matriciales, nosotros vamos a utilizar la creada por Mark Stanley y Alexander Brevig, la cual la podemos descargar de este enlace y copiarla manualmente en la capeta de librerías o lo podemos hacer utilizando el IDE de Arduino, tal como lo podemos ver a continuación.

La instalación de la biblioteca, es bastante simple, lo primero es ir al menú Programa> Incluir Librería> Administrar bibliotecas, aquí hay que esperar un poco a que se actualice el indice librerías o bibliotecas instaladas.

Una vez termine de actualizar vamos al cuadro de búsqueda y digitamos «keypad». Nos aparecerían varios resultados, pero seleccionamos las que se llama «Keypad» de Mark Stanley, Alexander Brevig y le damos instalar.

Liberia Keypad para manejar el teclado matricial

Código

#include <Keypad.h>

const byte FILAS = 4; 
const byte COLUMNAS = 4; 

char keys[FILAS][COLUMNAS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

const byte pinesFilas[FILAS] = {9,8,7,6};
const byte pinesColumnas[COLUMNAS] = {5,4,3,2};

Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS);  

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    char tecla = teclado.getKey();

    if (tecla)
    {
        Serial.println(tecla);
    }
}

Explicación del código

Comenzaremos a revisar el código, primero vamos la inclusión de la librería y las declaraciones de las variables.

#include <Keypad.h>

Por medio de esta línea lo que hacemos es incluir la librería en nuestro proyecto, la cual debió de ser instalada previamente en nuestro IDE de Arduino.

const byte FILAS = 4; 
const byte COLUMNAS = 4; 

Además establecemos 2 constantes del tipo byte, la primera constate la utilizamos para almacenar el número de filas de nuestra matriz y la segunda es la que utilizaremos para almacenar en número de filas de nuestra matriz.

char keys[FILAS][COLUMNAS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

Creamos una matriz de caracteres cuyas dimensiones de del tamaño de nuestras dos constantes anteriores, es decir de 4×4, que es el tamaño de nuestro teclado matricial, en esta matriz vamos a guardar los valores que tiene cada una de las teclas de nuestro teclado.

const byte pinesFilas[FILAS] = {9,8,7,6};
const byte pinesColumnas[COLUMNAS] = {5,4,3,2};

Creamos dos arreglos o vectores, el primero con los pines del Arduino que vamos a asociar para las filas y el segundo con los pines que vamos a asociar con las columnas.

Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas, FILAS, COLUMNAS);

Por último, creamos una instancia del objeto keypad, al cual le asignamos la matriz de las teclas , la cantidad de filas, de columnas y los pines del Arduino que vamos utilizar para las filas y las columnas.

Función setup()

Serial.begin(9600);

Como hemos visto anteriormente en otros proyectos en el setup ponemos todo lo que debe ser inicializado o ejecutado una sola vez, el el caso de este proyecto único que vemos es la inicialización de la comunicación serial a una velocidad el 9600 baudios, por medio de la cual veremos la información de la tecla que hemos presionado a través del monitor serial.

Normalmente en nuestros otros proyectos utilizamos la función PinMode() para configurar los pines del Arduino, ya sea de entrada o de salida pero en este ejemplo no lo hacemos ya que la librería Keypad lo hace por nosotros.

Función loop()

char tecla = teclado.getKey();

if (tecla)
{
  Serial.println(tecla);
}

La primera línea del loop() leemos la tecla que haya sido presionada , luego tenemos la condicional if que verifica si se ha presionado alguna tecla y si es cierto imprime la tecla presionada en el monitor serial.

Salida del monitor serial

Resumen

En resumen al conectar nuestro Arduino a la computadora e iniciamos el monitor serial, comenzaremos a interactuar con él a través de un teclado matricial de 4×4, a medida que presionamos alguna tecla irá apareciendo su valor en el monitor serial.


Deja un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.