TP Teclado Matricial 5555

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Curso de Arduino Avanzado

Ing. José Moreno


TRABAJO PRACTICO
TEMA : Teclado Matricial
Un teclado matricial es un dispositivo que agrupa varios pulsadores, es un simple arreglo de
botones conectados en filas y columnas, de modo que se pueden leer varios botones con el
mínimo número de pines requeridos. Por ejemplo un teclado matricial 4x4 solamente ocupa 4
pines para las filas y otros 4 pines para las columnas, de este modo se pueden leer 16 teclas
utilizando solamente 8 pines del Arduino.
En el área de la electrónica casera y Arduino, se venden múltiples modelos de teclados matriciales
con distintos soportes (rígidos o flexibles) y con diferentes números de teclas, siendo habituales
configuraciones de 3x3, 3x4, y 4x4.

Este tipo de teclado consiste en 3 membranas. Dos membranas contienen material conductor de
electricidad, y en medio de ellas hay una membrana no conductora que sirve para separarlas, la
cual contiene un agujero donde va cada botón. Bajo condiciones normales, el interruptor se
encuentra abierto porque la corriente no puede circular, pero cuando se presiona una tecla, la
membrana de arriba y la de abajo hacen contacto a través del pequeño agujero que hay en la
membrana del medio, permitiendo que la corriente circule y se envíe la información.
DISPOSICION INTERNA DEL TECLADO MATRICIAL 4X4:

FILAS: 1, 2, 3 y 4

COLUMNAS: 5, 6, 7 y 8

CONEXIÓN EN ARDUINO:

CODIGO

El siguiente programa muestra la tecla oprimida por el monitor serie. Se debe instalar la librería
Keypad
//=================================================
#include <Keypad.h>

const byte FILAS = 4; // filas


const byte COLUMNAS = 4; // columnas
char keys[FILAS][COLUMNAS] = { // distribución de las teclas
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte pinesFilas[FILAS] = {9,8,7,6}; // pines para filas


byte pinesColumnas[COLUMNAS] = {5,4,3,2}; // pines para columnas

Keypad teclado = Keypad(makeKeymap(keys), pinesFilas, pinesColumnas,


FILAS, COLUMNAS);
//==================================================
char TECLA;

void setup()
{
Serial.begin(9600);
}

void loop(){
TECLA = teclado.getKey(); // leemos el valor de la tecla

if(TECLA != 0){
Serial.println(TECLA); //muestra el valor por monitor serie
}
}

Pines analógicos también se pueden usar

Para ahorrar el uso de pines, también podemos usar las entradas analógicas como entradas
digitales, de la siguiente manera:

Debemos configurar las entradas analógicas en nuestro código de Arduino


De esta manera tenemos más pines disponibles para poder conectar otros componentes, por
ejemplo un display LCD

EJERCICIOS:

1- Leer una tecla y mostrarla por el Monitor Serie.


2- Leer una tecla y mostrarla por un display LCD.
3- Escribir un numero de seis dígitos con el teclado matricial y visualizarlo en el display LCD,
luego borrar ese número al oprimir una letra (A, B, C, D) del teclado matricial. Utilizar la
función clear()
4- Encender un led usando clave ingresada por teclado matricial. Utilice su propia clave que
sea diferente a la del código de ejemplo.

Código de ejemplo para usar claves

#include <LiquidCrystal.h>

LiquidCrystal lcd = LiquidCrystal(2, 3, 4, 5, 6, 7);


#include <Keypad.h>

const byte FILAS = 4; // filas


const byte COLUMNAS = 4; // columnas
char keys[FILAS][COLUMNAS] = { // distribución de las teclas
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};

byte pinesFilas[FILAS] = {11,10,9,8}; // pines para filas


byte pinesColumnas[COLUMNAS] = {A0,A1,A2,A3}; // pines para
//columnas

Keypad teclado = Keypad(makeKeymap(keys), pinesFilas,


pinesColumnas, FILAS, COLUMNAS);
int contador;
char tecla;
char clave[7];
char miClave[7]="123456";

void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
}

void loop(){
tecla= teclado.getKey(); //lee la tecla y almacena en variable
if(tecla != 0){
Serial.println(tecla); //muestra valor
lcd.print(tecla);
// guardo los valores en el vector clave[]

clave[contador] = tecla;
contador = contador +1 ;

if(contador == 6) //pregunto si ya se ingresaron 6 numeros


{
if(!strcmp(clave, miClave)) {
Serial.println(" Correcta");
lcd.clear();
lcd.print("Correcta");
}
else{
Serial.println(" Incorrecta");
lcd.clear();
lcd.print("Incorrecta");
}
contador = 0;
}

}
}

5- Realizar una alarma que detecte movimiento y encienda un buzzer y que se desactive
solamente cuando ingresemos una clave con el teclado matricial

6- Realizar una cerradura que se acciona con una clave específica, cuando ingresemos una
clave se encienda un relé y cuando ingresemos otra clave se apague el rele.

También podría gustarte