Posso suggerirti un piccolo test?
Nel setup, dopo
lcd.begin(20,4);
prova a metterci
delay(1000);
lcd.setCursor(0, 0);
lcd.print("01234567890123456789");
lcd.setCursor(0, 1);
lcd.print("ABCDEFGHIJKLMNOPQRST");
lcd.setCursor(0, 2);
lcd.print("abcdefghijklmnopqrst");
lcd.setCursor(0, 3);
lcd.print("01234567890123456789");
delay(2000);
prima di
rtc.begin();
Per vedere se almeno all'avvio stampa qualcosa di corretto.