Problema con i2c , rtc + display 20x4

Hola gente, estoy comenzando en arduino , tengo un inconveniente cuando quiero conectar el display y el modulo rtc con i2c , el rtc funciona correctamente, el display no me muestra nada o me muestra solo el primer caracter de lo que me tendria que aparecer, las direcciones de cada modulo estan bien y no se repiten, les dejo el codigo que estoy utilizando y una foto para que me puedan ayudar.

#include <Time.h>
#include <RTClib.h>
#include <Wire.h>
#include "DHT.h"
#define DHTPIN 12     
#define DHTTYPE DHT22   
DHT dht(DHTPIN, DHTTYPE);
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,20,4);
RTC_DS1307 rtc;
int humedad=0; 
int temperatura=0; 
int ledrojo = 6;
int ledazul = 7;
int ledblanco = 9;
int brillo;
int pot = A0;
int pulsador = 13;
int estado = 0;
int estadoanterior = 0;
int salida = 0;
int entradatierra = 0;
int sensortierra = 1;
int humedadtierra = 0;
int luminocidad = 0;

void setup() {
  Wire.begin();
  rtc.begin();
  Serial.begin(9600);
  dht.begin();
  lcd.init();  
  lcd.init();
  lcd.backlight();
  if (! rtc.isrunning()) {
  Serial.println("RTC is NOT running!"); 
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));  
  pinMode (pulsador, INPUT);
  pinMode (ledrojo , OUTPUT);
  pinMode (ledazul, OUTPUT);
  pinMode (sensortierra, INPUT);
  lcd.setCursor(6,0);
  lcd.print("RIEGO");
  delay (1000);
  lcd.setCursor(3, 1);
  lcd.print("AUTOMATICO");
  delay (6000);
  lcd.clear();
}
}

void loop() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();
  float f = dht.readTemperature(true);
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  DateTime now = rtc.now();
  Serial.println("-------------------------------------------------------------------------------------------------------------------------------");
Serial.println("   RIEGO  AUTOMATICO   ");

Serial.print(now.day(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.print(' ');
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println("-------------------------------------------------------------------------------------------------------------------------------");
Serial.print ("TEMPERATURA:   ");
Serial.print(t);
Serial.println("C ");
Serial.print ("HUMEDAD:       ");
Serial.print(h);
Serial.println("%");
Serial.print("HUMEDAD TIERRA: ");

if(humedadtierra <=20){ 
Serial.println("BAJO");
}
if(humedadtierra > 50){
Serial.println("ALTO");
}
if((humedadtierra > 21)&&(humedadtierra < 49)){
Serial.println("MEDIO");
}
Serial.print("SALIDA:         ");
Serial.println(salida);

lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
lcd.setCursor(2,0);
lcd.print("/");
lcd.setCursor(3,0);
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.setCursor(5,0);
lcd.print(now.year(), DEC);
lcd.setCursor(11,0);
lcd.print(now.hour(), DEC);
lcd.setCursor(13,0);
lcd.print(":");
lcd.setCursor(14,0);
lcd.print(now.minute(), DEC);
lcd.setCursor(0, 1);     
lcd.print("TEMP:");    
lcd.setCursor(5,1);    
lcd.print(t);     
lcd.setCursor(7, 1);  
lcd.print("c");          
lcd.setCursor(10, 1);   
lcd.print("HM:");       
lcd.setCursor(13, 1);   
lcd.print(h);  
lcd.setCursor(15, 1);    
lcd.print("%");          
delay(1000);
}

en la siguiente imagen me tendria que mostrar, dia, hora , temperatura y humedad

Hace poco he tenido un problema parecido con una LCD de 16*2.
Lo primero que hice fue asegurarme de que la dirección I2C de la pantalla era la correcta, para ello usé el I2Cscanner (lo puedes encontrar facilmente en google).
Después de sacar la dirección volví a probar y tampoco funcionaba…
El problema es que existen bastantes librerías diferentes con el mismo nombre (LiquidCrystal_I2C.h). Pero no todas valen para todas las LCD que existen… Yo encontré unas 5 o 6 librerías diferentes. Lo que hice fue bajármelas todas e ir descartando las que no servían, al final di con la adecuada.
En este enlace tienes unas cuantas librerías, y hay algunas más que no aparecen aquí pero que puedes encontrar en GitHub.
Librerias I2C

Espero que la solución que yo encontré pueda servirte.