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 -


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....

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...!

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...

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.....

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.....

    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...


    <p>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!</p>
    Hey rochadias, thanks.! ?<br>The battery will run for years.. <br>Mine is now 1.5-2nd year running..
    <p>Thanks man, i'll try to make one in a few days, i'll bring you the results!! thanks a lot!!</p>
    <p>how about the positive terminal of led arrays? where do i connect it?</p>
    The positive terminal is connected to the supply voltage (12v)
    <p>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?</p>
    Sure you can.. <br>You may have to change a few lines of code
    could someone tell me which pin connect which led?
    The led will connect on the same order as in the code... <br>The first pin of the shift register connect to the first pin of the led driver, which connects to the first word....
    can you send me the code? i can't even open or download it<br>
    <p>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!</p>
    Just use a smaller stencil.... Reduce the number of led per word.... The code has nothing to do with the size.. ? Good luck.
    <p>sir give me the output led connection. which led connect which pin? i cant understand please help me sir</p>
    <p>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</p>
    <p>Sorry I did not understand your question....</p><p>But try some of these troubleshooting tips --</p><p>* Make sure that the RTC is working properly</p><p>* Try connecting the arduino to a computer and check the serial communications (in IDE) to see where the problem is.</p><p>* Make sure that your source can provide enough power required... </p>
    <p>there was a problem occurs at line give suggestion for error and correct a right programe </p><p>i added a progamme error issue at bottom</p><p>Arduino: 1.6.8 Hourly Build 2016/01/12 04:53 (Windows 10), Board: &quot;Arduino/Genuino Uno&quot;</p><p>C:\Users\Dheeraj\Documents\Arduino\word\word.ino:4:20: fatal error: RTClib.h: No such file or directory</p><p> #include &quot;RTClib.h&quot;</p><p> ^</p><p>compilation terminated.</p><p>exit status 1</p><p>Error compiling.</p><p>This report would have more information with</p><p>&quot;Show verbose output during compilation&quot;</p><p>option enabled in File -&gt; Preferences.</p>
    <p>you need to install the library for DS1307 first...</p><p><a href="https://github.com/adafruit/RTClib">download here</a> </p>
    <p>Hey,</p><p>Where can I find the letters sheet to print out?</p><p>Thank you</p>
    <p>hi, i dont see in the instructions how can i set the time?</p>
    <p>Sorry about that..!<br>In the <strong>RTClib.h </strong>check the example - <a href="https://codebender.cc/sketch:77176">DS1307 </a></p><p>connect your RTC to a separate arduino and run this sketch...!</p><p>The line &quot;<i style="font-weight: bold;"> </i><b style="font-style: italic;">rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));</b> &quot; will set the current time of your PC you are uploading from, to the RTC.</p><p>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.</p>
    <p>can i just add that line to begining of the code? it should work right?</p>
    <p>This code will do time update over serial connection. Put it at the beginning of loop function. you can send time over Serial Monitor.</p><p>[code]</p><p>// #include &lt;Time.h&gt;</p><p>// #include &lt;DS1307RTC.h&gt;</p><p>tmElements_t tm;</p><p>while (Serial.available() &gt; 0) {</p><p>switch (Serial.read())</p><p>{</p><p>case 'u':</p><p>tm.Year = Serial.parseInt() - 1970; //year 1970 mean value 0 of DS1307</p><p>tm.Month = Serial.parseInt(); // do it again</p><p>tm.Day = Serial.parseInt(); // again...</p><p>tm.Hour = Serial.parseInt();</p><p>tm.Minute = Serial.parseInt();</p><p>tm.Second = Serial.parseInt();</p><p>if (Serial.read() == 'u') // only set time when receive another 'u'</p><p>RTC.write((tm);</p><p>break;</p><p>case 't':</p><p>serialShowTime(); // modify to fit your code</p><p>} //end switch</p><p>} //end while</p><p>[/code]</p><p>Type in serial monitor: u2015/1/1 23:59:59u</p><p>Or use an PC app like how I did it <a href="http://ceezblog.info/2015/05/15/arduino-analog-clock-with-ds1307/" rel="nofollow"> http://ceezblog.info/2015/05/15/arduino-analog-cl...</a><br></p><p>This one below is my newest toy<br></p>
    <p>Can you please specify what LED &quot;word&quot; 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!</p>
    The file Word_clock_RBK is not there at the link
    <p>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..!!</p><p>Anyway I have also added a .zip version of the sketch.</p>
    <p>That worked great, thanks for the quick reply.</p>
    the link opens in a file not found option.
    <p>The main code is directly available in Step 5... You can just copy or <strong>Upload it directly</strong> to your arduino board.!!</p><p>In any case I'll directly send the necessary files to you.</p>
    <p>Excellent first instructable! I love the word clock!</p>
    <p>Thank you....</p>
    That looks nice! Very well made.
    <p>Thank you... : ) </p>

    About This Instructable




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