Major updates - A much better enclosure for this clock has been designed - check out



Last month I wanted to build a special gift for my beautiful wife, Megan.  She has a teaching background in English, so what better present to make for her than a clock that uses language to tell the time for her desk at work. 


The original project that I created used a Microchip PIC microcontroller (16F877), because that's what I had in the garage.  Since I published it (http://www.instructables.com/id/A-Word-Clock/), quite a few people, including my next door neighbor (Thanks Mikal) have asked me why I didn't use an Arduino.  Having never used one, my automatic reaction to Mikal was 'Whats a one of those??"  So, I did some research and found out what an Arduino was.  Wow - they are so cool - so simple to develop for, and the barrier to entry is so low!.  I ordered one from eBay, and re-designed the clock to use the Arduino Duemilanove as the controller.

I have to admit right from the start that the Arduino is a beautifully engineered piece of work - While I am used to the PICs, because I have been playing with them for years, I do admit that there is a certain level of 'unreachability' for the beginner because of the requirement that specialised programmers be purchased or built.  The Arduino is equally powerful, comes on it's own little self contained board, and best of all is self programmable using a USB cable.


I have also listened to people who have constructed the original clock, and done away with the need to run off AC power. This clock simply uses a DC supply of 12 Volts, so you can run it off a wall wart, or off a set of batteries.  If you are using batteries, may I suggest 'D' cells, as they run forever, or a couple of 6V 'Lantern' batteries. 


Finally, I have designed the controller board so that you can construct the project with your Arduino Duemilanove board just by plugging it in.  But, if you want to recover your Arduino for something else, you can install the optional support components along with an appropriately programmed ATMega168 and a handful of support components and your project will still operate.  People on eBay will sell you a ATMega168 with a boot loader that you can simply pop back into your Arduino board.

So, here it is - The word clock - constructed using an Arduino!

I am now able to sell all sorts of components, ranging from complete clocks, through to kits, through to individual modules and components.  Please visit my web site www.dougswordclock.com for further information.

Step 1: The new hardware - Controller board schematic


My original clock used discrete transistors to drive the array of LEDs.  I have realised that while that approach works fine for a project that I have built for myself, it makes it more complex for others to build, so this new clock uses ULN2003A Driver ICs.  The ULN2003A contains a set of darlington transistors in a convenient DIP package, so there is MUCH less soldering to do. 


I have also re-designed the PCB to make construction much simpler - The Arduino controller simply plugs into the new PCB.  If you want, once you have constructed the clock, you can recover your Arduino board by purchasing an ATMega168 with a boot loader, and populate the PCB with just the new Microcontroller and a crystal.


In the spirit of Arduino development, it would be fair to say that the controller board was a 24 output LED (or relay) driver shield.  It is just as happy to turn on a big set of 24, 12 volt relay coils as it is turning on a bank of LEDs.

Below you will find the new schematic diagram for the controller board as a PDF file. 

Note that you should look at step 4 to understand what resistors to use.  Don't simply use 360R and 36R with supply voltages above 10v.  You will need to use 680R and 270R instead.

<p>Coolest clock I have ever seen, Thanks for sharing!</p>
Why not a 34 bit constant current serial driver M5450?...
<p>Something worth trying....</p><p>Really Very Innovative....</p><p>Looking forward to make one.....!!!</p>
Wat an awesome project can't wait to make it
<p>cool on the rev 3 version of the circuit you connected the ULN2003A common lines to the connector so I can be tied to the supply line and protect the ULN2003A if it is used to drive inductive loads.</p>
<p>based on the layout of the words five of the LEDs are not connected. Since they are behind the mask why would you populate them?</p>
<p>If you use the board as a relay driver you should connect the common on the UL2003A to ground to provide a fly back diode as relays are an inductive load and you can damage the ULN2003A if the the diode is not included.</p>
<p>hello Doug and thanks for your awesome project. I have made the clock but cant figure out how to stop the test funksjon and make the clock show the actual time, do i need to edit the code ?</p>
The test function is entered when the controller believes that the buttons have been held down during startup.<br><br>Make sure that the buttons are not shorted.<br><br>There was a hardware change at one stage, with the original hardware connecting the buttons to +5V, and the current hardware connecting them to ground - If you are using the updated firmware, then there is a $define early in the code to allow the use of old hardware. simply remove the comment and it will work.
<p>Good day sir ., i would like to ask what if i use Arduino uno, i would like to know the schematic of it., i'm doing this college project hope you could help me with this., </p>
The Arduino UNO should just work - Exactly the same as the duemilanove.
thanks a lot sir., i did it well :) <br>
it will work.<br>
<p>Beauty :)</p>
<p>This is amazing. it should be in the shops.</p>
Thanks for that - I have actually made a small business that sells these.<br><br>www.dougswordclocks.com It is fairly successful :-)<br>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>Great Project just Love it. .. Thank you.. </p><p>Shyam</p>
<p>hi, could i maybe get the eagle file? </p><p>it would be awesome :)</p><p>thank you,</p><p>max</p>
<p>Hello good sir! I am doing this project for my capstone at highschool and I gotta ask: what is the schematic for the control board? I'm temporarily housing a bread board with the IC chips and other components, but I would love to know what the actual schematic for the control board is so I know what connects to what. Thanks and keep us the good work!</p>
<p>Hi, Sorry for missing this comment - If it isn't too late, I can email you a schematic as well as the board layout so you can etch one yourself.</p><p>Doug</p>
<p>I cannot do programming . Can you help me ,please ?</p>
Of course I can. I can send you a pre-programmed chip if you like, or even a complete kit.<br><br>My website is www.dougswordclocks.com<br><br>Doug<br>
<p>SO COOL!!!! Better than an ordinary clock :)</p>
<p>thank you so much for your instructions. my wife has seen the qlocktwo in a store, and fel in love with it, but it was waaay out of our budget. after learning how to work wit an arduino and electronics it was an interesting learning project. with as result a beautifull clock (in dutch) and a happy wife :-) .</p>
I see that you are using the atmega 328 and the Arduino so I think that the sketch should be 2 but in 'instructable you put in one ....: (..... or the sketch goes well on both? ... Excuse the spelling .. but I use google translator, I am Italian ....; p
nice one
First of all thanks for the tutorial <br>I got no problem with the programming part but im a complete newb about electronic/circuits and i have a question: <br>since there is 19 I/O pins on the arduino and not all pins can be high at the same time why not just put the hours directly on output 1 to 4 in rows of 3 connected to transistor activated by output 5,6 and 7 ? <br>(like this guy did: http://www.instructables.com/id/Reverse-Geocache/step3/Hardware/) <br>Woulnt you be able to controll all Leds directly from the arduino without any other modules?
something like this?<br> <br> <a href="http://i474.photobucket.com/albums/rr108/gazoutg/schemeit-project_zpsee230494.png" rel="nofollow">http://i474.photobucket.com/albums/rr108/gazoutg/schemeit-project_zpsee230494.png</a>
Ahh - That aproach works well with single LEDs, but remember that each word of this clock is made from somewhere between 2 and 7 LEDs, and I decided to use 12V powered LED strips. <br> <br>Also - the clocks that I make have both hours and minutes. <br> <br>Another way of doing it is to multiples a big array of LEDs, 13 x 13, which allows you to have any word order that you want. <br> <br>Doug <br>
I used the shift register approach, as I wanted 24 words, and using the shift registers meant that I didn't have to do multiplexing. <br> <br>Simple as that!
For a version of this clock I need 5 drivers since it comes to 31 words, is there a kit with support for more display outputs than 24?
Hi, <br> <br>The board that I have designed had 3 driver chips to provide 24 outputs - I do not have any other boards. You could make your own using Veroboard?
I am fairly new to Instructables so I will have to take a look at putting it together. I definitely want to get a video up. I'll let you know when I get either up. (I tried replying but the captcha thing seems messed up)
This project is so awesome ! I'll do something like this probably in the next year... <br>thanks for sharing all the detailed informations about this
Is it possible to alter a PIC word clock to use the Arduino? I fancy playing with one, and have a love of word clocks since I built a version of your first one. <br> <br>Also, loving your new website, got some really nice clocks on the go!
It certainly is- The Arduino clocks were an extension of the original PIC project. Have you seen the PIC version?<br><br>I had to use shift registers and driver chips to replace the output transistors, as the Arduino didn't have enough outputs to drive all of the words.<br><br>Doug<br>
Probably much more harder to make this device thatn all the other ones from here....
Hi,<br>This is a complex project, but many, many people have successfully made it so far :-)<br><br>I do offer kits from my personal website if you like <br>www.dougswordclock.com<br>
i am using arduino deumilanovae, the ATmega328 version, for bootloader i used Arduino IDE, Bootloader, Driver 1.0, I've noticed that one of the red led light is blinking while the other one is not lighting up.

About This Instructable


897 favorites


Bio: I have a background in digital electronics, and am very interested in computers. I love things that blink, and am in awe of the physics ... More »
More by drj113: A Grey Hat A Programming Jig for our DougsWordClock.com DeskClock Boards The Wordclock Grew Up!
Add instructable to: