Está en la página 1de 7

RELOJ RTC I2C CON ARDUINO

Presentado por:
Karen Mariana Anaya Guillen
Fabian Guillermo Jerez Quiñonez

Presentado a:

UNIDADES TECNOLOGICAS DE SANTANDER


FACULTAD DE CIENCIAS NATURALES E INGENERIA
ELECTRONICA INDUSTRIAL, E151. V SEMESTRE
2016
RELOJ CON ARDUINO RTC

ELEMENTOS UTILIZADOS

 Arduino uno.

 Protoboard.

 Cables

 Un reloj digital TinyRTC con respaldo de batería.


 Leds.

 Zumbador.

DESARROLLO

1. Para la elaboración del reloj con arduino, primero que todo nos toca
presentar la nueva librería RTClib librería para Arduino (esta hará que todas
la funciones sean válidas) que nos facilitara la comunicación entre el
modulo y arduino (. El módulo que emplearemos es el Tiny RTC I2C que
incorpora un reloj de tiempo realDS1307, una batería para memorizar los
datos y una pequeña memoria EEPROM 24C32).
Nota: Hay que tener en cuenta que el reloj interno se reinicia cada 50 días
aproximadamente, y además si cortamos la corriente a nuestro Arduino, cuando lo
volvemos a conectar inicia en la hora en el cual fue desconectado pero si la
batería no funciona o se desconecta algún clave del circuito reinicia el reloj a la
fecha 2000/01/01 y hora 00:00:00.

2. Añadimos la librería RTClib a la IDE de Arduino. se descarga y


descomprimimos en C:/diretorio arduino/libraries.
NOTA: Esta librería se apoya en la librería Wire (esta la librería ya viene por
defecto añadida) para la comunicación I2C, por lo que tendremos que hacer
referencia a ella he incluirla en nuestro código.
3. Después de haber incluido la librería ya podemos escribir nuestra
programación completa (que nos de la fecha y la hora).

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);
RTC_DS1307 RTC;
int minutos_alarma1 = 20;
int hora_alarma1 = 21;
int minutos_alarma2 = 23;
int hora_alarma2 = 21;
int minutos_alarma3 = 25;
int hora_alarma3 = 21;
boolean all_minutes = true;
boolean all_hour = true;

void setup () {
Wire.begin();
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
lcd.begin(16,2);
lcd.print("Fecha:");
lcd.setCursor(0,1);
lcd.print("Hora:");
lcd.setCursor(1,1);
}
void loop(){
DateTime now = RTC.now();
lcd.setCursor(6,0);
lcd.print(now.year(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.day(), DEC);
lcd.setCursor(5,1);
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.println();
lcd.setCursor(5,1);
delay(1000);
if (hora_alarma1 == now.hour() ) {
if (minutos_alarma1 == now.minute() ){
analogWrite(A3,255);
delay(5000);
analogWrite(A3,0);
delay(54000);
}
else
{
analogWrite(A3,0);
}
}
if (hora_alarma2 == now.hour() ) {
if (minutos_alarma2 == now.minute() ){
analogWrite(A3,255);
delay(5000);
analogWrite(A3,0);
delay(54000);
}
else
{
analogWrite(A3,0);
}
}
if (hora_alarma3 == now.hour() ) {
if (minutos_alarma3 == now.minute() ){
analogWrite(A3,255);
delay(5000);
analogWrite(A3,0);
delay(54000);
}
else
{
analogWrite(A3,0);
}
}
}

4. Luego nos procedemos a realizar el montaje.

Nota: Podemos verificar la programación poniendo unas alarmas cerca a la hora


en el cual estamos realizando el montaje, para verificar el buen funcionamiento de
esta.

DESCRIPCION DEL CODIGO

 boolean all_minutes = true;

Activa alarmas para cualquier hora.

 Wire.begin();

Inicia el puerto I2C.

 RTC.begin();

Inicia la comunicación con el RTC.


 DateTime now = RTC.now();

Función que regresa el tiempo, obtiene la fecha y hora del RTC.

 RTC.adjust(DateTime(__DATE__, __TIME__)); 

Esta función establecerá la fecha y hora en nuestro reloj. La fecha y hora usada
para cargarla en nuestro modulo, será la fecha de creación del archivo .hex
generado al compilar el sketch.

 lcd.print(now.year(), DEC); lcd.print(now.month(), DEC); lcd.print(now.day(),


DEC); lcd.print(now.hour(), DEC); lcd.print(now.minute(), DEC);
lcd.print(now.second(), DEC);

Es para la lectura de la hora y fecha.

 delay(1000);

Actualiza la información cada 1 seg.

 Lo que sigue de la programación corresponde a las alarmas.

También podría gustarte