Teclados matriciales 4X4 membrana, 4X1 membrana y 4X3 rígido

Publicado por Victor Arrieta en

Los teclados matriciales son una magnífica adición para nuestros proyectos ya que nos permitirán ingresar datos de forma directa a nuestros programas. Los teclados de membrana tienen la ventaja adicional que son adhesivos, por lo tanto pueden ser pegados al equipo donde se necesiten, el último debe ser fijado por otro método, pero es más resistente al uso.

La implementación de estos sensores la realizaremos por medio de la librería Keypad, la cual puedes descargar aquíaunque en realidad el funcionamiento de estos teclados es bastante simple, tenemos líneas de filas y líneas de columnas, luego, cuando se sense continuidad entre una fila específica y una columna específica, significa que la tecla correspondiente se ha presionado. La mayor utilidad de la librería consiste en que nos provee funciones como: de-codificación inmediata de la tecla presionada, función de tecla presionada, tiempo de presión, sensado de múltiples teclas al tiempo, entre otras.

A continuación te presentamos un mini proyecto basado en el ejemplo de la librería (la cual hemos modificado para funcione sin problemas en estos teclados), que  nos despliega la tecla presionada en el monitor serial de Arduino, con esto podrás realizar pruebas a tus teclados.

Esquema de conexión Arduino UNO

 

 

La conexión para lo otros teclados es exactamente igual, pero comenzando desde el pin 6 has el pin 2 para el teclado 4X1 y del pin 9 al pin 3 para el teclado 4X3
Código Arduino

// Si estás usando los teclados 4X1 ó 4X3 debes quitar los comentarios y eliminar lo demás, según corresponda

#include <Keypad.h>

const byte ROWS = 4; //número de filas
const byte COLS = 4; //número de columnas

// mapeo de las teclas
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte colPins[COLS] = {5, 4, 3, 2}; //pines de columnas
byte rowPins[ROWS] = {9, 8, 7, 6}; //pines de filas

/*//quitar comentario para el teclado membrana 4X1
const byte ROWS = 1;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3', '4'},
};
byte rowPins[ROWS] = {2};
byte colPins[COLS] = {4, 3, 6, 5};
*/

/*//quitarcomentario para el teclado matricial 4X3
const byte ROWS = 4; //número de filas
const byte COLS = 3; //número de columnas
char hexaKeys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte colPins[COLS] = {5, 4, 3}; //connect to the row pinouts of the keypad
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad
*/

//inicializamos el teclado
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){
  Serial.begin(9600); // com serial
}

void loop(){
  //leemos la tecla presionada
  char customKey = customKeypad.getKey();

  if (customKey){
    Serial.println(customKey); // la desplegamos
  }
}


Una vez subido el código y realizadas las conexiones, podrás ver en el puerto serial del IDE de Arduino la tecla que presiones.


FIN DEL POST

 


Compartir esta publicación



← Publicación más antigua Publicación más reciente →