DS1307RTC Library: Hardware Requirements

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

DS1307RTC Library

DS1307RTC allows you to access real time clock (RTC) chips compatible with the DS1307. It is intended to
be used with the Time library.
Download: Included with the Teensyduino Installer
Latest Developments on Github

Hardware Requirements
DS1307RTC works with the DS1307, DS1337 and DS3231 real time clock chips.

The DS1307 chip only works with 5 volt power. The DS1337 and DS3231 can use 3.3 or 5 volts.

Teensy 3.0 has a built-in RTC, so the DS1337 offers little benefit. However, the DS3231 includes a
temperature compensated crystal, so it is recommended for applications requiring high accuracy.

The ChronoDot board provides the DS3231 chip in an easy-to-use package. For use with Teensy 3.0, you
must add pullup resistors for the SDA and SCL signals.

Basic Usage
RTC.get();
Reads the current date & time as a 32 bit "time_t" number. Zero is returned if the DS1307 is not running or
does not respond.
RTC.set(t);
Sets the date & time, using a 32 bit "time_t" number. Returns true for success, or false if any error occurs.
RTC.read(tm);
Read the current date & time as TimeElements variable. See the Time library for TimeElements details.
Returns true on success, or false if the time could not be read.
RTC.write(tm);
Sets the date & time, using a TimeElements variable. Returns true for

RTC.chipPresent();
Returns true if a DS1307 compatible chip was present after using the 4 functions. If an error occurs, this can
be used to distinguish between a DS1307 that is not running vs no chip connected at all.

Example Program
DS1307RTC includes 2 examples, to read or set the time.
You can open this example from File > Examples > DS1307RTC > ReadTest.
#include <DS1307RTC.h>
#include <Time.h>
#include <Wire.h>
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println("DS1307RTC Read Test");
Serial.println("-------------------");
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print("Ok, Time = ");
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(", Date (D/M/Y) = ");
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println("The DS1307 is stopped. Please run the SetTime");
Serial.println("example to initialize the time and begin running.");
Serial.println();
} else {
Serial.println("DS1307 read error! Please check the circuitry.");
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number < 10) {
Serial.write('0');
}
Serial.print(number);
}

You might also like