Reloj d1307

Estimados estoy usando este código:

//rtc.adjust(DateTime(horaInicio,minutoInicio,segundo,0,0,0));
     // rtc.adjust(DateTime(12,30,30,0,0,0));

en el loop, en ambos casos la hora me pone : 00:00:00.

Como se debería hacer??
desde ya muchas gracias,
Saludos
Juan

No puedes poner dia, mes,año como 0,0,0

De la librería RTClib.h por ejemplo pero otras son iguales.

void RTC_DS1307::adjust(const DateTime& dt) {
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire._I2C_WRITE((byte)0); // start at location 0
  Wire._I2C_WRITE(bin2bcd(dt.second()));
  Wire._I2C_WRITE(bin2bcd(dt.minute()));
  Wire._I2C_WRITE(bin2bcd(dt.hour()));
  Wire._I2C_WRITE(bin2bcd(0));
  Wire._I2C_WRITE(bin2bcd(dt.day()));
  Wire._I2C_WRITE(bin2bcd(dt.month()));
  Wire._I2C_WRITE(bin2bcd(dt.year() - 2000));
  Wire.endTransmission();
}

Mira las librerías jazpiroz!!

las respuestas estan delante de uno.
La fecha inicial es 1/01/1970

Aca un tutorial que puede servirte

Gracias, reviso y les cuento,
Saludos
Juan

Usa algo que le ponga dia,mes,año.

rtc.adjust(DateTime(12,30,30,1,1,70));

El reloj de un RTC debe ajustarse una sola vez y luego tu sistema debe consultarlo y corregir o sincronizar la hora de acuerdo al período de tiempo que establezcas.

Si ves la rutina Time.h de PJRC tiene ejemplos muy claros al respecto.

Mira este ejemplo TimeRTCset.ino

void setup()  {
  Serial.begin(9600);
  while (!Serial) ; // Needed for Leonardo only
  setSyncProvider(RTC.get);   // Esta función hace la tarea de sincronizarse con el RTC
  if (timeStatus() != timeSet) 
     Serial.println("Unable to sync with the RTC");
  else
     Serial.println("RTC has set the system time");      
}

Esta es la función clave que yo uso.

setSyncProvider(RTC.get);

Ahora mira los demás ejemplos y verás que no hace falta mas nada.