Introduction: Simple Word Clock (arduino)

Picture of Simple Word Clock (arduino)

This is a simplified version of the original word clock from Doug -- SEE HERE

All the credits go to him and his extremely well built code...!!

I have just modified the code to make it work with more common ICs and for simple run.

All you need is an arduino and a RTC ..I have removed the switches and other hardware..Since DS1307 is pretty stable, it does not require frequent time changes.! It will also keep the time even if there is a power failure, thanks to its internal 3v battery. This battey will last for years....

So even if you are going on a vacation, just turn off the clock and the time will be running accurate when you turn it back on..!!

I have made the Code as simple as possile ! It just reads time from the RTC and updates the shift registers..!!

Step 1: Collecting the Parts -

Picture of Collecting the Parts  -


Main parts ---

  • Arduino or just atmega328p as i have used (standalone)x1
  • RTC (Real Time Clock) DS1307 x1
  • Shift registors 74hc595 x3
  • ULN2803a Darlington Transistor Arrays as LED drivers x3
  • LED strip I have used white...approx 2m
  • 16 pin IC socket x3
  • 18 pin IC socket x3
  • 12v power source may be battery or wall adaptor

Miscellaneous --

  • Proto board / general pcb board
  • Connecting wires
  • Male header pins
  • Jumper wires- female-female
  • basic soldering


  • Mount board / thick cardboad
  • Glue, Tape ...
  • Scissors, Paper cutter ...
  • Acrylic Board (translucent white) / Plexi glass
  • Stickering of Words

Step 2: Making the Connections....

Picture of Making the Connections....

Follow to simple circuit diagram shown above...

I have used a standalone arduino which I can program with FTDI cables, but any arduino board can be used !!
For this project even though we control 22 individual LED arrays, we just use 5 I/O pins from the arduino ie.- 3 for shift Registors and 2 for RTC module.

Using Shift registors is a great way to increase the i/o pins.

Important thing about ULN2803a Drivers -

This IC is a darlington pair !!

Hence connect all the cathodes [positive terminals] of the LEDs to the source and the anodes [Negative/ground] to the respective output terminals of the Driver..!

Step 3: Building the Frame...!

Picture of Building the Frame...!

Here I have used Mount board for the construction...

It is easy to cut, bend and handle the mount board. But it is also has less strength.

Any material like Wood, Plastic, Metal etc... can be used !

  • Cut a piece of mount board the size of the front Board with words.
  • Make a rough sketch of the words and their alignment on the board.
  • Cut strips of mount board of size may be 1.5 cm.. This is to make compartments, the size of the words. this will prevent the light from one word to diffuse and illuminate the surrounding words.
  • Place the strips horizontally after each line of words and vertically in between the words. ie- make small boxes for each of the word.
  • Finally make a box that will sneakily fit the electronics, the LED board, anti-diffusion boxes and the outermost board with words stickered on to it..

Step 4: Connecting the LEDs...

Picture of Connecting the LEDs...

I'm using the LED strip in this project. It is easy to operate with.... it can be cut for desired length, no need of soldering each and every led to make an array .!! LED Strips also come with a peel-off sticker at the back.

Just cut the required length of the strip depending on the size of the word and stick it on the LED board ( mount board). Remember that most of the led strips have connectors at an interval of 3 leds...So you have to cut at the indicated points only.! Therefore even the smallest word will have 3 leds.

You can even use the standard LEDs, solder them for desired number of leds. Remember to use the resistor for each array that you make. the value of the resistor depends on the specifications of the leds used. You can check here for further info -- LED calc or this one..

Connect all the Positive terminals of the LED strip together. This is the common Vcc for the leds.

You can see that i have connected it using thin copper wire. Then Connect wires for all the individual ground terminals for each word and bring it back to connect it to the driver.

Step 5: The Codes.....

Picture of The Codes.....

The original code itself is well commented and easily understandable ....!!

The #define section allots the pins on the shift register for individual words.! They will be updated each time when the time changes.

The void WriteLEDs function updates the shift regesters through the data pin.

The void selftest function blinks all the LED words in a sequence so that you know everything is working correctly. ie- for Troubleshooting.

The void displaytime function will check the time with the RTC chip and see which words to be illuminated accordingly.

The rest can be easily made out by the code itself....


    Step 6: Finishing It Off.....

    Picture of Finishing It Off.....

    Place all the controller boards, ie-- arduino and circuit which contains shift registers, RTC chip and LED drivers.

    Connect the LED arrays of each word to the respective pin of the driver.

    Place the LED board inside the Casing and fix it in place...

    The main outer Stencil is made by stickering the words onto any acrylic or plastic.

    Make a hole at the back for fixing the clock for using a nail.

    There you have it.!! A simple Word clock ....

    Please do leave your comments and doubts below, though in not a expert i will try to answer it...



    HazardousMaterials made it! (author)2017-07-17

    Great project! I ended up taking a few shortcuts, like making the prototyping board permanent, and leaving the back open for repairs, RTC battery replacement, and software updates. The wiring is superglued in place to prevent disconnections. I also added a power stepdown regulator to allow me to use the adapter I had on hand. As a side benefit, since the clock was too bright for a bedroom, turning the regulator voltage down below 12V reduced the brightness nicely. The most complicated things were: 1) doing the wiring (and finding my mistakes in the wiring), and 2) figuring out the proper pin out assignments for the LED (but this is documented in the code, so that was good once I found it and quit the "trial and error" method). I built this with my nephew, and we both found the "mad scientist" effect of the exposed wiring to be more a plus than a minus. It's neat to hear people go "oooh" when you turn the clock around.

    It's been running for 4 months now and just needed the first time correction (just a few minutes off).

    Thanks so much for posting this instructable!


    matheus.rochadias (author)2017-05-01

    Hey bro, how long does it take to you need to change the battery? i'm trying to make one and i want to make in the same way as yours with battery! Very good instructables dude, so far the best i've seen!

    Hey rochadias, thanks.! ?
    The battery will run for years..
    Mine is now 1.5-2nd year running..

    Thanks man, i'll try to make one in a few days, i'll bring you the results!! thanks a lot!!

    TadeusR (author)2016-05-25

    how about the positive terminal of led arrays? where do i connect it?

    Rakshith bk (author)TadeusR2017-04-13

    The positive terminal is connected to the supply voltage (12v)

    swordcrypt (author)2017-04-11

    nice work , thank you for sharing , can we add two buttons to adjust the time without using pc , like the ones used in doug's clock?

    Rakshith bk (author)swordcrypt2017-04-13

    Sure you can..
    You may have to change a few lines of code

    tryan11 (author)2016-02-24

    could someone tell me which pin connect which led?

    Rakshith bk (author)tryan112016-02-29

    The led will connect on the same order as in the code...
    The first pin of the shift register connect to the first pin of the led driver, which connects to the first word....

    tryan11 (author)Rakshith bk2016-03-02

    can you send me the code? i can't even open or download it

    sophiasoja (author)2016-02-29

    If I wanted to change the size of the clock to make it a bit smaller, would I just be able to do that to the display or would I have to change the code? Thanks in advance!

    Rakshith bk (author)sophiasoja2016-02-29

    Just use a smaller stencil.... Reduce the number of led per word.... The code has nothing to do with the size.. ? Good luck.

    parasj4 (author)2016-01-23

    sir give me the output led connection. which led connect which pin? i cant understand please help me sir

    DheerajD1 (author)2016-01-15

    finally sir i made this project but thetimer cant be shown. when i upload a programme so that time led is on 1 by 1 after that all leds off no 1 can oprate give me suggestion for this.... thank u for the last reply

    Rakshith bk (author)DheerajD12016-01-18

    Sorry I did not understand your question....

    But try some of these troubleshooting tips --

    * Make sure that the RTC is working properly

    * Try connecting the arduino to a computer and check the serial communications (in IDE) to see where the problem is.

    * Make sure that your source can provide enough power required...

    DheerajD1 (author)2016-01-13

    there was a problem occurs at line give suggestion for error and correct a right programe

    i added a progamme error issue at bottom

    Arduino: 1.6.8 Hourly Build 2016/01/12 04:53 (Windows 10), Board: "Arduino/Genuino Uno"

    C:\Users\Dheeraj\Documents\Arduino\word\word.ino:4:20: fatal error: RTClib.h: No such file or directory

    #include "RTClib.h"


    compilation terminated.

    exit status 1

    Error compiling.

    This report would have more information with

    "Show verbose output during compilation"

    option enabled in File -> Preferences.

    Rakshith bk (author)DheerajD12016-01-14

    you need to install the library for DS1307 first...

    download here

    georgeaz3 (author)2016-01-06


    Where can I find the letters sheet to print out?

    Thank you

    bimbopan2295 (author)2015-12-23

    hi, i dont see in the instructions how can i set the time?

    Rakshith bk (author)bimbopan22952015-12-25

    Sorry about that..!
    In the RTClib.h check the example - DS1307

    connect your RTC to a separate arduino and run this sketch...!

    The line "rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); " will set the current time of your PC you are uploading from, to the RTC.

    I have removed all the buttons from the circuit just to make it simple. Moreover the clock has resolution of 5 min only and there will be very less variation of time in RTC.

    bimbopan2295 (author)Rakshith bk2015-12-25

    can i just add that line to begining of the code? it should work right?

    1413 made it! (author)bimbopan22952015-12-31

    This code will do time update over serial connection. Put it at the beginning of loop function. you can send time over Serial Monitor.


    // #include <Time.h>

    // #include <DS1307RTC.h>

    tmElements_t tm;

    while (Serial.available() > 0) {

    switch (


    case 'u':

    tm.Year = Serial.parseInt() - 1970; //year 1970 mean value 0 of DS1307

    tm.Month = Serial.parseInt(); // do it again

    tm.Day = Serial.parseInt(); // again...

    tm.Hour = Serial.parseInt();

    tm.Minute = Serial.parseInt();

    tm.Second = Serial.parseInt();

    if ( == 'u') // only set time when receive another 'u'



    case 't':

    serialShowTime(); // modify to fit your code

    } //end switch

    } //end while


    Type in serial monitor: u2015/1/1 23:59:59u

    Or use an PC app like how I did it

    This one below is my newest toy

    35fordrat (author)2015-08-14

    Can you please specify what LED "word" goes to on the ULN2803a Dar Trans? I have looked through this instructable several times and cant figure out the hook-up for the LED's...I appreciate your help! I have all the parts to build and I am eager to hear back from you! Thanks!

    Pklaco (author)2015-07-31

    The file Word_clock_RBK is not there at the link

    Rakshith bk (author)Pklaco2015-08-01

    Please try clicking the download button in the sketch editor, you can directly upload the file to your arduino by installing a simple browser extension, but some of you are getting the same error, don't know why..!!

    Anyway I have also added a .zip version of the sketch.

    Pklaco (author)Rakshith bk2015-08-03

    That worked great, thanks for the quick reply.

    pborawad (author)2015-07-18

    the link opens in a file not found option.

    Rakshith bk (author)pborawad2015-07-18

    The main code is directly available in Step 5... You can just copy or Upload it directly to your arduino board.!!

    In any case I'll directly send the necessary files to you.

    tomatoskins (author)2015-07-17

    Excellent first instructable! I love the word clock!

    Rakshith bk (author)tomatoskins2015-07-17

    Thank you....

    Saiyam (author)2015-07-17

    That looks nice! Very well made.

    Rakshith bk (author)Saiyam2015-07-17

    Thank you... : )

    About This Instructable




    Bio: Electronics and communication engineer in making. Hobby tinkerer and photographer
    More by Rakshith bk:SmartLights - ESP8266 and Led StripSimple Word clock (arduino)
    Add instructable to: