Вы находитесь на странице: 1из 16

ESCUELA DE INGENIERIA ELECTRONICA

ASIGNATURA: laboratorio de circuitos eléctricos 2.

LABORATORIO: LCD y teclado matricial.

DOCENTE: Ing. Rubén Gil Chacaltana.

ALUMNOS:

 Carbajal Santi André Giovanni.(2017004965)


 Cadillo Ramírez André Gustavo.(2017004109)
 De la cruz Sandoval Marlo Luis.(2017038656)
 Hinojosa Ramírez edie Aarón.(2017013527)
 Agustín Portal Raí Alfredo(2017000406)

CICLO: 4to ciclo.

GRUPO: numero 5.

FECHA: 06/11/2018.
MARCO TEORICO:

Una pantalla de cristal líquido o LCD es una pantalla delgada y plana formada por un
número de píxeles en color o monocromos colocados delante de una fuente de luz o
reflectora. A menudo se utiliza en dispositivos electrónicos de pilas, ya que utiliza
cantidades muy pequeñas de energía eléctrica.

Cada píxel de un LCD típicamente consiste en una capa de moléculas alineadas entre
dos electrodos transparentes, y dos filtros de polarización, los ejes de transmisión de cada
uno que están (en la mayoría de los casos) perpendiculares entre sí. Sin cristal líquido
entre el filtro polarizante, la luz que pasa por el primer filtro sería bloqueada por el
segundo (cruzando) polarizador.

La superficie de los electrodos que están en contacto con los materiales de cristal líquido
es tratada a fin de ajustar las moléculas de cristal líquido en una dirección en particular.
Este tratamiento suele ser normalmente aplicable en una fina capa de polímero que es
unidireccionalmente frotada utilizando, por ejemplo, un paño. La dirección de la alineación
de cristal líquido se define por la dirección de frotación.

PROCEDIMIENTO:

1. Desarrollar un programa que permita controlar una plataforma móvil mediante un


teclado matricial de 3x2, bajo la siguiente configuración
a. El primer botón permitirá avanzar el móvil.
b. El segundo girar a la derecha.
c. El tercero girar a la izquierda.
d. El cuarto retroceder
e. El quinto detener
f. El sexto botón servirá como test de la pantalla LCD.
g. Además se devera visualizar en un LCD de 16x2 el estado de la plataforma
móvil.
Problema 1. Desarrollar un programa que permita controlar una plataforma móvil
mediante un teclado matricial de 3x2

#include <Keypad.h>

#include <LiquidCrystal.h>

const byte ROWS = 2; //four rows

const byte COLS = 3; //four columns

char hexaKeys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'}

};

byte rowPins[ROWS] = {8,9}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {15,14,13}; //connect to the column pinouts of the keypad

// rs, en,d4,d5,d6,d7

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

Keypad teclado = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){

for (int i=16;i<=19;i++){

pinMode(i,OUTPUT);

lcd.begin(16,2);

lcd.clear(); //pantalla off - cursor 0,0

lcd.print("ELIJA UNA ");

lcd.setCursor(0,1);

lcd.print("OPCION");

delay(1200);

lcd.clear();
}

void loop() {

char c;

c = teclado.getKey();

if (c!= NO_KEY)

switch (c)

case '1':

lcd.clear();

lcd.print("AVANZANDO");

digitalWrite(16,LOW);

digitalWrite(17,HIGH);

digitalWrite(18,LOW);

digitalWrite(19,HIGH);

break;

case '2':

lcd.clear();

lcd.print("DERECHA");

digitalWrite(16,LOW);

digitalWrite(17,HIGH);

digitalWrite(18,HIGH);

digitalWrite(19,LOW);

break;

case '3':
lcd.clear();

lcd.print("IZQUIERDA");

digitalWrite(16,HIGH);

digitalWrite(17,LOW);

digitalWrite(18,LOW);

digitalWrite(19,HIGH);

break;

case '4':

lcd.clear();

lcd.print("RETROCESO");

digitalWrite(16,HIGH);

digitalWrite(17,LOW);

digitalWrite(18,HIGH);

digitalWrite(19,LOW);

break;

case '5':

lcd.clear();

lcd.print("DETENER");

digitalWrite(16,LOW);

digitalWrite(17,LOW);

digitalWrite(18,LOW);

digitalWrite(19,LOW);

break;

case '6':

lcd.clear();

lcd.print("COMPROBANDO.......");
delay(1000);

lcd.clear();

lcd.setCursor(0,1);

lcd.print("COMPROBANDO.......");

delay(1000);

lcd.clear();

break;

Problema 2. Desarrollar un sistema domótico que permita controlar el encendido de dos


focos de 220 VAC, y un ventilador DC a través de un teclado matricial, además se deberá
visualizar en un LCD el estado de las cargas.

#include <Keypad.h>

#include <LiquidCrystal.h>

const byte ROWS = 2; //four rows

const byte COLS = 3; //four columns

char hexaKeys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'}

};

byte rowPins[ROWS] = {8,9}; //connect to the row pinouts of the keypad


byte colPins[COLS] = {15,14,13}; //connect to the column pinouts of the keypad

// rs, en,d4,d5,d6,d7

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

Keypad teclado = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){

for (int i=16;i<=19;i++){

pinMode(i,OUTPUT);

lcd.begin(16,2);

lcd.clear(); //pantalla off - cursor 0,0

lcd.print("ELIJA UNA ");

lcd.setCursor(0,1);

lcd.print("OPCION");

delay(1200);

lcd.clear();

void loop() {

char c;

c = teclado.getKey();

if (c!= NO_KEY)

switch (c)

case '1':

lcd.clear();
lcd.print("FOCO 1 PRENDIDO");

digitalWrite(16,HIGH);

break;

case '2':

lcd.clear();

lcd.print("FOCO 2 PRENDIDO");

digitalWrite(17,HIGH);

break;

case '3':

lcd.clear();

lcd.print("VENTILADOR ");

lcd.setCursor(0,1);

lcd.print("PRENDIDO ");

digitalWrite(18,HIGH);

break;

case '4':

lcd.clear();

lcd.print("FOCO 1 APAGADO");

digitalWrite(16,LOW);

break;

case '5':

lcd.clear();

lcd.print("FOCO 2 APAGADO");

digitalWrite(17,LOW);

break;

case '6':
lcd.clear();

lcd.print("VENTILADOR");

lcd.setCursor(0,1);

lcd.print("APAGADO ");

digitalWrite(18,LOW);

break;

}
Problema 3. Desarrollar una chapa electrónica, que permita la apertura de una puerta
solamente a aquellos que ingresen adecuadamente la contraseña.

#include <Keypad.h>

#include <LiquidCrystal.h>

#include <string.h>

const byte ROWS = 4; //four rows

const byte COLS = 3; //four columns

char hexaKeys[ROWS][COLS] = {

{'7','8','9'},

{'4','5','6'},

{'1','2','3'},

{'A','0','B'}

};

byte rowPins[ROWS] = {8,9,10,11}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {15,14,13}; //connect to the column pinouts of the keypad

// rs, en,d4,d5,d6,d7

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

Keypad teclado = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

int pos=0,cur=0;

char clave[6]="123456";

int buzzer=19;

int led=16;

void setup(){

for (int i=16;i<=19;i++){


pinMode(i,OUTPUT);

pinMode(buzzer,OUTPUT);

lcd.begin(16,2);

lcd.clear(); //pantalla off - cursor 0,0

lcd.print("escriba ");

lcd.setCursor(0,1);

lcd.print("clave");

delay(1200);

lcd.clear();

void loop() {

char c;

c = teclado.getKey();

if (c!= NO_KEY)

if(c==clave[pos]){

pos++;

if(cur>5){

pos=0;

cur=0;

lcd.clear();

lcd.print("clave ");

lcd.setCursor(0,1);

lcd.print("incorrecta");
delay(1500);

lcd.clear();

lcd.print("escriba ");

lcd.setCursor(0,1);

lcd.print("denuevo");

delay(1100);

lcd.clear();

lcd.print(c);

cur++;

if(pos==6){

pos=0;

cur=0;

lcd.clear();

digitalWrite(led,HIGH);

lcd.print("clave ");

lcd.setCursor(0,1);

lcd.print("correcta");

delay(1200);

lcd.clear();

digitalWrite(buzzer,HIGH);

delay(200);

digitalWrite(buzzer,LOW);

digitalWrite(buzzer,HIGH);

delay(150);

digitalWrite(buzzer,LOW);
delay(175);

digitalWrite(buzzer,HIGH);

delay(135);

digitalWrite(buzzer,LOW);

if(c=='A'){

lcd.clear();

cur=0;

pos=0;

if(c=='B'){

digitalWrite(led,LOW);

lcd.clear();

cur=0;

Problemas 4. Desarrollar una aplicación domótica que permita controlar mediante un


teclado matricial mostrar la temperatura en el LCD.

#include <Keypad.h>

#include <LiquidCrystal.h>

const byte ROWS = 2; //four rows

const byte COLS = 3; //four columns

char hexaKeys[ROWS][COLS] = {

{'1','2','3'},

{'4','5','6'}
};

byte rowPins[ROWS] = {8,9}; //connect to the row pinouts of the keypad

byte colPins[COLS] = {11,12,13}; //connect to the column pinouts of the keypad

// rs, en,d4,d5,d6,d7

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

Keypad teclado = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

void setup(){

for (int i=16;i<=19;i++)

pinMode(i,OUTPUT);

lcd.begin(16,2);

lcd.print("T= ");

void loop()

char c;

float temperatura;

int T;

T=analogRead (0);

temperatura = (T*500.0)/1023.0;

lcd.setCursor(3,0);

lcd.print(temperatura);

lcd.setCursor(0,1);

lcd.print("OPCION: ");

delay(1200);
c = teclado.getKey();

if (c!= NO_KEY)

switch (c)

case '1':

lcd.setCursor(9,1);

lcd.print("F1 ON ");

digitalWrite(16,HIGH);

break;

case '2':

lcd.setCursor(9,1);

lcd.print("F2 ON ");

digitalWrite(17,HIGH);

break;

case '3':

lcd.setCursor(9,1);

lcd.print("A ON ");

digitalWrite(18,HIGH);

break;

case '4':

lcd.setCursor(9,1);

lcd.print("F1 OFF");

digitalWrite(16,LOW);

break;
case '5':

lcd.setCursor(9,1);

lcd.print("FDCDFDFFDFFRTGGH2
OFF");

digitalWrite(17,LOW);

break;

case '6':

lcd.setCursor(9,1);

lcd.print("A OFF");

digitalWrite(18,LOW);

break;

Observaciones

Aunque se tuvo complicaciones en la parte de la programación, en específico con lo


mostrado en el display, se logró agrupar todas las funciones en el arduino separándolas
por medio de opciones seleccionables en el teclado.

Conclusiones

La plataforma de Arduino y las herramientas de programación (C++ y IDE) permiten el


diseño múltiples aplicaciones, al poder configurar los dispositivos agregados al circuito y
la capacidad de desarrollar funciones sobre estas: como recibir datos por medio de algún
receptor y mostrar su magnitud en un display, manipular la dirección de motores,
almacenar y utilizar datos guardados en la memoria. En base a estas interacciones
podemos desarrollar aplicaciones para fines específicos.

Estas herramientas dan una base práctica para diseños más complejos implicando
improvisaciones en tamaño, costo y velocidad.

Вам также может понравиться