le type time_t est juste un unsigned long qui est au format timestamp (nombre de secondes depuis le 1/1/1970)
tu as des outils en ligne :
www.unixtimestamp.com/index.php
tu appelles juste la fonction set avec ce nombre et normalement c'est bon.
sinon voici une petite fonction plus pratique pour la régler par le port série, dans la console de débug tu tapes la chaine suivante + Entrée :
0ssmmhhDddmmyy
(ex 00010204250613 donne 25/06/2013 20h10 )
void loop(void)
{
if (Serial.available())
{
int A=Serial.read();
SerialDebug("SerialRead",A,RTCtm);
if (A==48)
{
setDateDs1307();
}
}
}
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
void setDateDs1307()
{
int second;
int minute;
int hour;
int dayOfWeek;
int dayOfMonth;
int month;
int year;
//0ssmmhhDddmmyy
//00002003250613
second = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); // Use of (byte) type casting and ascii math to achieve result.
minute = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48));
hour = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48));
dayOfWeek = (byte) (Serial.read() - 48);
dayOfMonth = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48));
month = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48));
year= (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48));
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0x00);
Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour)); // If you want 12 hour am/pm you need to set
// bit 6 (also need to change readDateDs1307)
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}