Techatronic
Published

DS1307 RTC Module With Arduino

In this, we are sharing with you the interfacing of a DS1307 RTC module with Arduino

BeginnerProtip2 hours10,075
DS1307 RTC Module With Arduino

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
Real Time Clock (RTC)
Real Time Clock (RTC)
×1
Breadboard (generic)
Breadboard (generic)
×1
Jumper wires (generic)
Jumper wires (generic)
×1
USB-A to B Cable
USB-A to B Cable
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

Code snippet #1

Plain text
 // TECHATRONIC.COM  
  // RTC LIBRARY LINK  
  // https://github.com/adafruit/RTClib  
 #include <Wire.h>  
 #include "RTClib.h"  
 RTC_DS1307 rtc;  
 char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};  
 void setup () {  
  while (!Serial); // for Leonardo/Micro/Zero  
  Serial.begin(9600);  
  if (! rtc.begin()) {  
   Serial.println("Couldn't find RTC");  
   while (1);  
  }  
  if (! rtc.isrunning()) {  
   Serial.println("RTC is NOT running!");  
   // following line sets the RTC to the date & time this sketch was compiled  
   // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));  
   // This line sets the RTC with an explicit date & time, for example to set  
   // January 21, 2014 at 3am you would call:  
    //rtc.adjust(DateTime(2019, 3, 3, 20, 0, 0));  
  }  
   //rtc.adjust(DateTime(2019, 3, 3, 20, 0, 0));  
   rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));  
 }  
 void loop () {  
   DateTime now = rtc.now();  
   Serial.print(now.year(), DEC);  
   Serial.print('/');  
   Serial.print(now.month(), DEC);  
   Serial.print('/');  
   Serial.print(now.day(), DEC);  
   Serial.print(" (");  
   Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);  
   Serial.print(") ");  
   Serial.print(now.hour(), DEC);  
   Serial.print(':');  
   Serial.print(now.minute(), DEC);  
   Serial.print(':');  
   Serial.print(now.second(), DEC);  
   Serial.println();  
   Serial.print(" since midnight 1/1/1970 = ");  
   Serial.print(now.unixtime());  
   Serial.print("s = ");  
   Serial.print(now.unixtime() / 86400L);  
   Serial.println("d");  
   // calculate a date which is 7 days and 30 seconds into the future  
   DateTime future (now + TimeSpan(7,12,30,6));  
   Serial.print(" now + 7d + 30s: ");  
   Serial.print(future.year(), DEC);  
   Serial.print('/');  
   Serial.print(future.month(), DEC);  
   Serial.print('/');  
   Serial.print(future.day(), DEC);  
   Serial.print(' ');  
   Serial.print(future.hour(), DEC);  
   Serial.print(':');  
   Serial.print(future.minute(), DEC);  
   Serial.print(':');  
   Serial.print(future.second(), DEC);  
   Serial.println();  
   Serial.println();  
   delay(3000);  
 }  

Code snippet #2

Plain text
 // TECHATRONIC.COM  
  // RTC LIBRARY LINK  
  // https://github.com/adafruit/RTClib  
 #include <Wire.h>  
 #include "RTClib.h"  
 RTC_DS1307 rtc;  
 char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};  
 void setup () {  
  while (!Serial); // for Leonardo/Micro/Zero  
  Serial.begin(9600);  
  if (! rtc.begin()) {  
   Serial.println("Couldn't find RTC");  
   while (1);  
  }  
  if (! rtc.isrunning()) {  
   Serial.println("RTC is NOT running!");  
   // following line sets the RTC to the date & time this sketch was compiled  
   // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));  
   // This line sets the RTC with an explicit date & time, for example to set  
   // January 21, 2014 at 3am you would call:  
    //rtc.adjust(DateTime(2019, 3, 3, 20, 0, 0));  
  }  
   //rtc.adjust(DateTime(2019, 3, 3, 20, 0, 0));  
   rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));  
 }  
 void loop () {  
   DateTime now = rtc.now();  
   Serial.print(now.year(), DEC);  
   Serial.print('/');  
   Serial.print(now.month(), DEC);  
   Serial.print('/');  
   Serial.print(now.day(), DEC);  
   Serial.print(" (");  
   Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);  
   Serial.print(") ");  
   Serial.print(now.hour(), DEC);  
   Serial.print(':');  
   Serial.print(now.minute(), DEC);  
   Serial.print(':');  
   Serial.print(now.second(), DEC);  
   Serial.println();  
   Serial.print(" since midnight 1/1/1970 = ");  
   Serial.print(now.unixtime());  
   Serial.print("s = ");  
   Serial.print(now.unixtime() / 86400L);  
   Serial.println("d");  
   // calculate a date which is 7 days and 30 seconds into the future  
   DateTime future (now + TimeSpan(7,12,30,6));  
   Serial.print(" now + 7d + 30s: ");  
   Serial.print(future.year(), DEC);  
   Serial.print('/');  
   Serial.print(future.month(), DEC);  
   Serial.print('/');  
   Serial.print(future.day(), DEC);  
   Serial.print(' ');  
   Serial.print(future.hour(), DEC);  
   Serial.print(':');  
   Serial.print(future.minute(), DEC);  
   Serial.print(':');  
   Serial.print(future.second(), DEC);  
   Serial.println();  
   Serial.println();  
   delay(3000);  
 }  

Github

https://github.com/adafruit/RTClib

Github

https://github.com/PaulStoffregen/Wire

Credits

Techatronic

Techatronic

72 projects • 125 followers
Electronic engineer

Comments