Код для поиска

Lesson 105-5: How to Arduino LCD Clock Using DS1307 RTC Module

Lesson 105-5: How to Arduino LCD Clock Using DS1307 RTC Module

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.
403-Lesson 105: Ultimate Arduino Clock Projects Using DS1307
Язык: C++
/*
 * 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 the DS1307 Real-Time Clock module to build an 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 instruction for this code:https://youtu.be/gz9xqvRroDY
 * 
 * This code is part of the Arduino Step by Step Course which starts here:  https://youtu.be/-6qSrDUA5a8
 * 
 * For the 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 or a 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 downloaded 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);
  
}

Файлы📁

Нет доступных файлов.