Simple Digital Clock Using Arduino Nano & DS1307

by MrSottong in Circuits > Apple

4134 Views, 7 Favorites, 0 Comments

Simple Digital Clock Using Arduino Nano & DS1307

P_20191001_212905.jpg

In this article I will show you a tutorial to make a digital clock using Arduino.. The Arduino board that I use is Arduino Nano V3, DS1307 as a time data provider, MAX7219 7 Segment as the watch display.

before entering the tutorial, I recommend that you are familiar with using Arduino devices and accessories. This will make it easier for you to follow the tutorial that I showed.

If you are not familiar with using Arduino boards, don't worry.

You can read this article to warm up:

Required Components

IMG_6915.JPG
IMG_6912.JPG
IMG_6882.JPG
IMG_6885.JPG
IMG_6886.JPG

these are the components we need to make a digital clock:

Library Required :

Assemble All Components

bitmap.png

If all components have been obtained, Now it's time to assemble.

See the description below or see the picture above:

Arduino to RTC DS1307

GND => GND

+5V => VCC

A4 => SDA

A5 => SCL

Arduino to MAX7219

+5V => VCC

GND => GND

D12 => DIN

D11 => CLK

D10 => CS

After all components are installed, continue to the programming section.

Programming

copy and paste this sketch into the sketch that you made. After that upload the program to the arduno board

#include
#include "LedControl.h" #include "RTClib.h"

RTC_DS1307 rtc; LedControl lc=LedControl(12,11,10,1);

void setup() { Serial.begin(57600); 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(2014, 1, 21, 3, 0, 0)); } lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); }

void loop() { DateTime now = rtc.now(); if(now.second() < 30 || now.second() > 40) { lc.setDigit(0,0,now.second()%10,false); lc.setDigit(0,1,now.second()/10,false); lc.setChar(0,2,'-',false); lc.setDigit(0,3,now.minute()%10,false); lc.setDigit(0,4,now.minute()/10,false); lc.setChar(0,5,'-',false); lc.setDigit(0,6,now.hour()%10,false); lc.setDigit(0,7,now.hour()/10,false); }

if (now.second() == 30 || now.second() == 40) { lc.clearDisplay(0); }

if(now.second() >= 31 && now.second() < 40) { lc.setDigit(0,6,now.day()%10,true); lc.setDigit(0,7,now.day()/10,false); lc.setDigit(0,4,now.month()%10,true); lc.setDigit(0,5,now.month()/10,false); lc.setDigit(0,0,(now.year()%1000)%10,false); lc.setDigit(0,1,(now.year()%1000)/10,false); lc.setDigit(0,2,(now.year()%1000)/100,false); lc.setDigit(0,3,now.year()/1000,false); } }

Downloads

Result

Digital clock

After all the steps are successful, this is the result that you will see: (watch video)

every 31st second to 40th second. 7 Segments will display the date. Except for that second, 7 segment will display the clock