You are on page 1of 2

Universidad de Concepcin, Chile. Ingeniera Civil Biomdica, DIE.

Laboratorio N1 de Laboratorio de sistemas


embebidos (Abril 2017).
Claudia Lemunao, Javiera Quiroz, Ingeniera Civil Biomdica,
Profesor Enrique Germany Ayudantes Rodriogo Osorio, Francisco Pastene.

I. INTRODUCCIN.
Creado en el ao 1956 por Petar Ptrov, el reloj digital
ha formado parte integral de la vida diaria gracias a su
utilidad, no solo por otorgar la hora sino, que tambin debido a
sus diversas funciones asociadas a esta. [1]
Conociendo la funcin del reloj, se plantea elaborar un
reloj digital mediante la tcnica de barrido, definiendo 3
modos, modo reloj, el cual da la hora; modo cronmetro, que
es una cuenta el avance del tiempo y modo temporizador, que
consiste en una cuenta regresiva [2]
Dentro de las consideraciones en su implementacin, Figura 1: Esquema general de conexion
los visores de 7 segmentos a utilizar, sern de nodo comn, y
que dependiendo del modo del reloj, los botones variaran de IV. CDIGO PROPUESTO
funcin (a excepcin del botn modo), al igual que los mismos
visores, los cuales podran mostrar, hora, minutos, segundos y Para comenzar el programa se definir algunas variable
decimas de segundos. [2] globales, las cuales se definirn como entrada o salidas tal
como lo indica la Tabla I.
II. MATERIALES Y COMPONENTES. TABLA I
Cerebtot MX4cK. ENTRADAS Y SALIDAS.
4xBotn pulsador. Variable Entradas y salidas
B_Uno INPUT
4xVisor de 7 segmentos nodo comn.
B_Dos INPUT
4xTransistor PNP.
B_Tres INPUT
Diodos LED de color rojo y amarillo.
B_cuatro INPUT
Resistencias: R1= 6x330 [], R= 4x1[k].
VISOR[4] OUTPUT
Protoboard.
L_red OUTPUT
4xJumper.
L_yellow OUTPUT
Cables de conexin.
Software Arduino 1.8.1
Resumen de los estados iniciales para cada uno de las variable globales, donde
Visor hacer referenca a los 4 visores de 7 segmentos .
III. ESQUEMA DE CONEXIN.
Antes de la implementacin del circuito se debe tener Para los diferentes modos del reloj se trabajara con
en consideracin las condiciones de operacin de la tarjeta, tres funciones globales definidas como:
por lo que el voltaje no debe superar los 3.3[V], ni tampoco
los 20[mA]. De este modo, se escogieron resistencias de void Hora(int);
1[k], para los pulsadores y de 330[] para los visores de 7 void Cronometro(int);
segmentos y LEDs. Dado que se pide hacerlo mediante el void Temorizador(int);
mtodo de barrido, los display se conectaran en paralelo a los
pines correspondientes de cada LED interno. En las funciones antes declaradas, reciben variables del tipo
La conexin de las componentes a la tarjeta Cerebot int y no devolvern nada, a causa que se pretende otorgar la
MX4cK, se basa en la imagen mostrada en Figura 1. En ella se informacion en la misma funcin.
puede apreciar los visores y los botones pulsadores. Par el Dentro de las caractersticas del programa, se tiene
caso de los LEDs que no se incluyeron en la imagen, deben que el funcionamiento del reloj y sus diferentes modos, deben
conectarse a un pin mediante su nodo, procurando poner emplearse mediante la tcnica de barrido, para ello se defini
previamente una resistencia (de 330[k]), y que el ctodo este la funcin barrido. En ella se puede apreciar que se emplea la
conectado a tierra. variable VISOR, definida como variable global, la que permite
acceso a los diferentes visores por medio de un transistor.

int barrido()
{
Universidad de Concepcin, Chile. Ingeniera Civil Biomdica, DIE. 2

static int index = 0; TABLA II


TIEMPOS PARA VISORES.
int visorAct = ~(1 << index);
Modo Visor[i] Tiempo en ms num_max_valor
Hora 0 Minutos 60000 9
for (int i = 0; i < 4; i++) { 1 Minutos 600000 5
int aux = bitRead(visorAct, i); 2 Hora 3600000 9
digitalWrite(VISOR[i], aux); 3 Hora 36000000 5
} Cronmetro 0 ds 100 9
1 Segundos 1000 9
int tmp = index+1; 2 Segundos 10000 5
3 Minutos 60000 9
index++; Temporizador 0 Segundos 1000 9
if (index == 4){ 1 Segundos 10000 5
index = 0; 2 Minutos 60000 9
3 Minutos 600000 5
}
return tmp; Tiempo en milisegundos para los diferentes modos y numero mximo que
} puede tomar la variable num_max_valor.

El reloj contara con 4 botones pulsadores, donde el Adicional a ello se utilizara un arreglo que guardara las
primero de ellos seleccionara el modo, para ello se define las variables a mostrar en cada display, por ejemplo para la hora,
variables Button1 y Button1_anterior, donde se comprueba el en caso del boton 3 aumentara los dgitos de cada contador.
estado actual y anterior del botn; y se introduce adems, la
variable Modo, el cual permitir llamar a las diferentes or (int i = 0; i < 4; i++) {
funciones correspondiente al modo seleccionado. if (digitalRead(Botones[3]) == HIGH && Boton_3 ==
LOW && Aux3 == i) { // Aumenta la Hora
Button1 = digitalRead(B_Uno); Hora[i]++;
if (Hora[0] >= 3)
if (Button1 == HIGH && Button1_ant == LOW) { Hora[0] = 0;
for(int i=0; i<3; i++)
{ if (Hora[1] >= 5)
Modo = (Modo 1)%4; Hora[1] = 0;
}
} if (Hora[2] >= 6)
Hora[2] = 0;
Button1_ant=button1;
if (Hora[3] >= 10)
if(Modo==1){ Hora[3] = 0;
Hora(); }
} Boton_3 = digitalRead(Botones[3]);
else if(Modo==2){ }
Cronometro();
} Se utilizara algo similar para disminuir el contador con el
else if (Modo==3){ botn 4. Se empleara algo similar en contadores de los otros
Temporizador(); modos. Cada modo contara con su propio arreglo de variables
} auxiliares. Estas estarn definidas fuera del loop para que se
mantengan pese a salir de su correspondiente modo.
Para el resto de los botones (Button2, Button3,
Button4), su funcin ira variando segn la configuracin o En la condicin del if, se aprecia la variable tiempo, cuya
modo elegido. escala est en ms. Dependiendo el modo el valor de tiempo de
referencia variar como se aprecia en la Tabla II, con el
Segn el modo seleccionado lo entregado por los objetivo que se vayan encendiendo los visores
visores va ir variando. Aun as todos seguirn la misma lgica correspondientes, de este mismo modo el valor de la variable
en el programa. num_max_valor variar, dependiendo cual es el nmero
mximo que puede tomar la variable contador1. Dichos
if (time_now - last_time >= tiempo) valores se alcanzan mediante la funcin milis() y las
{ correspondientes divisiones tal de obtener los valores
contador1 = (contador1+1)%num_max_visor; deseados, considerando que dicha funcin entrega el tiempo
last_time = time_now; en mili segundos.
aux1 = TABLA_CONVERSION_7SEG[contador1];
V. BIBLIOGRAFA
for (int i= 0;i<8;i++) [1] Disponible el da 07/04/2017, bajo el link:
{ http://blog.relojeriaferma.com/relojes-digitales-historia-tipos/
bit_extraido1 = bitRead(aux1,i); [2] Gua de laboratorio Gua de Laboratorio N1,
digitalWrite(PINES_VISOR[i],bit_extraido1); }} (2017), Enrique Germany.

You might also like