COMUNICACIÓN I2C RTC > LCD

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("               ");

}

Aunque esto no va a resolver tu problema al menos la presentación será mas clara
Si ambos dispositivos funcionan por separado deberían funcionar juntos.

#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
        // Comentar una vez establecida la hora
	RTC.adjust(DateTime(__DATE__, __TIME__)); // Establece la fecha y 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(){
	char buffer[30];

	DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
	
	sprintf(buffer, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
	Serial.print(buffer);
	lcd.setCursor(0,0);
	lcd.print(buffer);

	sprintf(buffer, " %02d/%02d/%04d", now.day(), now.month(), now.year());
	Serial.println(buffer);
	lcd.setCursor(0,1);
	lcd.print(buffer);

	delay(1000); // La informaci¢n se actualiza cada 1 seg.
}