Anda di halaman 1dari 14

UNIVERSIDAD CATOLICA DE SANTA MARIA

FACULTAD DE CIENCIAS E INGENIERIAS FISICAS Y FORMALES

ESCUELA PROFESIONAL DE INGENIERA MECNICA, MECNICA-


ELCTRICA Y MECATRNICA

Teclado Matricial
Integrantes:

- Quilla Cruz Dastin


- Ros Tanco Mara Jos
-

AREQUIPA PERU
2017

I. OBJETIVO
Aprender a manejar un teclado matricial 4x4 a travs de los E/S digitales.
Emplear un teclado y una pantalla LCD con Arduino.
Conocer las ventajas del protocolo I2C.
Manejar correctamente un teclado matricial 4x4 con comunicacin I 2C.

II. MARCO TEORICO:


2.1 TECLADO MATRICIAL

Un teclado es una coleccin de pulsadores, donde cada pulsador tiene asignado un smbolo o una
funcin determinada.

Ya conocemos como leer pulsadores, pero si conectramos cada tecla a un pin digital de nuestro
Arduino, pronto estaramos en apuros por la cantidad de pines que se necesitaran. Por ejemplo
el teclado del computador tiene un promedio de 106 teclas, imaginemos la cantidad de pines
necesarios, por tanto es necesario otra solucin para poder manejarlo.

Esta solucin pasa por disponer los pulsadores en arreglos de filas y columnas, con lo que reducimos
el nmero de pines necesarios.
Para saber que tecla se ha pulsado, bastar con poner tensin en las filas de forma secuencial y luego
leer las columnas para ver cul de ellas tiene HIGH.

Los teclados matriciales usan una combinacin de filas y columnas para conocer el estado de los
pulsadores. Cada tecla es un pulsador conectado a una fila y a una columna. Cuando se pulsa
una de las teclas, se cierra una conexin nica entre una fila y una columna.

Por ejemplo, ponemos HIGH en la primera fila (hilo 8 en el diagrama mostrado) y despus leemos
sucesivamente los hilos correspondientes a las columnas (hilos 4, 3, 2,1). Si ninguno est en
HIGH es que no se ha pulsado ninguna tecla de la primera fila. Pasamos a la segunda fila (hilo 7)
y ponemos HIGH, si al leer los hilos 4, 3, 2,1 encontramos que el hilo 1 est en HIGH, es que se
ha pulsado la tecla correspondiente a la B.

Por tanto, para leer un teclado matricial de 44 necesitamos 8 hilos en lugar de 16.

2.2 COMUNICACIN I2C

En 1980 Philips (Fabricante de productos electrnicos) propuso una norma de comunicacin entre los
diferentes componentes de un sistema electrnico.

As nace I2C como una norma de comunicacin digital entre circuitos integrados (Inter Integrated
Circuits) que especifica la velocidad, niveles de tensin, y el protocolo a seguir para conseguir
esa comunicacin y la hizo abierta. Poco tiempo paso para que esta norma se tomara como un
estndar.

Las especificaciones han ido mejorando con los aos, pero la idea bsica sigue siendo la misma:
Protocolo de dos hilos: uno para transmitir los datos, SDA y otro, el reloj asncrono que
indica cuando leer los datos SCL. Ms GND y 5V (cuando se requiera).
Cada dispositivo conectado al bus I2C tiene su direccin exclusiva, de 7 bits, (Por tanto
podemos conectar 27 = 128, dispositivos).
Uno de los componentes debe actuar como master, es decir controla el reloj.
No se requiere una velocidad de reloj estricta, ya que el master es quien controla el Clock.
Es multi master, lo que significa que el master puede cambiar, pero solo uno puede estar
activo a la vez, y proporciona un protocolo de arbitraje y deteccin de colisiones.

Este bus normalmente se llama I2C, pero tambin se le conoce como IIC, I2C o TWI (Two Wire
Interface, o interface de 2 hilos), pero siempre es lo mismo.
Todos los componentes se conecten en paralelo a las dos lneas del Bus, SDA y SCL. Deben
notar que tambin que hay unas resistencias de Pullup conectadas a SDA y SCL, son necesarias,
ya que el bus es activo bajo (Esto es, la seal activa es un 0, no un 1. Pero tranquilo, que esto no
nos afecta)

Al conectar algn componente al busI2C, es imprescindible que leas el manual para saber si los
pullups los tienes que poner t, o vienen puestos en el componente.

III. MATERIAL Y EQUIPO:

Computador.
Placa Arduino (Uno, Leonardo, Mega, Nano, etc).
Teclado matricial de 4x4.
Pantalla LCD.
Multmetro.
Componentes varios. Software Proteus.

IV. PROCEDIMIENTO

Midiendo la temperatura

1. Conecte el teclado matricial al Arduino como se indica en el diagrama.


2. Verifique la existencia de la librera KeyPad, de lo contrario puede descargarla del
mismo Arduino IDE. (Tambin la puede encontrar en alguna otra direccin).
3. Escriba el siguiente cdigo.

#include <Keypad.h>
const byte Filas = 4; const
byte Cols = 4; byte
Pins_Filas[] = { 9, 8, 7, 6}; byte
Pins_Cols[] = { 5, 4, 3, 2}; char
Teclas [ Filas ][ Cols ] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
Keypad Teclado = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);

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

void loop()
{ char tecla = Teclado.getKey() ;
if (tecla != 0)
Serial.println(tecla); }

Nota. Si utiliza los pines 0 y1 puede ser que no se lea la ltima columna, esto
debido a que se emplean los pines 0 y 1 correspondiente a RXD y TXD, esto
debido a que el programa emplea el monitor serial (comunicacin serial). Puede
cambiar estos pines a otros pines digitales disponibles.
4. Compile y suba el programa al Arduino.
5. Abre el monitor serial,
presione cualquier tecla y observe la salida del monitor serial.

6. Comente cada lnea de programa

Comentario:

En programa podemos observar que hemos definido la cantidad de columnas y filas del teclado, se
ha declarado los pines correspondientes y nombrado cada carcter que le pertenece a dicho
teclado, para la muestra de que este programa funciona y se ha conectado todo correctamente,
utilizamos el monitor serie, para ver las pulsaciones (carcter a mostrar del teclado) cogidas del
teclado.

7. Modifique el programa para que el sistema reciba un cdigo de 1 tecla y si es la clave


correcta deber mostrarlo en el monitor serial. En caso contrario deber tambin indicarlo
con el mensaje correspondiente.
8. Modifique el programa anterior para que la clave ingresada sea de dos dgitos.
4.2 Teclado y LCD.

9. Escriba el siguiente cdigo en el Arduino IDE.

#include <LiquidCrystal.h>
#include <Keypad.h>

const byte filasKeypad = 4; const


byte columnasKeypad = 4;
char keys[filasKeypad][columnasKeypad] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

char Data[16]; byte


data_count = 0;
byte filasPinsKeypad[filasKeypad] = {9, 8, 7, 6};
byte columnasPinsKeypad[columnasKeypad] = {5, 4, 3, 2};
Keypad keypad = Keypad( makeKeymap(keys), filasPinsKeypad, columnasPinsKeypad,
filasKeypad, columnasKeypad );
LiquidCrystal lcd(42, 40, 36, 34, 32, 30);

void setup() {
lcd.begin(16, 2);
lcd.print("Teclea algo...");
}

void loop() {
char key = keypad.getKey();
if(data_count>16){
data_count = 0;
}
if(key){
Data[data_count] = key;
lcd.setCursor(data_count, 1);
lcd.print(Data[data_count]); data_count+
+;
}
}
10. Conecte el LCD y el Teclado segn lo indicado por el programa.
11. Dibuje el circuito esquemtico.

12. Compile, sube el programa e indique que es lo que realiza.


13. Modifique el programa para que el teclado solo se habilite cuando un interruptor lo permita,
caso contrario el programa deber ignorar la pulsacin de tecla alguna.

if(val==HIGH)
#include <LiquidCrystal.h> {
#include <Keypad.h> lcd.setCursor(0, 0);
int pin=51; lcd.print("teclea algo...");
int val=0;
const byte filasKeypad = 4; char key = teclado1.getKey();
const byte columnasKeypad = 4; if(data_count>16){
char keys[filasKeypad][columnasKeypad] = data_count = 0;
{ }
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'}, if(key){
{'7', '8', '9', 'C'}, Data[data_count] = key;
{'*', '0', '#', 'D'} lcd.setCursor(data_count, 1);
}; lcd.print(Data[data_count]);
char Data[16]; data_count++;
byte data_count = 0; }
byte filasPinsKeypad[filasKeypad] = {9, 8, }
7, 6}; if (val==LOW)
byte {
columnasPinsKeypad[columnasKeypad] = lcd.setCursor(0, 0);
{5, 4, 3, 2}; lcd.print("Bloqueado ");
Keypad teclado1 =
Keypad( makeKeymap(keys),
filasPinsKeypad, columnasPinsKeypad, }
filasKeypad, columnasKeypad ); }
LiquidCrystal lcd(42, 40, 36, 34, 32, 30);
void setup() {
V. CUESTIONARIO FINAL
1. Explique el contenido de la librera KeyPad.

La librera KeyPad nos permite definir cosntantes(mediante la funcin const byte) para indicar el
numero de filas o comunas de un keypad, adems tambin nos permite indicar que nmeros de
pines deseamos utilizar del arduino funcin byte Pins_Filas[](llamados array) permiten separar
elementos entre llaves y comas.
Declaramos los imbolos que conteine el teclado y creamos una instancia keypad ( keypad
teclado1= keypad(MakeKeymap (Teclas) ) )
La librera KeyPad, tiene una funcin MakeKeymap (Teclas) es una funcin disponible en la librera
y que nos permite asignar un array de valores a una matriz. Se hace solo una vez al principio salvo
que por lo que sea nos interese cambiarlo sobre la marcha.

2. Explique el contenido de la librera Wire.

Permite comunicar mediante el protocolo I2C (tambin llamado TWI) la placa Arduino con dispositivos
externos.La comunicacin se establece a travs de los pines SDA (lnea de datos, ubicada en pin analgico
4 en la placa Arduino UNO) y SCL (lnea de reloj, ubicada en el pin analgico 5). Esta librera utiliza 7 bits
para identificar el dispositivo (lo que da la posibilidad de distinguir hasta 128 dispositivos diferentes).

3. Se pueden usar entradas analgicas como entradas digitales. De ser cierto indique
cuales seran.

Si se puede usar pines analgicos como pines digitales en este caso seriasn A5 y A4
ya que estn mas aproximados a 5V.

4. Como trabaja una pantalla LCD I2C


5.

Las pantallas LCD que utilizan un sistema de comunicacin con la placa Arduino como los protocolos I2C (el
cual solo utiliza las lneas SDA y SCL),
Tienen incorporan una pequea plaquita en su dorso (llamada backpack) que incluye un pequeo
microcontrolador encargado de realizar la traduccin del protocolo adecuado (I 2C) a las seales estndares
que la pantalla LCD entiende.
Este sistema simplifica la cantidad de conexiones que se realizara de una pantalla lcd a una placa arduino,
la cual no tiene los suficientes pines para realizar otras conexiones

6. Dibuje el esquemtico de cmo podramos comunicar dos Arduinos.

Una manera sencilla de conectar do arduinos en modo comunicacin en serie:

Utilizando los pines:

0 RX , pin por el que se RECIBE los datos serie

1 TX , pin por el que se ENVA los datos serie

Las conexiones TX/RX se intercambian, lo que uno enva -TX- tiene que entrar en el otro RX.

Cualquiera de las 2 puede ser Maestro o Esclavo, es decir en dos direcciones.

*NOTA IMPORTANTE: Conectar ambas GND de las placas.


Conclusiones:

Se puede usar como pines analgicos como digitales, en el caso que el nmero de pines del
arduino se escaso y no alcance la conexin como es en el caso de arduino UNO que a
diferencia del megas tiene pocos pines.

La librera keypad, nos ayuda a poder programacin para un teclado

La librera LiquidCrystal nos permite utilizar una pantalla ldc, sus diferentes funciones nos
ayudan a programar en arduino

Se puede unir dos arduinos mediante comunicacin en serie (maestro, esclavo)

En la comunicacin mediante protocolo I2C, permite uso simplificado de varios objeto a la


vez, simplifica y hace ms sencilla su conexin, as se ahorra espacio en conexiones en los
pines y multiplicidad de conexin entre varios objetos

Anda mungkin juga menyukai