Picture of Make A Digital Clock From Scratch
 In some point in the life of every electronics hobbyist the need to make a clock is borned, in my case it was about a month after I soldered my first part on a board, but back then I didn't have the right tools, parts and knowledge to do such a thing.
But after about 2 years I got all the things I didn't have back then and I was ready to make my first digital clock, and with all the LEDs I had left over from my 8x8x8 LED cube project I decided to make my own custom LED clock.

So join me and build your own custom LED digital clock powered by our favorite little micro-controller the Arduino.

Remove these adsRemove these ads by Signing Up

Step 1: What Do We Need?

 Here is what tools you will need to make this:
  1) Soldering Iron.
  2) Some solder wire.
  3) Small needle nose plier
  4) Small cuter
  5) Wire striper

I made my clock with a stand alone arduino without the original board because I wanted to make a finished project.

Now here are the parts you will need to make the clock:
  1) 130 LEDs.
  2) 15 2N4401 transistors.
  3) 20 1K resistors.
  4) about 10 resistors for the current protection(more detail in step 2). I used 150Ohms.
  5) DS1307 real time clock IC.
  6) one coin cell battery holder.
  7) 4 Tact switches.
  8) Prefboard (you would like to get along one for the display about 8inch*3inch)
  9) ATMega328 with arduino bootloader.
  10) A programmer for programing the chip. 
  11) 7805 voltage regulator.
  12) 16MHz crystal.
  13) two 22pF caps.
  14) 28 pin IC socket for the ATMega328.
  15)10 uF cap.
  16)0.1 uF cap.
  17) 4017 counter
  18) 32.768KHz crystal

1-40 of 159Next »
simbrose1 year ago
Having some problems with the finished clock. The first time I powered it up, I set the time and date, and it ran great. After an hour though, it seemed to reset itself and displayed the zero digit on each of the six numbers (like it was before I first set the time and date). Now whenever I set the time again, it runs for about 4 seconds then resets to zeroes again. Sometimes, it won't display the time or date after it has been set.

Anyone having a similar problem? any suggestions on how this could be fixed? I've tried disconnecting the reset pin from the circuit, but that didn't make any difference.
CP LED simbrose1 month ago

i have the same problem ..n i used the uno board but the things went good for the first time n next time it doesnt store time it just diplays 000000 and notinhgs goes on n wen i set the time it take all input but wen pressing setting butoon the display shows the same 000000 ... any solution u found

simbrose CP LED1 month ago
try taking out the button battery, i think that worked for me. It seemed to run fine with just the 9V
Try putting pull up resistors to the DS1307's data lines.
2.2kohm, read datasheet for further ado.
CP LED1 month ago

used the uno board but the things went good for the first time n next time it doesnt store time it just diplays 000000 and notinhgs goes on n wen i set the time it take all input but wen pressing setting butoon the display shows the same 000000 ... any solution my problem n if i use stnad alone arduino it just show zero on the first digit...

plz help i have to it do it by dis year 2014 or else it will affect my grades....

jasper5001 month ago

you could save a digital output by connecting pin 5, the Q6 output of the 4017 counter directly to its reset pin 15. This creates a 1 of 6 counter.

just wondering what is the approximate cost of this project?

KaarelRohtla2 months ago


A problem bumped up when I started programming. When compiling I get next error message:
This report would have more information with

"Show verbose output during compilation"

enabled in File > Preferences.

Arduino: 1.0.6 (Windows 7), Board: "Arduino NG or older w/ ATmega8"

C:\Users\Kaarel\Documents\Arduino\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::read()':

C:\Users\Kaarel\Documents\Arduino\libraries\DS1307\DS1307.cpp:48: error: 'class TwoWire' has no member named 'write'

C:\Users\Kaarel\Documents\Arduino\libraries\DS1307\DS1307.cpp:61: error: 'class TwoWire' has no member named 'read'

C:\Users\Kaarel\Documents\Arduino\libraries\DS1307\DS1307.cpp: In member function 'void DS1307::save()':

C:\Users\Kaarel\Documents\Arduino\libraries\DS1307\DS1307.cpp:74: error: 'class TwoWire' has no member named 'write'

C:\Users\Kaarel\Documents\Arduino\libraries\DS1307\DS1307.cpp:82: error: 'class TwoWire' has no member named 'write'

I am currently using USBasp programmer to program the circuit, Also I use new DS1307 library a good man provided in comments but I still can't make it work. I anyone able to help me with that problem?

SudiartoHsu4 months ago

sir i have a problem using arduino 022. are you have a sketch for arduino 1.0.5? thanks.

rmaduki made it!8 months ago

I have a problem! if I look at the date, one dot LED is not lit .. but when back to clock mode, the LED dot lights up


Would you mind sharing the PCB design you used? I am having troubles getting my cad software to work. Any response is appreciated.

Thanks, Adam

pepy rmaduki8 months ago

check your wiring...may be 'short' with others segment. use your multimeter

CP LED8 months ago

in the above circuit diaram where does the pin of clicok ic goes ......

do we have to cinnect all the small boxex or we have to just leave those pin as it is

CP LED8 months ago

in the above circuit diaram where does the pin of clicok ic goes ......

do we have to cinnect all the small boxex or we have to just leave those pin as it is

pepy made it!8 months ago

i saw this tutorial for few years ago, and i want to built it, but i don't know what i'm doing. i don't know about microcontroller. and i learn about it, and now i'm made it!!! thanks for the tutorial...i change the LEDs to seven segment and different display. on the left side i use common cathode seven segment, and the right side i use commond anode 4x seven segment with 2pcs smallest seven segment display..... :)

Steve259 months ago

Got it working, but there is one problem left. The dots keep flikkering like every second. Any idea what could cause this?

Steve2510 months ago

Do you have to connect you're DS1307 to the 5V? It isn't connected in the drawning

Oliverhall10 months ago

Nice clock! and nice tutorial!

Have a look at this website, they are selling the DS1307 real time clock:

jz02bdn made it!11 months ago

I made it..... use Arduino-0022 to upload the program you can download here

in the code, there is a line - " pinmode =;If it was pressed you will exit the while loop "

In front of the "if" needs two slashes, like so, pinmode =;//If it was pressed you will exit the while loop

Steve25 jz02bdn11 months ago

Yea I figured it out already but thanks

jz02bdn Steve2511 months ago

this is my project ... i did it by follow schematics and sketch from this page... if your project doesn't work... double check your wiring and parts

rmaduki jz02bdn11 months ago

hai, bagaimana cara merubah sketch nya?? punya saya error spt gambar d bawah ini

asketch npp error.png
rmaduki rmaduki11 months ago

hi, how to change this sketch?? I got an error like d picture below

jz02bdn rmaduki10 months ago
upload your sketch with arduino-0022 program... try to read all comment in this page...
rmaduki jz02bdn10 months ago

ok it looks like it should be compiled with Arduino 0022, and this seems to be successful. probably because the DS1307 Library here is not matched with the latest Arduino IDE. okay thanks for the reply

sketch berhasil.png
Steve25 jz02bdn11 months ago

I'm not even started yet. Im low on spare time at this time but i will build it

jz02bdn Steve2511 months ago
did you finish your project?
Steve25 jz02bdn10 months ago

No im not started yet

Steve251 year ago

In a lot of guides people are using 10K pull up resistors. What's the advantage of 10k ohms instead of 1k?

Steve251 year ago

Does anybody have the new DS1307 library because the one in this guide isn't working anymore

Steve251 year ago
I have an error when im compiling the program:
In file included from LEDclock.ino:4:
C:\Users\Stefan\Documents\Arduino\libraries\DS1307/DS1307.h:47: error: 'boolean' has not been declared
C:\Users\Stefan\Documents\Arduino\libraries\DS1307/DS1307.h:48: error: 'boolean' has not been declared
C:\Users\Stefan\Documents\Arduino\libraries\DS1307/DS1307.h:55: error: 'byte' does not name a type

Does someone has an idea what the problem could be?
robot7973 years ago
i has a question do you mind if i rebuild this using vfd tubes?
Syst3mX (author)  robot7973 years ago
I don't mind at all, you can do anything you like.
Good luck with that mate!
i only have one problem
can you put the code with comments up soon
then i can reprogram it easyer
Syst3mX (author)  robot7973 years ago
OK I will try to update the code by tomorrow.
tank you
Syst3mX (author)  robot7973 years ago
It's up now, I am sure I have tons off spelling errors but I hope you wouldn't mind.
Good luck with your project
i finaly got it working

firsth time it did not work
and i gave up
it went into storage
but now it works
soon i will add a case

if i were to do it again
i would design a smaller power supply board
the board has:
0-10V lm317 (adjustable for the filaments)
0-100V ne555 (adjustable for the annodes)
5V 7805 (for arduino and all other chips)
ds1307 (for the time)
it is great and understandable
how can i djust the code to put a dot in every display?
i know it is posible becaus you use a 8 bit number conviguration
but what arduino pin do i need?
Syst3mX (author)  robot7973 years ago
Well I used port D to control the segments but I only used 7 out of 8 pins.
This means that you can use that extra pin for the dots.
If every segment has a dot next to it you can simply add 0x80 to a number and it will light up the dot. Note that each dot needs to me connected to the common ground of each segment that way you need to use just 1 pin to control 6 dots(with the help of multiplexing).
1-40 of 159Next »