En este proyecto conectamos una pantalla LCD con módulo IC2 a arduino y agregamos un reloj módulo DS1302.
La idea es mostrar en una pantalla LCD el reloj actual.
El módulo DS1302 se conecta al arduino de la siguiente manera:
Luego conectamos el LCD con el módulo IC2 siguiendo la ruta de los pines que están grabados en el IC2.
Este es el código para arduino:
#include <Wire.h>
#include "DHT.h" //cargamos la librería DHT
#include <LiquidCrystal_I2C.h>
#include <virtuabotixRTC.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
//EL RELOJ VA CONFIGURADO DE LA SIGUIENTE MANERA
//VCC va a 5V
//GND a GND
//CLK a PIN 6
//DAT a PIN 7
//RST a PIN 8
// Determina los pines ligados al modulo del reloj
// myRTC(clock, data, rst)
virtuabotixRTC myRTC(6, 7, 8);
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
lcd.backlight();
}
void loop()
{
// Le as informacoes do CI
myRTC.updateTime();
//Serial.print(myRTC.dayofmonth);
// Serial.print("/");
// Serial.print(myRTC.month);
// Serial.print("/");
// Serial.print(myRTC.year);
// Serial.print(" ");
lcd.print("Hora: ");
// Adiciona um 0 caso o valor da hora seja <10
if (myRTC.hours < 10)
{
lcd.print("0");
}
lcd.print(myRTC.hours);
lcd.print(":");
// Adiciona un 0 en caso quel valor de minutos sea <10
if (myRTC.minutes < 10)
{
lcd.print("0");
}
lcd.print(myRTC.minutes);
lcd.print(":");
// Adiciona um 0 caso o valor dos segundos seja <10
if (myRTC.seconds < 10)
{
lcd.print("0");
}
lcd.print(myRTC.seconds);
funcionreloj(); //Esta es solo una funcion para mostrar el reloj en el Monitor de Arduino
if(myRTC.minutes == 22){
Serial.println("ALARMA");
}
delay( 1000);
lcd.clear();
}
void funcionreloj(){
String Reloj = "";
if (myRTC.hours < 10)
{
Reloj+="0";
}
Reloj+= myRTC.hours;
Reloj+=":";
if (myRTC.minutes < 10)
{
Reloj+="0";
}
Reloj+=myRTC.minutes;
Reloj+=":";
if (myRTC.seconds < 10)
{
Reloj+="0";
}
Reloj+=myRTC.seconds;
Serial.println(Reloj);
}
******************************************************************
Si deseamos configurar el reloj por primera vez colocamos el siguiente código en el void setup
// (segundos, minutos, hora, dia da semana, dia del mes, mes, año)
myRTC.setDS1302Time(00, 28, 16, 2, 26, 07, 2015);