RTC Shield, comportamento strano

Ecco lo sketch.
Lo RTCshield con usb attaccata produce orario corretto, oppure lo prende da un'altra parte?

#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>

char buffer1[20];
char buffer2[20];

byte Centigradi[8] = {
B00010,
B00101,
B00010,
B00000,
B00000,
B00000,
B00000,
B00000
};

byte Apice_2[8] = {
B00110,
B01001,
B00010,
B00100,
B01111,
B00000,
B00000,
B00000
};
byte Freccsu[8] = {
B00100,
B01110,
B10101,
B00100,
B00100,
B11111,
B00000,
B00000
};

LiquidCrystal_I2C lcd(0X27 , 20 , 4);
RTC_DS1307 RTC;

void setup () {

Wire.begin();
RTC.begin();
lcd.begin();
lcd.createChar (0, Centigradi); // load simbolo Centigradi to memory 0
lcd.createChar (1, Apice_2); // load 2 apice to memory 1
lcd.createChar (2, Freccsu); // load Freccia su to memory 2

//RTC.adjust(DateTime(DATE, TIME));

if (! RTC.isrunning()) {
RTC.adjust(DateTime(DATE, TIME));
Serial.println("RTC fa le bizze e scrive quel che vuole");
}
}
void loop () {

DateTime now = RTC.now();

sprintf(buffer1, "%02d:%02d:%02d", now.hour(), now.minute(), now.second());
lcd.setCursor(12,0);
lcd.print( buffer1 );

sprintf(buffer2, "%02d/%02d/%d", now.day(), now.month(), now.year());
lcd.setCursor(0,0);
lcd.print( buffer2 );

lcd.setCursor (0,1); //posizione Temperatura
lcd.print("Temp:");
//lcd.print(sensors.getTempCByIndex(0));
lcd.print("XX,X");
lcd.print(char(0));

lcd.setCursor (12,1); //posizione Pompa
lcd.print("POMPA:");
lcd.print("XXX");

lcd.setCursor (0,2); //posizione Co2
lcd.print("CO");lcd.print(char(1));lcd.print(":");
//lcd.print("d");lcd.print("ppm ");

lcd.setCursor (8,2); //posizione Co2 valve
lcd.print("FASE:");
//lcd.print(char(1));lcd.print(" V:");lcd.print("STOP");

lcd.setCursor (0,3); //posizione ULTIMARIGA
lcd.print("RISC:");
// bisogna vedere se metterlo quando è acceso
lcd.print(char(2));

lcd.setCursor (11,3); //posizione ULTIMARIGA
lcd.print("LUCE:");lcd.print("XXX%");

delay(1000);
}

Grazie