/* RTC DS1307 */ #include // DS1307 registers #define DS1307 0xD0 >> 1 // ID code #define RTsec 0 //#define RTmin 1 //#define RThour 2 // DS1307 buffer byte sec, xmin, hour, day, date, month, year, ctrl; void setup(){ Serial.begin(19200); Wire.begin(); sec = 0x55; xmin = 0x59; hour = 0x23; day = 0x07; date = 0x31; month = 0x12; year = 0x08; ctrl = 0x00; SetClock(); Serial.println("demo RTC polling\n"); } void loop(){ GetClock(); printhex(hour); Serial.print(":"); printhex(xmin); Serial.print(":"); printhex(sec); Serial.println(); delay(1000); } void SetClock(){ Wire.beginTransmission(DS1307); Wire.write(RTsec); Wire.write(sec); Wire.write(xmin); Wire.write(hour); Wire.write(day); Wire.write(date); Wire.write(month); Wire.write(year); Wire.write(ctrl); Wire.endTransmission(); } void GetClock(){ Wire.beginTransmission(DS1307); Wire.write(RTsec); Wire.endTransmission(); Wire.requestFrom(DS1307,8); sec = Wire.read(); xmin = Wire.read(); hour = Wire.read(); day = Wire.read(); date = Wire.read(); month = Wire.read(); year = Wire.read(); ctrl = Wire.read(); } void printhex(byte val){ if(val < 0x10) Serial.print(val); else Serial.print(val,HEX); }