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

Sensor Óptico Infrarrojo TCRT5000
Módulo Sensor Óptico Infrarrojo TCRT5000

Módulo Sensor Óptico Infrarrojo TCRT5000

| Actualizado:
Comentarios: 0

El TCRT5000 es un sensor óptico reflexivo que consta de un emisor de luz infrarroja y un fototransistor. El fototransistor detecta la luz reflejada cuando un objeto pasa frente al sensor. TCRT500 sensor infrarrojo de proximidad El LED emite un…

Módulo LED RGB.

Módulo LED RGB.

| Actualizado:
Comentarios: 0

El módulo LED RGB, para proyectos con Arduino, integra tres colores en un solo encapsulado y dispone de cuatro patillas, una de las cuales es el cátodo común y las otras tres corresponden a los colores rojo, verde y azul.…

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…

¿Cómo conectar una pantalla LCD 16×02 con controlador I2C a Arduino?
Controla un LCD con 2 pines

Tarjeta de interface I2C para display LCD1602

| Actualizado:
Comentarios: 0

El módulo adaptador LCD a I2C es un componente que facilita la conexión de una pantalla LCD a un microcontrolador o placa de desarrollo a través del protocolo I2C, simplificando el cableado y reduciendo la complejidad de la conexión. El…

Comentarios - 0

Deja un comentario

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