Lesson 105-1: Building a Basic Arduino Clock Using DS1307 to Display on Serial Monitor

Lesson 105-1: Building a Basic Arduino Clock Using DS1307 to Display on Serial Monitor

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 1 Basic DS1307 Clock with Arduino where we build a clock which is displayed on the serial monotor of computer.
399-Lesson 105: Ultimate Arduino Clock Projects Using DS1307
言語: C++
/*
 * Lesson 105-1: Building a Clock using DS1307 | Robojax Arduino Step By Step Course
 This code shows Project 1: Basic DS1307 Clock with Arduino.
In this lesson, we learn how to use the DS1307 real-time clock module to build an Arduino clock. This lesson covers 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
Project 7: LCD Clock with Alarm
 * Watch the 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 for 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 

 *  * 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/>.


*/
/*
 * 
 * For the library for this code, visit http://robojax.com/
 * 
 */
//DateTime (uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t min, uint8_t sec)

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;
const bool FORMAT_12=false;//if 12 hours set to true, for 24 hours set to false

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(2025, 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(") ");
     if(FORMAT_12)
    {
     Serial.print(now.twelveHour(), DEC);//12 hours format       
    }else{
     Serial.print(now.hour(), DEC);//24 hour format     
    }    
    
    Serial.print(':');
    if(now.minute() <10)
    Serial.print(0);
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    if(now.second() <10)
    Serial.print(0);    
    Serial.print(now.second(), DEC);
     if(FORMAT_12)
    {
      if(now.isPM())
      {
         Serial.print("PM");  
      }else{
          Serial.print("AM");        
      }
    }    
    Serial.println();
   
    delay(3000);
}

ファイル📁

ファイルは利用できません。