Bonjour,
voilà mon problème, je tente de programmer une horloge à l'aide d'un RTC DS1307, je débute en programmation sur arduino (mes dernières expériences étaient en BASIC, ça date....) et je pioche à gauche à droite sur le net pour me débrouiller.
Je n'arrive pas à initialiser l'heure, les minutes et les secondes commencent bien à 0 mais l'heure commence à 6 et je ne me l'explique pas.
Si quelqu'un à une idée ça m'avancerai beaucoup, merci.
voici mon code:
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
// Convertion decimal vers BCD
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convertion BCD vers decimal
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
void setDateDs1307(byte second, // 0-59
byte minute, // 0-59
byte hour) // 0-23
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.endTransmission();
}
// obtention de l'heure du ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour)
{
// Reset register
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
}
void setup()
{
byte second, minute, hour;
Wire.begin();
Serial.begin(9600);
second = 0;
minute = 0;
hour = 0;
setDateDs1307(second, minute, hour);
}
void loop()
{
byte second, minute, hour;
getDateDs1307(&second, &minute, &hour);
Serial.print(hour, DEC);
Serial.print(":");
Serial.print(minute, DEC);
Serial.print(":");
Serial.print(second, DEC);
Serial.println(" ");
delay(1000);
}