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

TM1637, display digital de 4 dígitos
TM1637: módulo display digital de 4 dígitos.

TM1637: módulo display digital de 4 dígitos.

| Actualizado:
Comentarios: 0

El módulo de pantalla LED de 4 dígitos con TM1637 se puede controlar con sólo dos líneas de control DIO y CLK. Característica de Módulo Display Digital TM1637 4 Dígitos: Tensión de alimentación de 3V-5V Consumo de corriente 250 mA…

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.…

Potenciometro lineal B10K 10K

Potenciometro lineal B10K 10K

| Actualizado:
Comentarios: 0

Potenciómetros B10K lineal de 10K ohm. Con eje estriado de 6mm (18 dientes) y terminales para PCB. Largo total del vástago 15mm incluyendo la sujeción (rosca). Incluye una tuerca (M7) y arandela niquelada. Un potenciómetro es una resistencia variable con…

¿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 *