Arduino teclado 4x4


En este post vamos a conectar a arduino un teclado 4x4, donde obtendremos cual fue la tecla que se oprimió.

oscar Escrito por oscar 14 January 2019 23176 0

Video del circuito

¿Que es un teclado 4x4?

Este es un teclado básico de 16 botones que ha sido diseñado para una entrada y funcionalidad fáciles para el usuario. Los botones se configuran en un formato de matriz que permite a un microcontrolador "escanear" los 8 pines de salida para ver cuál de los 16 botones se está presionando.[1]

Cada uno de los 16 botones del teclado ha sido etiquetado como 1, 2, 3, A, 4, 5, 6, B, 7, 8, 9, C, 0, *, # y D y ha sido formateado en el mismo diseño como un teclado de teléfono con cada resistencia de pulsación entre 10 y 625 ohmios.

Matriz de teclas

Para saber que tecla se pulsa, basta con poner tensión en las filas de forma secuencial y luego leer las columnas para ver cuál de ellas tiene un estado HIGH[3]. Los teclados matriciales usan una combinación de filas y columnas para conocer el estado de los botones. Cada tecla es un pulsador conectado a una fila y a una columna. Cuando se pulsa una de las teclas, se cierra una conexión única entre una fila y una columna.

Keypad 4x4 pin out
Keypad 4x4 pin out

Materiales

Los materiales que se necesitan para este proyectos se encuentran el la siguiente tabla, también podrán encontrar un link donde los enviara a la definición detallada del elemento.

Material Cantidad Descripción
Arduino 1 Controlador para el teclado
Teclado 4x4 1 Teclado 4x4
Cables de conexión 8 Cables macho a macho
Protoboard 1 Tablero de conexión

Conexión

La conexión del teclado es muy sencilla, solo necesitamos seguir los pasos como se mencionan en la siguiente tabla:

Pines arduino Pines teclado
9 1
8 2
7 3
6 4
5 5
4 6
3 7
2 8

A continuación dejo unas imagenes de guía:

Keypad breadboard
Keypad breadboard
Keypad 4x4 schema
Keypad 4x4 schema

Librería

El teclado es una biblioteca para usar teclados de estilo de matriz con el Arduino[2]. A partir de la versión 3.0 ahora soporta múltiples pulsaciones de teclas.

La librería fue creado para promover la abstracción de hardware. Mejora la legibilidad del código al ocultar las llamadas pinMode y digitalRead para el usuario.

Descarga la librería keypad.zip en el siguiente link http://playground.arduino.cc/Code/Keypad#Download

Código

El código que estamos usando, es el ejemplo CustomKeypad de la librería del teclado. Dejare el código del repositorio en de keypad.

// Paso 1
#include <Keypad.h>

// Paso 2
const byte numRows= 4;
const byte numCols= 4;

// Paso 3
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

// Paso 4
byte rowPins[numRows] = {'5','4','3','2'};
byte colPins[numCols]=  {'9','8','7','6'};

// Paso 5
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);

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

void loop(){
    // Paso 6
    char keypressed = myKeypad.getKey();
    if (keypressed != NO_KEY){
    Serial.println(keypressed);
    }
}

Veamos una breve explicación del código anterior.

  1. Se importa la librería Keypad, donde se encuentra las funciones que usaremos con el teclado.
  2. Creamos las constantes numRows y numCols para determinar el tamaño del teclado.
  3. Se crea la matriz tipo char de nombre keymap donde las teclas que mapearemos en el teclado.
  4. Mapeamos los pines que usamos del arduino para el teclado, se crean las filas y las columnas.
  5. Inicializamos el objeto myKeypad el cual en su constructor recibe las variables y constantes creadas anteriormente. Este objeto contiene las instrucciones para leer el valor del teclado.
  6. Con la función getKey obtenemos el valor de la tecla presionada, luego validamos si se presiono una tecla con NO_KEY, si es correcto mostramos el carácter de la tecla presionada.

Ver también

Referencias

[1] Keypad 14-button, Definicion de sparkfun Consultado enero 2019

[2] Playground arduino http://playground.arduino.cc/Code/Keypad, Consultado enero 2019

[3] Prometec, https://www.prometec.net/teclados-matriciales/ Consultado enero 2019


Comentario

Debe aceptar antes de enviar