- Lesson 105-1: Building Basic Arduin Clock using DS1307 to dispaly on Serial Monitor
- Lesson 105-2: Alarm Clock using DS1307 with Arduino
- Lesson 105-3: How to build LED Seven Segment Clock Using DS1307 RTC with Arduino
- Lesson 105-4: How to have Arduino unlimited Alarm using DS1307 RTC module
- Lesson 105-5: How to Ardino LCD Clock using DS1307 RTC module
- Lesson 105-6: How to Ardino LCD Clock using DS1307 RTC module with Alarm
Lesson 105: Ultimate Arduino Clocks projects using DS1307
Lesson 105: Ultimate Arduino Clocks projects using DS1307
Please select other codes for this lecture from the links below.
Part 13: Clock and Timers
This in this lesson we have 7 projects in one. We learn how use DS1307 Real-Time Clock (RTC) module to build a clock using Arduino.
This is project 6 LCD Clock using DS1307 RTC module. We learn how to display a full calendar and clock on LCD1602 or LCD2004 LCD display. We use LCD screen with the I2C module wich allowes us to have only 4 wire.
Projects
- Project 1: Basic DS1307 Clock with Arduino
- Project 2: DS1307 Alarm with Buzzer and Relay
- Project 3: DS1307 Alarm with Relay and AC Bulb
- Project 4: LED Seven Segment Clock using DS1307
- Project 5: Unlimited Alarm with Relay(this project)
- Project 6: LCD Clock using DS1307(this project)
- Project 7: LCD Clock with Alarm
/*
* Lesson 105-1: Building Clock using DS1307 | Robojax Arduino Step By Step Course
This code: Project 6: LCD Clock using DS1307
In this lesson we learn how to use DS1307 Real-time clock module to build Arduino clock. In this lesson we learn about 7 projects.
Project 1: Basic DS1307 Clock with Arduino
Project 2: DS1307 Alarm with Buzzer and Relay
Project 3: DS1307 Alarm with Relay and AC Bulb
Project 4: LED Seven Segment Clock using DS1307
Project 5: Unlimited Alarm with Relay
Project 6: LCD Clock using DS1307 (this code)
Project 7: LCD Clock with Alarm
* Watch Video instrution for this code:https://youtu.be/gz9xqvRroDY
*
* This code is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
*
* for library of this code visit http://robojax.com/
*
If you found this tutorial helpful, please support me so I can continue creating
content like this. Make a donation using PayPal by credit card https://bit.ly/donate-robojax
Written by Ahmad Shamshiri on Feb 07, 2021
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
DS1307: RTCLib from Adafruit
https://github.com/adafruit/RTClib/
HT16k33 library
// AUTHOR: Rob Tillaart
// VERSION: 0.1.0
// PURPOSE: demo
// URL: http://www.adafruit.com/products/1002
// URL: https://github.com/RobTillaart/HT16K33
*/
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
const bool FORMAT_12=true;//if 12 hours set to true, for 24 hours set to false
char daysOfTheWeek[7][12] = {
"Sunday", "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday"};
char monthName[12][12] = {
"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
};
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f, 16, 2);
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__)));
// initialize the LCD
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.print("Robojax");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("DS3231 Clock");
delay(2000);
}
void loop () {
DateTime robojax = rtc.now();
lcd.clear();
lcd.setCursor (0,0); // go to start of 2nd line
if(robojax.hour() <10)
lcd.print(0);
if(FORMAT_12)
{
lcd.print(robojax.twelveHour());//12 hours format
}else{
lcd.print(robojax.hour());//24 hours format
}
lcd.print(":");
if(robojax.minute() <10)
lcd.print(0);
lcd.print(robojax.minute());
lcd.print(":");
if(robojax.second() <10)
lcd.print(0);
lcd.print(robojax.second());
if(FORMAT_12)
{
if(robojax.isPM())
{
lcd.print("PM");
}else{
lcd.print("AM");
}
}
lcd.print(" ");
lcd.print(daysOfTheWeek[robojax.dayOfTheWeek()]);
lcd.setCursor (0,1);
lcd.print(robojax.day());
lcd.print(" ");
lcd.print(monthName[robojax.month()-1]);
lcd.print(" ");
lcd.print(robojax.year());
delay(300);
}