Arduino_Scuola
Published © CC BY-NC-SA

Arduino Clock

This lesson aims to show how to make a simple Arduino based clock using an a LCD and a real time clock.

IntermediateFull instructions provided19 minutes39,337
Arduino Clock

Things used in this project

Hardware components

Arduino UNO
Arduino UNO
×1
PCF8563
×1
Crystal 32kHz
×1
10K potentiometers
×10
10k 1/4w resistor
×10
Resistor 220 ohm
Resistor 220 ohm
×10
LCD 16x2
×1
Breadboard 830 points with Wire Kit
×1

Story

Read more

Schematics

Schematics

Code

Code snippet #1

Arduino
/* Demonstration of Rtc_Pcf8563 Set Time. 
 * Set the clock to a time then loop over reading time and 
 * output the time and date to the serial console.
 *
 * I used a RBBB with Arduino IDE, the pins are mapped a 
 * bit differently. Change for your hw
 * SCK - A5, SDA - A4, INT - D3/INT1
 *
 * After loading and starting the sketch, use the serial monitor
 * to see the clock output.
 * 
 * setup:  see Pcf8563 data sheet.
 *         1x 10Kohm pullup on Pin3 INT
 *         No pullups on Pin5 or Pin6 (I2C internals used)
 *         1x 0.1pf on power
 *         1x 32khz chrystal
 *
 * Joe Robertson, jmr
 * orbitalair@bellsouth.net
 */ 
#include <Wire.h>
#include <Rtc_Pcf8563.h>

//init the real time clock
Rtc_Pcf8563 rtc;

void setup()
{
  //clear out the registers
  rtc.initClock();
  //set a time to start with.
  //day, weekday, month, century(1=1900, 0=2000), year(0-99)
  rtc.setDate(14, 6, 3, 1, 10);
  //hr, min, sec
  rtc.setTime(1, 15, 0);
}

void loop()
{
  //both format functions call the internal getTime() so that the 
  //formatted strings are at the current time/date.
  Serial.print(rtc.formatTime());
  Serial.print("\r\n");
  Serial.print(rtc.formatDate());
  Serial.print("\r\n");
  delay(1000);
}

Code snippet #2

Arduino
#include <Wire.h>
#include <Rtc_Pcf8563.h>
// include the RTC library 
#include <LiquidCrystal.h>


//init the real time clock
Rtc_Pcf8563 rtc;



// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  lcd.print(" Arduino Clock!");
  while(1500 - millis() > 0);
  pinMode(13, OUTPUT);
}

void loop() {
  lcd.setCursor(0, 0);
  lcd.print("Date: ");
  lcd.print(rtc.formatDate());
  
  lcd.setCursor(0, 1);
  lcd.print("Time: ");
  lcd.print(rtc.formatTime());
}

Credits

Arduino_Scuola

Arduino_Scuola

32 projects • 155 followers

Comments