Está en la página 1de 21

ESCUELA PROFESIONAL DE INGENIERÍA Emisión:

EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 1 / 21
PULSADORES Y LCD

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES

LABORATORIO DE: MICROPROCESADOR Y MICROCONTROLADOR

EXPERIENCIA N°: 03

TÍTULO DE LA EXPERIENCIA:

PULSADORES Y LCD

Grupa
Alumno(os): Indiv. Total
l
1.Apaza Quispe, Alexander Benjamin
2.Castro Castro, Christian David
3.Condori Calla Luis Carlos
4.Vargaya Quispe, Gennody Yoel
Grupo: A 
Docente: Mg. HUARCA Jorge
Semestre: 7
Fecha de
   Hora:  
entrega:

LABORATORIO N° 03
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 2 / 21
PULSADORES Y LCD

PULSADORES Y LCD

I.- OBJETIVOS:
- Realizar programas en C para Arduino con pulsadores
- Conceder múltiples funciones a un pulsador

II.- FUNDAMENTO TEÓRICO:


Temas a desarrollar:
2.1. Circuito de conexión de un pulsador
Se trata de un mecanismo simple (los hay muy sofisticados), constituido por un par de contactos eléctricos
que se unen o separan por medios mecánicos. En electricidad, los falsos contactos que se producen al ser
utilizados normalmente, en algunos casos produce una chispa debido a la corriente que atraviesa los
contactos, provocando que quemen en parte y ennegreciendo los contactos eléctricos, lo que a la larga
acaba deteriorando dichos contactos. La chispa se produce siempre al separar los contactos
(desconectar), en ocasiones parece que también salta al conectarlos, eso es debido a los rebotes
mecánicos que se producen al cambiar de estado.
El símbolo del esquema para un pulsador de botón es algo diferente que el mostrado. Prepare un LED rojo
y una resistencia de 10K Ohms, así como el pulsador de botón y construya un montaje del esquema en su
tabla de prototipo cerca del Arduino.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 3 / 21
PULSADORES Y LCD
2.2. Anti-rebote en circuitos digitales
En ocasiones la electrónica que utilizamos es tan rápida que podemos tener problemas con los "rebotes"
que se generan en los pulsadores o interruptores que utilizamos conectados a una entrada digital de
nuestro microprocesador o con los espúreos que se producen cuando utilizamos sistemas multiplexadores
de entrada. En estos casos, la solución es utilizar un circuito de retardo anti-rebote utilizando un circuito
resistencia-condensador.
Un circuito antirrebote es una práctica a tratar con señales analógicas y digitales, estas últimas pueden
provenir de cierre de interruptores, accionamientos de relays y se por sentado o por lo menos, no se
mencionan que, están exentas de los rebotes, y aquí reside un problema e n el diseño de un sistema, no
considerar estos efectos, en el caso de las señales analógicas se pueden presentar problemas de
variaciones bruscas debido a interrupciones en potenciómetros o inducciones electromagnéticas

Un circuito anti rebote elimina la serie de pulsos debida al rebote del contacto y produce una
sola transición uniforme de la señal binaria, de 0 a 1 o de 1 a 0. 

III.- RECOMENDACIONES EN SEGURIDAD


3.1. En condiciones de una emergencia Identifique:
 Vías de acceso y evacuación
 Equipos de respuesta a emergencias
 Señalización de seguridad

3.2. Complete el ATS (Anexo 1) y cumpla las condiciones obligatorias para el uso del
ambiente
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 4 / 21
PULSADORES Y LCD
IV.- EQUIPOS Y MATERIALES A UTILIZAR:
Cantidad Descripción
1 Arduino
1 Ordenador de mesa
1 Tarjeta de control Lucas Nulle
1 Multímetro
1 Placa de pruebas
1 LCD
3 Pulsadores
1 Juego de cables

V.- PROCEDIMIENTO:
Conexión LCD y Arduino
5.1. Realizar la conexión de Arduino y el LCD con ayuda de una placa de pruebas
considerando el modo de 4 bits de datos. Además, conecte tres botones pulsadores.
Para este laboratorio puede utilizar la librería #include <LiquidCrystal.h>
Adjunte imagen del circuito montado, así como el diagrama de conexiones (esquemático).

Figura 5.1.1. Esquemático


ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 5 / 21
PULSADORES Y LCD

Figura 5.1.2. Circuito montado


5.2. Realizar una aplicación para que el Arduino pueda inicializar correctamente el LCD en
modo 4 bits de datos. En la primera Fila mostrar el mensaje Hora-NombreDeUnIntegrante y
en la segunda fila mostrar la hora que empieza el laboratorio, por ejemplo, 12h:20m:00s.
Procurar que los mensajes estén centrados.
Adjunte el código de la aplicación, así como la imagen del circuito mostrando el mensaje.
#include <LiquidCrystal.h> // Libreria para que funcione el LCD
LiquidCrystal lcd(0, 2,4,5,6,7);
void setup() {
lcd.begin(16, 2); //Declaramos el LCD Columnas x Filas
lcd.setCursor(2, 0); //Colocamos el lugar donde se imprime el texto
lcd.print("Hora-Gennody"); // Instrucción importante que imprime el texto en el LCD
}
void loop() {
lcd.setCursor(3, 1); //Colocamos el lugar donde se imprime el texto
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 6 / 21
PULSADORES Y LCD
lcd.print("2h:00m:01s"); // Instrucción importante que imprime el texto en el LCD
}
Código 5.2. código de la función

Imagen 5.2.1. circuito montado con el mensaje


5.3. Modificar la aplicación de tal manera la hora este incrementándose cada segundo,
además, configurar los botones como entrada con pull-up, un botón estará ligado a las horas,
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 7 / 21
PULSADORES Y LCD
el otro a los minutos y el tercero a los segundos. Cada vez que se pulse un botón cambiara el
cursor a modo intermitente y en su posición respectiva (a revisar).
#include <LiquidCrystal.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(0, 2, 4, 5, 6, 7);
//Declaramos las variables
int pulsador1=8; //pulsador para horas
int pulsador2=9; //pulsador para minutos
int pulsador3=10; //pulsador para segundos
int hora=4;
int minuto=0;
int segundo=0;
int decenahora=1;
int decenaminuto=0;
int decenasegundo=0;
void setup (){
//Congiguracion de los puertos
pinMode(pulsador1,INPUT);
pinMode(pulsador2,INPUT);
pinMode(pulsador3,INPUT);
//Declaramos el LCD Columnas x Filas
lcd.begin(16, 2);
}
void loop(){
//Funciones, asigna la funcion a realizar
incremento ();
delay(1000);
decenas();
green();
pulsadores();
}
//Primera funcion
void incremento() {
if ( segundo < 10) {
segundo++; //Aumenta los segundos
}
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 8 / 21
PULSADORES Y LCD
}
//Segunda funcion
void decenas() {
if ( segundo == 10 ) {
segundo =0;
decenasegundo++; // Aumenta las decenas de los segundos
}
if ( ( decenasegundo == 6 ) && ( segundo == 0 ) ) {
decenasegundo =0;
minuto++; //Aumenta los minutos si para los 60 segundos
}
if ( minuto == 10 ) {
minuto =0;
decenaminuto++; //Aumenta las decenas de los minutos
}
if ( ( decenaminuto == 6 ) && ( minuto == 0 ) ) {
decenaminuto =0;
hora++; //Aumenta la hora si pasa los 60 segundos
}
if ( hora == 10 ) {
hora =0;
decenahora++; //Aumenta la decena de las horas
}
if ( (decenahora == 2) && (hora == 4) ) {
hora =0;
decenahora =0; //Si pasa las 24 horas regresa a 0
}
}
//Tercera funcion
void green() {
lcd.setCursor(2,0);
lcd.print("Hora-Gennody"); //Imprime Hora-Gennody en la primera fila
lcd.setCursor(3, 1); //Imprime las horas, minutos, segundos en la segunda fila
lcd.print(decenahora);
lcd.print(hora);
lcd.print("h");
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 9 / 21
PULSADORES Y LCD
lcd.print(":");
lcd.print(decenaminuto);
lcd.print(minuto);
lcd.print("m");
lcd.print(":");
lcd.print(decenasegundo);
lcd.print(segundo);
lcd.print("s");
}
//Cuarta funcion
//Existe un delay de 1 segundo para poder aumentar un valor
void pulsadores() {
if(digitalRead(pulsador1)==LOW){
hora++; //Si presionas el pulsador aumenta la hora en 1
lcd.setCursor(4,1);
lcd.blink();
delay(1000);
lcd.noBlink();
}
if(digitalRead(pulsador2)==LOW){
minuto++; //Si presionas el pulsador aumenta el minuto en 1
lcd.setCursor(8,1);
lcd.blink();
delay(1000);
lcd.noBlink();
}
if(digitalRead(pulsador3)==LOW){
segundo++; //Si presionas el pulsador aumenta el segundo en 1
lcd.setCursor(12,1);
lcd.blink();
delay(1000);
lcd.noBlink();
}
}
Código 5.3. cursor intermitente
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 10 / 21
PULSADORES Y LCD
Reloj Digital: Cambio de Hora – Funcionamiento

 Para entrar al modo de configuración de la hora, minuto o segundo se debe pulsar su


botón respectivo por más dos segundos. Para guardar el valor modificado, de la misma
manera que para entrar al modo configuración, se debe mantener su pulsado su botón por
más de dos segundos.

 Para el cambio de valores se realizará por medio de los otros dos botones, uno para
incrementar y el otro su antagónico.
Por ejemplo, si se desea modificar los minutos, primero mantener pulsado el botón ligado a
los minutos por más de dos segundos, segundo modificar el valor incrementando con el
botón ligado a las horas o bajando con el botón ligado a los segundos, tercero mantener
pulsado el botón ligado a los minutos por más de dos segundos.
5.4. Realizar una aplicación para que el Arduino pueda realizar la modificación de la hora.
Considerar una protección por anti-rebote mediante software. (a revisar)
#include <LiquidCrystal.h>

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


//Declaramos las variables
int pulsador1=8; //pulsador para horas
int pulsador2=9; //pulsador para minutos
int pulsador3=10; //pulsador para segundos
int hora=2;
int minuto=0;
int segundo=0;
int decenahora=1;
int decenaminuto=0;
int decenasegundo=0;

void setup (){


//Congiguracion de los puertos
pinMode(pulsador1,INPUT);
pinMode(pulsador2,INPUT);
pinMode(pulsador3,INPUT);
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 11 / 21
PULSADORES Y LCD
//Declaramos el LCD Columnas x Filas
lcd.begin(16, 2);
}

void loop(){
//Funciones, asigna la funcion a realizar
incremento ();
delay(1000);
decenas();
green();
pulsadores1();
pulsadores2();
pulsadores3();
lcd.noBlink();
}
//Primera funcion
void incremento() {
if ( segundo < 10) {
segundo++; //Aumenta los segundos
}
}
//Segunda funcion
void decenas() {
if ( segundo == 10 ) {
segundo =0;
decenasegundo++; // Aumenta las decenas de los segundos
}
if ( ( decenasegundo == 6 ) && ( segundo == 0 ) ) {
decenasegundo =0;
minuto++; //Aumenta los minutos si para los 60 segundos
}
if ( minuto == 10 ) {
minuto =0;
decenaminuto++; //Aumenta las decenas de los minutos
}
if ( ( decenaminuto == 6 ) && ( minuto == 0 ) ) {
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 12 / 21
PULSADORES Y LCD
decenaminuto =0;
hora++; //Aumenta la hora si pasa los 60 segundos
}
if ( hora == 10 ) {
hora =0;
decenahora++; //Aumenta la decena de las horas
}
if ( (decenahora == 2) && (hora == 4) ) {
hora =0;
decenahora =0; //Si pasa las 24 horas regresa a 0
}
}
//Tercera funcion
void green() {
lcd.setCursor(2,0);
lcd.print("Hora-Gennody"); //Imprime Hora-Gennody en la primera fila
lcd.setCursor(3, 1); //Imprime las horas, minutos, segundos en la segunda fila
lcd.print(decenahora);
lcd.print(hora);
lcd.print("h");
lcd.print(":");
lcd.print(decenaminuto);
lcd.print(minuto);
lcd.print("m");
lcd.print(":");
lcd.print(decenasegundo);
lcd.print(segundo);
lcd.print("s");
}
//Cuarta funcion
//Existe un delay de 1 segundo para poder aumentar un valor
void pulsadores1() {

if((digitalRead(pulsador1)==LOW) && (digitalRead(pulsador2)==HIGH) &&


(digitalRead(pulsador3)==HIGH)){
hora++;
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 13 / 21
PULSADORES Y LCD
lcd.setCursor(4,1);
lcd.blink();
}
else if((digitalRead(pulsador1)==LOW) && (digitalRead(pulsador2)==LOW) &&
(digitalRead(pulsador3)==HIGH)){
hora--; //Decrece Horas
if ((decenahora == 0) && (hora == -1)) {
decenahora =2;
hora =3;
}
if ((decenahora == 1) && (hora == -1)) {
decenahora =0;
hora =9;
}
if ((decenahora == 2) && (hora == -1)) {
decenahora =1;
hora =9;
}
}
}
void pulsadores2() {
if((digitalRead(pulsador1)==HIGH) && (digitalRead(pulsador2)==LOW) &&
(digitalRead(pulsador3)==HIGH)){
minuto++;
lcd.setCursor(4,1);
lcd.blink();
}
else if((digitalRead(pulsador1)==HIGH) && (digitalRead(pulsador2)==LOW) &&
(digitalRead(pulsador3)==LOW)){
minuto--; //Decrece Minutos
if ((decenaminuto == 0) && (minuto == -1)) {
decenaminuto =5;
minuto =9;
}
if ((decenaminuto == 1) && (minuto == -1)) {
decenaminuto =0;
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 14 / 21
PULSADORES Y LCD
minuto =9;
}
if ((decenaminuto == 2) && (minuto == -1)) {
decenaminuto =1;
minuto =9;
}
if ((decenaminuto == 3) && (minuto == -1)) {
decenaminuto =2;
minuto =9;
}
if ((decenaminuto == 4) && (minuto == -1)) {
decenaminuto =3;
minuto =9;
}
if ((decenaminuto == 5) && (minuto == -1)) {
decenaminuto =4;
minuto =9;
}
}
}
void pulsadores3() {

if((digitalRead(pulsador1)==HIGH) && (digitalRead(pulsador2)==HIGH) &&


(digitalRead(pulsador3)==LOW)){
segundo++;
lcd.setCursor(4,1);
lcd.blink();
}
else if((digitalRead(pulsador1)==LOW) && (digitalRead(pulsador2)==HIGH) &&
(digitalRead(pulsador3)==LOW)){
segundo--; //Decrece Segundos
if ((decenasegundo == 0) && (segundo == -1)) {
decenasegundo =5;
segundo =9;
}
if ((decenasegundo == 1) && (segundo == -1)) {
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 15 / 21
PULSADORES Y LCD
decenasegundo =0;
segundo =9;
}
if ((decenasegundo == 2) && (segundo == -1)) {
decenasegundo =1;
segundo =9;
}
if ((decenasegundo == 3) && (segundo == -1)) {
decenasegundo =2;
segundo =9;
}
if ((decenasegundo == 4) && (segundo == -1)) {
decenasegundo =3;
segundo =9;
}
if ((decenasegundo == 5) && (segundo == -1)) {
decenasegundo =4;
segundo =9;
}
}
}
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 16 / 21
PULSADORES Y LCD

Código 5.4. Aplicación de funcionamiento

VI.- CUESTIONARIO:
6.1.- Cuestionario pulsadores:

6.1.1.- Al momento de aumentar o reducir el valor ¿Cómo podría realizar esta variación más
rápida?
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 17 / 21
PULSADORES Y LCD
Reduciendo el valor del delay, lo haría al instante, como existe un delay de un segundo en la
función del incremento de los segundos, el delay demora al pulsador, lo que genera un
retraso.

VII.- OBSERVACIONES Y CONCLUSIONES:

- Dar sus observaciones y conclusiones de forma personal, en forma clara y empleando el


menor número de palabras.

Observaciones
 Implementamos un reloj con decimales, lo que permite mejorar el tema de
visualización, pero programarlo fue una tarea complicada en el tema de retroceso.
 Se pudo implementar un pulsador más para mejorar el tema de retroceso de las horas y
lo minutos.
 El delay del segundo genera un delay en los pulsadores.
 El reloj no está centrado por el hecho que de que es impar y el LCD es de 16x2.

Conclusiones (dos por integrante).


 Gracias al retardo generado por el delay logramos visualizar que no existe rebote.

 Se pudo Realizar programas en C para Arduino con pulsadores, usando pullups y la


librería LiquidCrystal
 Se pudo concluir que los pullups son resistencias establecen un estado lógico en un
pin o entrada de un circuito lógico cuando se encuentra en estado reposo
 Utilizamos la capacidad máxima de los pulsadores en el retroceso, ya que generamos
el código en decimales.
 El arduino tiene una función de anti rebote, pero si cambiamos la configuración de la
misma, se tendría que implementar una función anti rebote.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 18 / 21
PULSADORES Y LCD
 Con la librería, se nos hizo más fácil la programación teniendo en cuenta los 4 bits y
el sistema anti rebote, pero en programación fue muy complicado.
 Solo se necesita el incremento de los segundos para poder en marcha el reloj digital en
el LCD, claro con un correcto funcionamiento de los minutos y horas.
 Los pulsadores tiene una resistencia la cual proporciona un efecto anti rebote, como el
mismo pulsador, esto se ve más en un nivel físico, porque la simulación lo hace más
fácil.
 El retroceso de los segundos del código fue más complicado que el mismo aumento de
los mismos.
VIII.- BIBLIOGRAFIA:
[1] FLOYD, THOMAS L. Fundamentos de Electrónica Digital. Sétima edición. Limusa. México. 2007
[2] RONALD J. TOCCI. Sistemas Digitales. Ed. Prentice–Hall. (1995)
[3] WAKERLY, JOHN F. Diseño Digital. Principios y Prácticas. Tercera Edición. Pearson Educación.
México. 2001
[4] Evans, Brian W., (2007) Arduino Programming

Rubrica: Laboratorio 3
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03: 19 / 21
PULSADORES Y LCD
Puntualidad

Porcentaje %
Fundamento teórico

Observaciones Conclusiones

Preguntas individual

Total
Desarrollo de experiencias

Bibliografía
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5. 5.10
9
1 1 2 2 2 4 - - - - - - 1.5 0.5 6 20 15

Mg. HUARCA Jorge


Docente DAIE
Anexo 1 Fecha 16/12/201
ATS: Análisis de trabajo seguro 9
Versión V1/03/20
Código ATS20V1
Curso: Tarea: Docente:
Ambiente: Grupo: Mesa: Fecha:
Integrantes (Apellidos y nombres) Firma Integrantes (Apellidos y nombres) Firma
1. 2.

3. 4.
Elementos de protección (Marque con aspa) Características de elementos de protección, equipos y herramientas

1. ____________________________________________________________
USO OBLIGATORIO
DEL CASCO DE
USO OBLIGATORIO
DE BOTAS AISLANTES
USO OBLIGATORIO
DE GUANTES
USO OBLIGATORIO
DE PROTECCIÓN
USO OBLIGATORIO
DE MASCARILLA
USO
OBLIGATORIO DE
2. ____________________________________________________________
SEGURIDAD AISLANTES OCULAR PROTECTOR
FACIAL
3. ____________________________________________________________
4. ____________________________________________________________
USO OBLIGATORIO APAGAR USO OBLIGATORIO OBLIGATORIO USO OBLIGATORIO OTRO
5. ____________________________________________________________
DE PROTECCIÓN DESCONECTAR DE PROTECTOR CONECTAR A DE TRAJE DE
AUDITIVA CUANDO NO SE USE AJUSTABLE TIERRA SEGURIDAD

Acciones a realizar Otros riesgos en las acciones


(marque con aspa las advertencias por cada a realizar, considerar
acción) medidas de control
1.
2. 1._________________________
3. ___________________________
4.
5. 2._________________________
6. ___________________________
3. _________________________

También podría gustarte