Hola a todos!. Estoy realizando un proyecto en el que involucro un Reloj de Tiempo Real DS1307, y debo mostrar la hora y fecha en un LCD 16x2. Ambos utilizan comunicación I2C. He probado los módulos individualmente, es decir, he mostrado un mensaje en la LCD y la hora y fecha en el monitor serie, y no tengo ningún problema. Sin embargo, al intentar mostrar la hora y fecha del RTC en la LCD, esta no muestra nada, la pantalla se mantiene vacía, o si he mostrado un mensaje anteriormente en la pantalla este no se borra. Para comprobar si el RTC está en funcionamiento, también me debe imprimir la hora y fecha en el monitor serie y si lo hace. He probado las conexiones en un Arduino MEGA y en un Arduino UNO, en ambos pasa lo mismo. Es un problema de comunicación con el I2C o es momento de cambiar algún módulo?. Agradezco su ayuda.
Este es el código que he probado para mostrar la hora y fecha en la LCD:
#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
RTC_DS1307 RTC;
void setup () {
Wire.begin(); // Inicia el puerto I2C
RTC.begin(); // Inicia la comunicaci¢n con el RTC
RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y hora (Comentar una vez establecida la hora)
//el anterior se usa solo en la configuracion inicial
Serial.begin(9600); // Establece la velocidad de datos del puerto serie
lcd.begin();
lcd.backlight();
lcd.clear();
}
void loop(){
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print(now.year(), DEC); // A§o
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.day(), DEC); // Dia
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.println();
lcd.setCursor(0,0);
lcd.print("D:");
lcd.print(now.year(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.day(), DEC);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("T: ");
lcd.print(now.hour(), DEC);
lcd.print(":");
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
delay(1000); // La informaci¢n se actualiza cada 1 seg.
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(" ");
}