Sunteți pe pagina 1din 6

Lab.

de Microcontroladores y Microprocesadores 2017


(GRUPOS 1,2)

UNIVERSIDAD PARTICULAR CATLICA DE SANTA MARA DE AREQUIPA


ESCUELA PROFESIONAL DE INGENIERA MECANICA, MECANICA ELECTRICA Y
MECATRONICA
CDIGO: GUA DE LABORATORIO NRO
ASIGNATURA: MICROCONTROLADORES Y MICROPROCESADORES

SEGUNDA FASE: RECURSOS INTERNOS DE UN MICROCONTROL. Docente(s):


Ing. Sergio Mestas Ramos.
COMUNICACIN CON TECLADO MATRICIAL
Fecha:

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

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.
Lab. de Microcontroladores y Microprocesadores 2017
(GRUPOS 1,2)

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.
Lab. de Microcontroladores y Microprocesadores 2017
(GRUPOS 1,2)
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.
Lab. de Microcontroladores y Microprocesadores 2017
(GRUPOS 1,2)
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.
Lab. de Microcontroladores y Microprocesadores 2017
(GRUPOS 1,2)
5. Abre el monitor serial, presione cualquier tecla y observe la salida del monitor serial.
6. Comente cada lnea de programa
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] = {8, 9, 10, 11};
byte columnasPinsKeypad[columnasKeypad] = {12, 13, 14, 15};
Keypad keypad = Keypad( makeKeymap(keys), filasPinsKeypad, columnasPinsKeypad,
filasKeypad, columnasKeypad );
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

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.
Lab. de Microcontroladores y Microprocesadores 2017
(GRUPOS 1,2)

V. CUESTIONARIO FINAL
1. Explique el contenido de la librera KeyPad.
2. Explique el contenido de la librera Wire.
3. Se pueden usar entradas analgicas como entradas digitales. De ser cierto
indique cuales seran.
4. Como trabaja una pantalla LCD I2C.
5. Dibuje el esquemtico de cmo podramos comunicar dos Arduinos.

S-ar putea să vă placă și