GoldScrew
Created December 18, 2020 © Apache-2.0

How to use Tiny RTC with Arduino and TM1637.h

Today, I will show you how to use Tiny RTC - Real Time Clock module with Arduino Nano or any Arduino board (UNO, Mega...)

BeginnerProtip614
How to use Tiny RTC with Arduino and TM1637.h

Things used in this project

Story

Read more

Schematics

GoldScrew_TinyRTC_and_TM1637.jpg

Code

GoldScrew_TinyRTC.ino

Arduino
/*
 * Read current time with Tiny RTC module and show it to LCD (TM1637 module)
 * Author: GOlD SCREW
 * Email: goldscrewdiy@gmail.com
 * Date: Thu, 17 Dec 2020 
 */
#include <Arduino.h>
#include <TM1637.h>
#include <Wire.h>
#include <Time.h>
#include "RTClib.h"

// RTC
RTC_DS1307 rtc;

// 7 segment LCD: TM1637
#define CLK 2 // Digital pin 2
#define DIO 3 // Digital pin 3
TM1637 MyClock(CLK, DIO);
int8_t Data[] = {0,1,2,3};
int currentHour;
int currentMinutes;
boolean isChanged;

void setup()
{
  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__)));  
  }

  MyClock.set();
  MyClock.init();
}

void loop()
{  
  // Get current datetime
  DateTime myRTC = rtc.now();
  currentHour = myRTC.hour();
  currentMinutes = myRTC.minute();
  ShowTimeOnDisplay(currentHour, currentMinutes);  

  if (isChanged)
  {
    MyClock.point(POINT_OFF);
    isChanged = false;
  }
  else
  {
    MyClock.point(POINT_ON);
    isChanged = true;
  }

  delay(1000);
}

void ShowTimeOnDisplay( int _hour, int _minute)
{
  int8_t Digit0 = _minute %10 ;
  int8_t Digit1 = (_minute % 100) / 10 ;
  int8_t Digit2 = _hour % 10 ;
  int8_t Digit3 = (_hour % 100) / 10 ;

  Data[3] = Digit0 ;
  Data[2] = Digit1 ;
  Data[1] = Digit2 ;
  Data[0] = Digit3 ;

  MyClock.display(Data);
}

Credits

GoldScrew
5 projects • 11 followers
Contact

Comments

Please log in or sign up to comment.