1. El Octavo Bit
  2. / Arduino
  3. / Modulos y sensores
  4. / Teclados matriciales

Teclados matriciales

| Actualizado:
Comentarios: 0

Teclados matriciales
Teclados matriciales

Los teclados son una excelente manera de permitir que los usuarios interactúen con sus proyectos. Se pueden usar para navegar por los menús, introducir contraseñas o controlar los juegos y robots.

Básicamente un teclado matricial está compuesto por pulsadores organizados en filas y columnas formando una matriz.

¿Cómo funciona un teclado matricial?

Las teclas de un teclado están organizadas en filas y columnas. Existen múltiples teclados con diferente número de teclas, siendo los más habituales las configuraciones de 3×3, 3×4 y 4×4.

Este tipo de teclados están constituidos por 3 membranas superpuestas, dos membranas con material conductor y una en medio no conductora, para separarlas. En condiciones normales, el interruptor se encuentra abierto, pero al presionar la tecla, la membrana superior e inferior entran en contacto permitiendo la circulación de la corriente.

El esquema de conexión de un teclado 4×4 sería:

Esquema de conexión de un teclado 4x4

Como podemos observar los pulsadores están distribuidos en filas y columnas. Para detectar la pulsación de una tecla tendremos que conocer la posición (X, Y). Por ejemplo, la tecla del número 5 corresponde a la fila 2 y columna 2, por lo que se encuentra en la posición (2,2).

Configuración de un teclado matricial para Arduino

Conexión con Arduino.

Esquema:

Para el montaje, conectamos todos los pines a las salidas digitales de Arduino, por ejemplo, el esquema nos podría quedar de la siguiente forma:

Conexión de un teclado matricial 4x4 con Arduino

Código sin utilizar librería:

byte pinesFilas[] = {11,10,9,8}; 
byte pinesColumnas[] = {7,6,5,4};
const byte numeroFilas = 4;
const byte numeroColumnas = 4;
char teclas[4][4] = {{'1','2','3','A'}, 
                     {'4','5','6','B'}, 
                     {'7','8','9','C'}, 
                     {'*','0','#','D'}};
void setup(){
  for (int nF = 0; nF < numeroFilas; nF++) {
     pinMode(pinesFilas[nF], OUTPUT);
     digitalWrite(pinesFilas[nF], HIGH);
  }

  for (int nC = 0; nC < numeroColumnas; nC++) {
     pinMode(pinesColumnas[nC], INPUT_PULLUP);
  } 
   
  Serial.begin(9600);
  Serial.println("Teclado 4x4");
  Serial.println();
}
 
void loop(){
    for (int nF = 0; nF < numeroFilas; nF++){
      digitalWrite(pinesFilas[nF], LOW);
      for (int nC = 0; nC < numeroColumnas; nC++) {
        if (digitalRead(pinesColumnas[nC]) == LOW){
          Serial.print("Tecla: ");
          Serial.println(teclas[nF][nC]);
          while(digitalRead(pinesColumnas[nC]) == LOW){}
        }
      }
      digitalWrite(pinesFilas[nF], HIGH);
    }
   delay(10);
}

Código utilizando la librería Keypad:

#include "Keypad.h"
 
const byte filas = 4;
const byte columnas = 4;
 
char botones[filas][columnas] = {
   { '1','2','3', 'A' },
   { '4','5','6', 'B' },
   { '7','8','9', 'C' },
   { '#','0','*', 'D' }
};
 
const byte pinesFilas[filas] = { 11, 10, 9, 8 };
const byte pinesColumnas[columnas] = { 7, 6, 5, 4 };
 
Keypad teclado = Keypad(makeKeymap(botones), pinesFilas, pinesColumnas, filas, columnas);
 
void setup() {
   Serial.begin(9600);
   Serial.println("Teclado 4x4");
   Serial.println();
}
 
void loop() {
   char tecla = teclado.getKey();
 
   if (tecla) {
      Serial.print("Tecla: ");
      Serial.println(tecla);
   }
}

Artículos que te pueden interesar

Motor 28BYJ-48 5V y ULN2003 integrado

Motor 28BYJ-48 5V y ULN2003 integrado

| Actualizado:
Comentarios: 0

Un motor paso a paso es un dispositivo electromecánico que convierte pulsos eléctricos en movimientos mecánicos exactos. El eje de un motor paso a paso gira en pasos de ángulos fijos cuando se le aplican impulsos eléctricos en la secuencia…

Buzzer pasivo y activo
Buzzer pasivo (KY-006) y activo (KY-012)

Buzzer pasivo (KY-006) y activo (KY-012)

| Actualizado:
Comentarios: 0

El zumbador o buzzer es un dispositivo electrónico que actúa como un transductor. Su función es producir un sonido agudo o zumbido mientras se le está suministrando corriente. Se pueden encontrar de dos tipos: Los que integran oscilador, por ejemplo…

Módulo HC-06 Bluetooth
Módulo HC-06 Bluetooth Compatible con Arduino

Módulo HC-06 Bluetooth Compatible con Arduino

| Actualizado:
Comentarios: 0

El módulo Bluetooth HC-06 es ideal para utilizar en todo tipo de proyectos donde necesites una conexión inalámbrica fiable y sencilla de utilizar. Se configura mediante comandos AT y aunque a diferencia de su hermano el HC-05, el HC-06 solo…

Shield V5.0 placa de expansión para Arduino
Shield V5.0 para Arduino

Shield V5.0 para Arduino

| Actualizado:
Comentarios: 0

El Sensor Shield V5.0 es una placa de expansión diseñada para su uso con placas de desarrollo Arduino. Se monta directamente sobre una placa base Arduino y proporciona una interfaz conveniente para conectar varios sensores y módulos adicionales. Contenido 1…

Comentarios - 0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *