Digital Clock using Arduino UNO Without RTC module

Published Sep 01, 2021
 16 hours to build

An interesting project of making a Digital Clock using Arduino UNO without the help of RTC Module.

display image

Components Used

Arduino UNO
Arduino UNO
LCD 16x2 Display Module
LCD16x2 has two lines with 16 character in each line. LCD16x2 is generally used for printing values and string in embedded application.
Male to Female Jumper Wire
Jumper Wires Mach pin jumper wires
4x4 Matrix Keypad
4x4 Matrix Keypad
IIC/I2C Interface Adapter Module
Arduino UNO Sensor Shield v5.0
Arduino UNO Sensor Shield v5.0


To build a Digital Clock at  Low Cost (Without using any External RTC Module)


In this project, I have used LCD 16X2 Display , an Arduino UNO , a 4x4 keypad and Arduino UNO v5.0 Shield to proceed with. The main purpose of the project is about creativity and Productivity. I was trying to look from different sources on Internet but could not get any help. The project is effective and interesting and done at a very low cost . And , its true this project cannot be found on Internet.



  • Arduino UNO

The Arduino Uno is a microcontroller board based on the ATmega328. It has 20 digital input/output pins (of which 6 can be used as PWM outputs and 6 can be used as analog inputs), a 16 MHz resonator, a USB connection, a power jack, an in-circuit system programming (ICSP) header, and a reset button. It contains everything needed to support the microcontroller; simply connect it to a computer with a USB cable or power it with a AC to DC adapter or battery to get started. Programs can be loaded on to it from the easy-to-use Arduino computer program. The Arduino has an extensive support community, which makes it a very easy way to get started working with embedded electronics. The R3 is the third, and latest, revision of the Arduino Uno.

Arduino UNO rev3
  • 4x4 Keypad

A matrix keypad is a small compact input device that accepts user inputs and processed by Microcontrollers.  You might have seen this in most commonly used devices like Calculators, Digital locks, Gas pumps and DIY projects. It comes in different types, one of them is membrane keypads, it is thinner in size and you can paste it on top of your creative projects.

If we have to connect 16 buttons to the microcontroller, then each button takes 1 GPIO pin. But if we use the matrix keypad we just need 8 pins only. Initially, all rows are set to (LOW) and all Columns are set to (HIGH). When a key press occurs the column pin will get contacted to the row pin and makes the entire column state to low. To identify the exact pin at the column, we need to scan each row by sending 1 (HIGH) and read the state at Column pins. The column which changes the state from 0(LOW) to 1(HIGH) then that is the location of the pressed key (Passes the HIGH signal from Row to Column pin). Let’s see this in detail with an example

In the idle state, the row and column will be like this,

Row                       R1 R2 R3 R4 – 0000

Column                 C1 C2 C3 C4– 1111


4x4 Matrix Keypad Interfacing with PIC Microcontroller PIC16F877A
4x4 Matrix Keypad



  • 16×2 LCD Display Module


16×2 LCD is one kind of electronic device used to display the message and data. The term LCD full form is Liquid Crystal Display.  The display has 16 Columns and 2 Rows. it can be displayed 32 characters in total and each character will be made of 5×8 Pixel Dots. These displays are mainly based on multi-segment light-emitting diodes.  The 16×2 LCD is widely used. These LCD modules are low cost, and programmer-friendly, therefore, is used in various DIY circuits, devices, and embedded projects.


16×2 LCD Display Module



  • Arduino UNO sensor Shield v5.0

Arduino shields are the boards, which are plugged over the Arduino board to expand its functionalities. There are different varieties of shields used for various tasks, such as Arduino motor shields, Arduino communication shields, etc.

Robocraze UNO Sensor Shield V5.0 Expansion Board compatible with Arduino : Industrial & Scientific
Arduino UNO Sensor Shield v5.0




  • I2C Module

I2C Module has a inbuilt PCF8574 I2C chip that converts I2C serial data to parallel data for the LCD display.        These modules are currently supplied with a default I2C address of either 0x27 or 0x3F. To determine which version you have check the black I2C adaptor board on the underside of the module. If there a 3 sets of pads labelled A0, A1, & A2 then the default address will be 0x3F. If there are no pads the default address will be 0x27.

The module has a contrast adjustment pot on the underside of the display. This may require adjusting for the screen to display text correctly. 


  • Operating Voltage: 5V
  • Backlight and Contrast is adjusted by potentiometer
  • Serial I2C control of LCD display using PCF8574 
  • Come with 2 IIC interface, which can be connected by Dupont Line or IIC dedicated cable
  • Compatible for 16x2 LCD
  • This is another great IIC/I2C/TWI/SPI Serial Interface
  • With this I2C interface module, you will be able to realize data display via only 2 wires.
I2C Module





• It is effective and has Low-cost option.

• It can be used in dark environments and due to its lighting configuration

• It is mainly powered by battery (no external power supply needed)




Project Schematic Diagram



In this project we have the above mentioned components and the working is quite east to understand .The input will be taken from the user through the matrix keypad. At first we have to give The Hour and then minutes. Then we have to insert Date and month and year format. The AM and PM format will be automatically set on the basis of 24 hours configuration. 

I2C module is connected with Arduino sensor shield through TX(0) and RX(1) pin with SDA and SCL pins. Here, different I2c Library functions are used to make project understand a little bit easier. 

The matrix keypad has 8 pins connected with Arduino UNO sensor shield.

After entering the date ,month, hour, minute and second the data will be displayed on the LCD display.



Here are some images that describe the working in an easy way:-






Setting the hour format
setting the minute format
clock running




Untitled1 Download