Está en la página 1de 7

Laboratorio III:

Manejo del bloque LCD y timer


Angel Stivenn Quiroga Moreno, cód. 20181007072
a​squirogam@correo.udistrital.edu.co
Paula Andrea Franco Hidalgo, cód. 20171007106
pafrancoh@correo.udistrital.edu.co.
Juan Camilo Pulido Vicaíno, cód. 20181007096
jcpulidov@correo.udistrital.edu.co.

Universidad Distrital Francisco José de Caldas


Bogotá D.C, 2020

​I. INTRODUCCIÓN por algún circuito oscilador, con una base de


A Partir de los GPIO se pretende generar un tiempo estable y conocida. El tiempo es
temporizador de cuatro canales, los cuales estarán determinado por una actividad o proceso que se
programados con valores preestablecidos; por medio de necesite controlar.
interrupciones generadas por el código, se puede tener la Se diferencía del relé, en que los contactos del
visualización simultánea de los tiempos generados por temporizador no cambian de posición
los cuatro temporizadores. instantáneamente. Podemos clasificar los
temporizadores en:
II. OBJETIVOS
De conexión: el temporizador recibe tensión y
● GENERAL:​Diseñar un temporizador digital mide un tiempo hasta que libera los contactos
programable de cuatro canales independientes.
De desconexión: cuando el temporizador deja de
● ESPECÍFICOS: recibir tensión al cabo de un tiempo, libera los
1) Diseñar un código que permite contactos
temporizar totalmente independientes.
2) implementar la temporización en cuatro Hay diversos tipos de ​temporizadores desde los
canales independientes. que son usados en el hogar para cocinar, hasta
3) diseñar un código que permita controlar los que son usados en la automatización de
el temporizador de los cuatro canales procesos industriales, tienen diferentes clases de
por medio de un teclado componentes que tienen como fin la misma
4) visualizar simultáneamente los tiempos función, pero cada uno sirve para algún proceso
generados por los cuatro temporizadores en específico.

Sin embargo, para este laboratorio, tomaremos


​III. MARCO TEÓRICO el temporizador como un sistema que permite
controlar el tiempo de funcionamiento de una
● TEMPORIZADOR:Un ​temporizador es un función específica.[1]
aparato con el que podemos regular la conexión
o desconexión de un circuito eléctrico después
de que se ha programado un tiempo. El
elemento fundamental del temporizador es un
contador binario, encargado de medir los pulsos
suministrados
denomina ​IRQ​.Las IRQ son líneas que llegan al
controlador de interrupciones, un componente
de hardware dedicado a la gestión de las
interrupciones, y que está integrado en la MCU.
Tipos de Interrupciones​:

● Interrupciones HW o externas: Estas son


asíncronas a la ejecución del procesador, es
decir, se pueden producir en cualquier momento
Figura 1. Temporizador independientemente de lo que esté haciendo el
CPU en ese momento. Las causas que las
producen son externas al procesador y a menudo
● LCD: Una pantalla LCD (liquid crystal display:
suelen estar ligadas con los distintos dispositivos
‘pantalla de cristal líquido’ por sus siglas en de entrada o salida.
inglés​) es una pantalla delgada y plana formada ● Interrupciones SW: Las interrupciones por
por un número de píxeles en color o software son aquellas generadas por un
monocromos colocados delante de una fuente de programa en ejecución. Para generarlas, existen
luz o reflectora. A menudo se utiliza en distintas instrucciones en el código máquina que
dispositivos electrónicos de pilas, ya que utiliza permiten al programador producir una
interrupción. Arduino no soporta las
cantidades muy pequeñas de energía eléctrica. interrupciones por software
● Un evento programado o Timer. ​Son las
Está presente en un sinnúmero de aparatos,
interrupciones asociadas a los timers y gracias a
desde la limitada imagen que muestra una ellas funciona millis().
calculadora de bolsillo hasta televisores de 50 o ● Excepciones: Son aquellas que se producen de
más pulgadas. Estas pantallas se componen de forma síncrona a la ejecución del procesador
miles de pequeños cristales líquidos, que no son típicamente causada por una condición de error
sólidos ni ​líquidos en realidad, sino un estado en un programa. Normalmente son causadas al
intermedio.[2] realizarse operaciones no permitidas tales como
la división entre 0, el desbordamiento, el acceso
a una posición de memoria no permitida, etc.[3)

Figura 2. LCD
● MÓDULO DE INTERRUPCIONES: Una
interrupción es una suspensión temporal de la
ejecución de un proceso, para pasar a ejecutar
una subrutina de servicio de interrupción, la
cual, por lo general, no forma parte del ​Figura 3. Interruptor
programa. Una vez finalizada dicha subrutina, se ● TECLADO: ​En ​informática​, un teclado es un
reanuda la ejecución del programa. Las dispositivo o ​periférico de entrada​, en parte
interrupciones HW son generadas por los inspirado en el teclado de las ​máquinas de
dispositivos periféricos habilitando una señal del escribir​, que utiliza un sistema de botones o
CPU (llamada IRQ del inglés “interrupt teclas, para que actúen como ​palancas
request”) para solicitar atención del mecánicas o interruptores electrónicos que
mismo.Todos los dispositivos que deseen envían toda la información a la ​computadora o
comunicarse con el procesador por medio de al ​teléfono móvil​.[4]
interrupciones deben tener asignada una línea
única capaz de avisar al CPU cuando le requiere
para realizar una operación. Esta línea se
parámetros correspondientes para cada
temporizador, escogidos previamente por el
usuario.
● Finalmente, cuando ya finalizaron los cuatro
temporizadores se sale del While anterior y se
manda una señal de salida para la alarma por
medio de la función tone(). Dura 1 segundo
(delay(1000)) y se apaga.
● Se muestra el mensaje “Terminaron todos”.

● ​Figura 4. Teclado V. ANÁLISIS
A partir de la funciones propias de la biblioteca
IV. PROCEDIMIENTO Timerone se pueden generar interrupciones por medio de
Asignación de pines: software, que permiten poner pautas en la codificación,
● Se usan dos pines analogicos y 4 digitales para estas funciones son muy útiles si se encuentran
el LCD. vinculadas con algún dispositivo que permita la
● Se usa un pin analogico de salida para activar la codificación, que en nuestro caso es el teclado, el cual
alarma. nos permite remitirnos a una función en específica
● Se usan 8 pines digitales para las filas y oprimiendo alguna tecla previamente codificada para un
columnas del Keypad. fin. De esta forma se simplifican procesos pues es el fin
Keypad: de la codificación, Además podremos Observarlo por
● Se construye la configuración del Keypad por medio de un dispositivo LCD que también nos permite
medio de la matriz 4x4. imprimir lo que se desee en la posición que se quiera,
● Se asignan 10 posibles temporizaciones por permitiendo mostrar simultáneamente los resultados de
medio de los números del 0 al 9 en el Keypad. varias funciones.
Elección de temporización:
● El usuario oprime la tecla correspondiente al VI. CONCLUSIONES
tiempo de inicio que desea (en el Keypad). ● Los teclados son utilizados como una
● Por medio de un switch case se asigna el valor herramienta de codificación.
de inicio de temporización (10 opciones) para ● Los LCD son dispositivos que permiten
cada uno de los cuatro temporizadores. imprimir resultados en la posición deseada.
● Se repite el anterior procedimiento cuatro veces. ● Los LCD permiten visualizar varios resultados
● Se asigna una variable que registre los cuatro de diferentes funciones simultáneamente.
temporizadores, esto va dentro del switch case ● Los temporizadores controlan el tiempo en el
sumando de a uno (z++). que se ejecuta una función.
Contador:
● Se hace uso de la función millis() para comparar VII. REFERENCIAS
el tiempo transcurrido desde que inició el [1]​https://www.ingmecafenix.com/electricidad-i
programa hasta que se terminaron de seleccionar ndustrial/temporizador-tipos-temporizador/
los tiempos de los 4 temporizadores. [2]​https://www.definicionabc.com/tecnologia/pa
● Se asignan los segundos transcurridos a partir de ntalla-lcd.php
la comparación anterior por medio de la función [3]​https://aprenderaprogramar.es/index.php?opti
millis(). on=com_content&view=article&id=451:definici
● Se convierten los minutos en segundos. on-y-utilidad-de-los-interruptores-control-de-flu
● Por medio de condicionales repito el proceso jo-variables-booleanas-true-false-cu00162a&cat
anterior mostrando en el LCD “ceros” si aún no id=28&Itemid=59
se han desbordado los segundos, o si algún [4]https://definicion.de/teclado/
contador terminó su tiempo.
Void loop:
● Por medio del LCD se da el mensaje “Escoja los
tiempos deseados”.
● Por medio de un While se mantiene y se llama
cuatro veces la función contador pero con los
CÓDIGO ARDUINO:

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

LiquidCrystal lcd(A0, A1, 5, 4, 3, 2);

const byte filas = 4;


const byte columnas = 4;

String r[4];
int t;
boolean contar;
int tiempo[4];

int segundos;

char hexaKeys[filas][columnas] = {

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

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

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

{'C','0','=','+'}

};

byte rowPins[filas] = { 6, 7, 8, 9 };
byte colPins[columnas] = { 10, 11, 12, 13 };

byte happy[8]={
B00000,
B00000,
B10001,
B00000,
B10001,
B01110,
B00000,
B00000
};

Keypad Keypadper = Keypad (makeKeymap(hexaKeys), rowPins, colPins, filas, columnas);

void setup()
{
lcd.begin(16,2);

pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
}

void loop() {

lcd.createChar(0, happy);
lcd.setCursor(2, 0);
lcd.print("TEMPORIZADOR");

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ESCOJA LOS");
lcd.setCursor(0, 1);
lcd.print("TIEMPOS DESEADOS");
eleccion();
lcd.clear();
t=millis();
contar=true;
for(int i=0; i<=3; i++){
tiempo[i]=0;
}

while(contar==true){
contador(t,0,0,0);
contador(t,1,11,0);
contador(t,2,0,1);
contador(t,3,11,1);
lcd.setCursor(6,0);
lcd.print("GOO!");
lcd.setCursor(6,1);
lcd.write(byte(0));
lcd.setCursor(9,1);
lcd.write(byte(0));

if(tiempo[0]==1 && tiempo[1]==1 && tiempo[2]==1 && tiempo[3]==1){


contar=false;
}

tone(A2, 1000); // Suena el speaker


delay(1000); // Suena durante un segundo
noTone(A2);

lcd.clear();
lcd.setCursor(3,0);
lcd.print("TERMINARON");
lcd.setCursor(6,1);
lcd.print("TODOS");
delay(1000);
lcd.clear();
}

void eleccion(){
int z = 0;
while(1){

char tecla = Keypadper.getKey();


//Se guardan los distintos tiempos (10 en total) a los que el usuario puede acceder
switch(tecla){

case '1':
r[z]= 30;
z++;
break;

case '2':
r[z]= 60;
z++;

break;

case '3':
r[z]=120;
z++;

break;

case '4':
r[z]=300;
z++;
break;

case '5':
r[z]=600;
z++;
break;

case '6':
r[z]=900;
z++;
break;

case '7':
r[z]=1200;
z++;
break;

case '8':
r[z]=1800;
z++;
break;

case '9':
r[z]=2700;
z++;
break;

case '0':
r[z]=3600;
z++;
break;

if (z==4){
break;
}

}
}

void contador(int t, int z, int col, int row ){


long int comparar = (r[z].toInt()); //Se obtiene el valor de comparacion en segundos
segundos = ((millis()-t)/1000);
if(segundos>=comparar){

if(tiempo[z]==0){
tone(A4, 1000);
delay(150);
noTone(A4);
}

lcd.setCursor(col,row);
lcd.print("00:00");

tiempo[z]=1;
}else{

lcd.setCursor(col,row);
int m =((comparar-segundos)/60);
int s= (comparar-m*60-segundos);
if(m<10){ lcd.print("0");}
lcd.print(m);
lcd.print(":");
if(s<10){ lcd.print("0");}
lcd.print(s);
}

También podría gustarte