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.
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:
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.
- Se importa la librería
Keypad
, donde se encuentra las funciones que usaremos con el teclado. - Creamos las constantes
numRows
ynumCols
para determinar el tamaño del teclado. - Se crea la matriz tipo
char
de nombrekeymap
donde las teclas que mapearemos en el teclado. - Mapeamos los pines que usamos del arduino para el teclado, se crean las filas y las columnas.
- 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. - Con la función
getKey
obtenemos el valor de la tecla presionada, luego validamos si se presiono una tecla conNO_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