Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
1 / 17
PULSADORES Y LCD
EXPERIENCIA N°: 03
TÍTULO DE LA EXPERIENCIA:
PULSADORES Y LCD
Grupo: 2
Docente: Mg. HUARCA Jorge
Semestre: 7
Fecha de
24/10/2020 Hora:
entrega:
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
2 / 17
PULSADORES Y LCD
LABORATORIO N° 03
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
Un pulsador es un tipo de interruptor eléctrico, que consta de dos contactos metálicos
separados que cuando se unen al ser presionado el botón, permiten el paso de corriente.
PULL-UP: significa que polariza el voltaje hacia el voltaje de fuente (VDD) que puede
ser +5V o +3.3V. De esta forma cuando el pulsador está abierto o en reposo, el voltaje
en la entrada del Arduino siempre será de +5V. Cuando el pulsador es presionado, la
corriente circula por la resistencia y luego por el pulsador, de esta forma tenemos que
el voltaje en la entrada del Arduino es Tierra o 0V. Entonces en la configuración pull-
up cuando el pulsador está en reposo el Arduino lee 1 y cuando presionamos leerá 0.
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
3 / 17
PULSADORES Y LCD
PULL-DOWN: cuando presionamos el pulsador la corriente fluye de +5V por el
pulsador hacia la resistencia y termina en 0V, de esa forma tenemos +5V en la entrada
del Arduino. Entonces en la configuración pull-down cuando el pulsador está en reposo
el Arduino lee 0 y cuando presionamos leerá 1.
2.2. Anti-rebote en circuitos digitales
Un circuito anti-rebote es una práctica a tratar con señales analógicas y digitales, estas
últimas pueden provenir de cierre de interruptores, accionamientos de relays. 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. En los elementos de contacto en
general (pulsadores, accionamientos de relés, etc.), al ser elementos de acción mecánica, los
cambios de nivel lógico se producen con lo que se denomina los rebotes. Estos impulsos
transitorios, de corta duración, que se producen en el accionamiento del contacto.
En muchas aplicaciones esto no supone ningún problema, pero en otras sí. En los circuitos de
contaje, por ejemplo, la aparición de rebotes en los impulsos de entrada debe evitarse porque,
si no, esto también es contado.
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
IV.- EQUIPOS Y MATERIALES A UTILIZAR:
Cantidad Descripción
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
4 / 17
PULSADORES Y LCD
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).
LCD1
IO0 PD0/RXD/PCINT16 PB0/ICP1/CLKO/PCINT0 IO8 LM016L
IO1 PD1/TXD/PCINT17 PB1/OC1A/PCINT1 IO9
IO2 PD2/INT0/PCINT18 PB2/SS/OC1B/PCINT2 IO10
IO3 PD3/INT1/OC2B/PCINT19 PB3/MOSI/OC2A/PCINT3 IO11
IO4 PD4/T0/XCK/PCINT20 PB4/MISO/PCINT4 IO12
IO5 PD5/T1/OC0B/PCINT21 PB5/SCK/PCINT5 IO13
IO6 PD6/AIN0/OC0A/PCINT22 PB6/TOSC1/XTAL1/PCINT6
IO7 PD7/AIN1/PCINT23 PB7/TOSC2/XTAL2/PCINT7
RV1
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
4
5
6
7
8
9
10
11
12
13
14
50%
PC3/ADC3/PCINT11 AD3
PC4/ADC4/SDA/PCINT12 AD4
PC5/ADC5/SCL/PCINT13 AD5
PC6/RESET/PCINT14 RESET
1k
ARDUINO UNO
+5V
IO10
IO9
IO8
IO5
IO4
IO3
IO2
IO14 AD0
IO15 AD1 RESET
IO16 AD2
IO17 AD3 IO13
IO18 AD4
IO19 AD5 LED & Reset
SDA
SCL Arduino 328
PULSADOR
void setup(){
lcd.begin(16, 2); // Inicia el LCD 16x02 (columnas, filas)
lcd.setCursor(1, 0); // Coloca el cursor en las coordenadas (1,0)
lcd.print("Hora-Luis Angel");// Escribe el LCD
lcd.setCursor(2, 1); // Coloca el cursor en las coordenadas (2,1)
lcd.print("17h:40m:00s"); // Escribe el LCD
}
void loop(){
InitLCD_4D();
}
void InitLCD_4D(){
lcd.noCursor(); //Apaga el cursor
delay(500);
lcd.cursor(); //Enciende el cursor
delay(500);
}
Código 5.2. código de la función
5.3. Modificar la aplicación de tal manera que 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,
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).
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
6 / 17
PULSADORES Y LCD
#include <LiquidCrystal.h>
int RS = 5, E = 6, D4 = 1, D5 = 2, D6 = 3, D7=4;
LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
String real_time;
String point = String (":");
String zero = String("0");
int hour, minut, second;
int button1, button2, button3;
int timeinit = 0;
void setup () {
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(10, INPUT);
pinMode(11, INPUT);
pinMode(12, INPUT);
lcd.begin(2, 16);
// Configura hora inicial
hour = 17; // Horas
minut = 40; // Minutos
second = 00; // Segundos
real_time = String ();
centrar(16, 2, 1, "Hora-Rogelio");
}
void loop() {
time();
button1 = digitalRead(10);
button2 = digitalRead(11);
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
7 / 17
PULSADORES Y LCD
button3 = digitalRead(12);
if (button1 == LOW){
lcd.blink();
}
else if (button2 == LOW){
lcd.blink();
}
else if (button3 == LOW){
lcd.blink();
}
else {
lcd.noBlink();
}
}
if (hour < 10 && minut < 10 && second < 10){ // 01:01:01
real_time =zero + hour + point + zero + minut + point + zero + second;
}
else if(hour < 10 && minut < 10 && second >= 10){ // 01:01:10
real_time =zero + hour + point + zero + minut + point + second;
}
else if (hour < 10 && minut >= 10 && second < 10){ // 01:10:01
real_time =zero + hour + point + minut + point + zero + second;
}
else if(hour < 10 && minut >= 10 && second >= 10){ // 01:10:10
real_time =zero + hour + point + minut + point + second;
}
else if (hour >= 10 && minut < 10 && second < 10){ // 10:01:01
real_time = hour + point + zero + minut + point + zero + second;
}
ESCUELA PROFESIONAL DE INGENIERÍA Emisión:
EN TELECOMUNICACIONES 20/03/2020
LABORATORIO LIFE
Página
EXPERIENCIA 03:
9 / 17
PULSADORES Y LCD
else if (hour >= 10 && minut < 10 && second >= 10){ // 10:01:10
real_time = hour + point + zero + minut + point + second;
}
else if (hour >= 10 && minut >= 10 && second < 10){ // 10:10:01
real_time = hour + point + minut + point + zero + second;
}
else if (hour >= 10 && minut >= 10 && second >= 10){ // 10:10:10
real_time = hour + point + minut + point + second;
}
delay(1000);
centrar (16, 2, 2, real_time);
}
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> //Libreria que nos permitira utilizar el LCD
int Tiempo2;
int Tiempo1;
void setup()
{
pinMode(PulsadordecambioHoras,INPUT);// establece pin 7 como entrada
pinMode(PulsadordecambioMinutos,INPUT);// establece pin 8 como entrada
pinMode(PulsadordecambioSegundos,INPUT);// establece pin 9 como entrada
Lcd.begin(16,2);//Inicializamos el LCD
}
void loop()
{
uni_seg();
Contador();
Escribe_lahora();
Cambiar_hora();
}
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?
La resistencia de pull up o pull down es causante de que algunas veces la lectura del cambio
de voltaje en el pin de Arduino sea muy lenta, mientras mayor sea su valor tomará más tiempo
leer ese cambio de voltaje, por lo tanto, se podría colocar una resistencia con el menor valor
posible.
Además, en el código se puso un retardo de 250 ms como protección anti-rebote, podríamos
reducir este valor a un punto donde aún nos sirva como protección y además podría realizar
una variación más rápida al presionar el pulsador. Además, se observó que, si se presiona el
pulsador sin soltarlo, la variación se da con una rapidez considerable.
https://naylampmechatronics.com/blog/39_Resistencias-Pull-Up-y-Pull-Down.html
https://www.arduino.cc/en/Tutorial/LiquidCrystalCursor
https://www.arduino.cc/en/Tutorial/LiquidCrystalBlink
https://forum.arduino.cc/index.php?topic=208262.0
https://www.arduino.cc/en/Tutorial/StringAdditionOperator
https://www.arduino.cc/en/Reference/LiquidCrystalClear
https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/length
https://www.arduino.cc/en/Reference/LiquidCrystalScrollDisplayLeft
https://www.arduino.cc/en/Reference/LiquidCrystal https://www.luisllamas.es/leer-un-
pulsador-con-arduino/ https://www.arduino.cc/en/Tutorial/LiquidCrystalSetCursor
https://programarfacil.com/blog/arduino-blog/resistencia-pull-up-y-pull-down/
https://www.diarioelectronicohoy.com/blog/pulsadores-sin-rebotes
Rubrica: Laboratorio 3
Desarrollo de experiencias
Observaciones
Conclusiones
Porcentaje %
Fundamento
Bibliografía
Puntualidad
individual
Preguntas
teórico
Total
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10
1 1 2 2 2 4 - - - - - - 1.5 0.5 6 20 15
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
USO
OBLIGATORIO DE
2. ____________________________________________________________
SEGURIDAD AISLANTES OCULAR MASCARILLA PROTECTOR
FACIAL
3. ____________________________________________________________
4. ____________________________________________________________