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

Protoboard – Placa de pruebas

Protoboard – Placa de pruebas

| Actualizado:
Comentarios: 0

Una placa de pruebas (protoboard) es un tablero compuesto por orificios que se encuentran conectados eléctricamente entre sí de manera interna. En ella se pueden insertar elementos electrónicos y cables para el armado y prototipado de circuitos electrónicos. Está fabricado…

Modulo sensor de agua
Sensor de agua

Sensor de agua

| Actualizado:
Comentarios: 0

Módulo que detecta el nivel de agua del recipiente donde se sumerge. Para usar en tus proyectos Arduino. El nivel de agua es detectado por las bandas paralelas que tiene en la placa, y según el nivel de agua, genera…

Matrix LED MAX7219

Matrix LED MAX7219

| Actualizado:
Comentarios: 0

En este post conoceremos el módulo matriz led de 8×8 controlado por el circuito integrado MAX7219, que nos permitirá mostrar números, caracteres o simples dibujos y animaciones. ¿Qué es una matriz LED? Es un display compuesto por múltiples LEDs en…

Codificador rotatorio KY-040
Codificador rotatorio KY-040 (rotary encoder)

Codificador rotatorio KY-040 (rotary encoder)

| Actualizado:
Comentarios: 0

El Módulo KY-040 es un codificador incremental con dos salidas levemente desfasadas, gracias a esto, veremos que se puede saber en que dirección estamos girando el eje. Un encoder rotativo tiene un número fijo de posiciones por revolución. El KY-40…

Comentarios - 0

Deja un comentario

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