Personalised Word Clock




About: Crazy about technology and the possibilities it can bring. I love the challenge of building unique things. My goal is to make technology fun, relevant to everyday life and help people succeed in building coo...

Build a unique personalised gift that’s cool and reflects the character of the recipient.

What’s different about this Word Clock is that it is small enough to sit on a bedside desk, displays the recipients name and has personalised messages that appear at different times ie. Happy Birthday, Carpe Diem, Good Morning or whatever you choose.

Great for people of all ages who enjoy something a little unique.

Please note: This a variation of the traditional word clock design. Credit must be given to the guys who came up with the original design. In particular these two instructables provided inspiration for this project

Step 1: Gather Materials

The most important component for this project is a good enclosure. Most department stores will have a variety of low cost clocks that would be suitable. Look for funky looking clocks that have a glass front with a depth of at least 4cm.

Ideally you are looking for something that is a "shadow box" style enclosure which has a front aperture of at least 13cm x 13cm. The enclosure also needs to be able to be easily dismantled and the internal clock removed.

The electronic components are included in the list above. I tried to minimise the number of the components so went for an Arduino Mega to drive the LED array directly. See the circuit section for further details.

Step 2: Build Arduino Shield

Arduino Shields are boards that can be plugged on top of the Arduino PCB extending its capabilities.

Building this simple shield enables you to connect the Arduino to the LED array, buttons, RTC and other components without having to solder directly to the board.

Cut the header pins to size and push into the Arduino board in the correct position as per the Circuit Diagram.

Then push the header pins into the shield to position the pins in the correct holes as per the picture above. Once you are sure they are in position solder the pins into the shield.

Remove the shield from the Arduino Board and Solder the 100 ohm resisters as per the circuit diagram and be careful to ensure that you have enough clearance when its plugged into the Arduino.

Step 3: Build the LED Display Board

1. Cardboard Cutout

The Word Clock display is made up of an array of 13x13 LEDs that are mounted on a cardboard cutout that fits snuggly into the front of the Clock Case. It is best to use cardboard because it wont melt when you are soldering wires to the LEDs and its easy to work with.

Use the dimensions of the aperture of the Clock case to trace out the required shape and cut out a piece of 3-4mm thick cardboard.

2. LED Grid

Use the enclosed template file to create 11cm x11cm grid to position the LEDs on the display board. Enclosed is a template that can be modified and printed out then glued onto the cardboard.

I used a free version of a draw program called LibreOffice Draw that you can download from here. LibreOffice The files can be modifed and resized using this tool. You can use the export feature to get different formats.

3. Mount the LEDs

In the example I used high intensity white surface mounted LEDs that I cut from a 3v LED strip. My advice is just use high intensity 3v Strip LEDs as they are easier to mount and don't require as much soldering.

(I recently did try 5mm LEDs and had a high LED failure rate and a lot of frustration with soldering so went back to strip LEDs)

The key point is that you join the Anode (+ve) side of each LED in each vertical column together on one side of the cardboard. Then pass the Cathode (-ve) through to the other side of the cardboard through a hole and join each row together on that side.

What you end up with is 13 Anode strips on the LED side vertically and 13 Cathode strips on the other side horizontally.

These are then connected to the Arduino Shield from the previous step as per the circuit diagram.

4. Test the LEDs

I recommend at this point testing all of the LEDs to ensure that there are no faulty devices/connections. To test use a 5v-9v DC power source and place a 2.2K ohm resister in line with the positive supply. Its important to do this to protect the LED from over current and burn out.

Connect the negative terminal to the LED Cathode and the positive terminal via the resister to the LED Anode of to test out. (Note ensure the Arduino Board is not connected when you do this). Make sure all the LEDs function and operate at the same brightness.

Step 4: Build the Arduino Circuit

1. Overview

I tried to avoid the complexity and time required to have to put LED drivers in the circuit so for this reason have used an Arduino Mega to drive a 13x13 array of LEDs. The Arduino circuit and code reads the RTC time and then draws the display by turning on one LED at a time. It does this by addressing each LED systematically using X,Y coordinates. The LEDs are protected by 100 Ohm resistors and being that they are only activated individually this means the current is limited.

2. Planning

Position the components and carefully plan the mounting of the Arduino PCB, the Shield, Buttons and RTC PCB.

Ensure that the Arduino Board can be accessed externally for programming purposes as well as the external power socket. Do this by ensuring the Arduino power socket and serial port are close to the case edge. Th Arduino PCB will also require a screw fixing so that the power can be plugged in an removed without the Arduino PCB moving around.

3. Connecting up the components

Use hookup wire to connect the Arduino PCB, the Shield, Button PCB and RTC PCB as per the diagram. Play particular attention to the wires and position of the components to ensure they are fit snuggly and securely in the case.

Step 5: Test the Unit

Download Arduino IDE version 1.06 on your desktop machine
There are two additional libraries that need to be installed before setting the time and testing

(i) Arduino time library - see attached zip file

(ii) DS1307RTC library - see attached zip file

1. Set the time in the RTC

I used the following instructable code to set the current time on the RTC pcb.

2. Test the LED Array

Download the file"TechKiwi WC LED Array test.txt" and load to test the LED Array. When running each row of LEDs should light from top to bottom of the Clock.

3. Test Clock Functions without Dimmer and Time Set Buttons

Download the file"TechKiwi WC V5.7 TEST 2 code.txt" " and load to test the basic Word Clock functionality. When running the time should display however dimmer and time set functions do not work.

4. Final Test the Clock

Download the standard code provided on this page "TechKiwi WC Arduino Code.txt" and download into the Arduino. Once loaded the clock should be functioning with LEDs lit with the dimmer and time set functions working.

UPDATE: Ive included a new version of code that provides a nice animated effect, where the clock re-draws the text slowly every minute. Try it out and let me know what you think

Step 6: Build the Front Display

1. Build the Baffles

Measure the distance between the LED display board and the case glass. Cut 30 strips of A4 Black cardboard to the dimension of that distance.

2. Cut slots into the Baffles

Stack the strips of cardboard into a flat bundle and use tape to hold them together firmly.

Carefully mark the distance between each square on the top of the bundle. When marked correctly there should be 14 marks with the distance between them aligning to the LED panel.

Using a Band Saw or a Junior Hacksaw cut into the bundle 50% of the way through the mark as per the diagram.

3. Assemble the Baffles

Carefully dismantle the bundle and systematically assemble the Baffles as per the pictures. Trim the width of the baffles to fit into the box and ensure there is enough clearance on all sides. For the name TEXT cells remove the baffles as per the picture to ensure that they are not visible when illuminated behind the name TEXT.

4. Glue the Baffles onto tracing paper

The baffles are glued directly onto an A4 sheet of tracing paper over a stencil. Use five minute two part epoxy glue. Smear on baffle edges and hold in place over tracing paper until glue dries. This ensures the baffles are rigid and ensures that there is no light escaping between each cell when a LED lights.

5. Assemble the Word Clock Display

Using the template provided modify the text as required and get three black transparencies printed to the correct size. Get them printed in reverse so that when pushed against the glass the toner side is facing away from the glass. This gives a deeper black on the front display. I went to a local print shop and had this done in one of their colour laser printers which cost less than $4. My advice is to get about 9 copies in case you damage or make mistakes when cutting.

Cut the three sheets to fit the front panel of the box. trim the second and third layer progressively smaller so you can tape them down on top of each other once they are perfectly aligned.

Ensure you leave two sides open so that you can slide a square of tracing paper between the first and second layer of the transparencies.

Finally take the tracing paper that is glued to the baffles and trim to fit on top of the transparencies.

Carefully align the baffles on top of the transparencies tape into position making sure all letters have no obstructions or overlap. Hold up to the light to double check any issues and shake out any loose material.


Step 7: Final Testing

1. Set the custom birthday date

Use the Arduino tools to edit the provided code and change the date for the Birthday to align to the recipient or owner of the clock.

2. Test the clock transitions

You can use the tool mentioned previously to change the RTC date/time to check that all transitions occur.

Step 8: Adding an Alarm

There have been a number of requests to add an Alarm to the word clock. I have produced a new circuit and new code to accommodate this if you would like to build this version. The Alarm Time is saved once set and will not be impacted by power cuts. i.e Clock will remember Alarm time set if power is restored. The Alarm is produced by a Piezo Speaker.

1. Additional Parts

The additional parts required are

  • 1 x Black Push Button for time/alarm set
  • 1 x 10k Ohm pullup resistor
  • 1 x Piezo Speaker

2. Time Set Operation

By pushing the Time Set Button once the clock will briefly display "TIME SET" mode and allow the increment and decrement of time using the plus and minus buttons. AM or PM is indicated in this mode by the word "MORNING" showing in this mode for AM.

To exit this mode,once the time is set, push the Time Set button once more.

3. Alarm Set Operation
Enter the Alarm Set Mode by pushing plus and minus buttons concurrently. This mode is indicated by "AL" text showing on the clock. To change the Alarm Time, use the plus and minus buttons.

In this mode if the Alarm is Armed when the word "SET" will show on the clock as well as the Alarm Time.

The Alarm can be Armed or Dis-armed in this mode. This is done by holding down the plus and minus buttons concurrently. When dis-armed the word "SET" will not show on the clock.

AM or PM is indicated in this mode by the word "MORNING" showing in this mode for AM.

To exit the Alarm Set Mode press the Black Set Button.

4. Disabling Alarm when it sounds
This can be done by pushing any of the three push buttons.

Tech Contest

Second Prize in the
Tech Contest

4 People Made This Project!


  • Growing Beyond Earth Maker Contest

    Growing Beyond Earth Maker Contest
  • Pets Challenge

    Pets Challenge
  • Fandom Contest

    Fandom Contest

154 Discussions


1 year ago

Hello there. First, great project! I'm currently in the gathering supplies phase, but while doing research i discovered that resistors are connected to the anode while you had them connected to the cathode. Wouldn't the current fry the LED before it gets stepped down by the resistor? I could be completely off, but let me know if i'm right or wrong.

1 reply

Reply 1 year ago

No problem a good question. The resistors are in series with the LEDs so whether on the Cathode or Anode does not matter they will limit the current. The LEDs are only activated individually when the X and Y coordinates in the matrix are correctly supplied by the Arduino so this removes the need for resistors on both Anode and Cathode side of the matrix. Hope this helps and good luck with the build.


2 years ago

I really want to make this clock, but I have a questions for you.
-Where I can buy the LED Strip used in this project?
-Where I can buy the Clock frame?
-For printing the Grid, I will use the cardboard for printing?
Thank you.

2 replies

Reply 2 years ago


You can get led strip through Amazon or a local provider. The Case was from a department store or dollar store. You have to shop around for this see the recommended dimensoins in instructions.

Cardboard baffles is what I used so you just need cardboard and a sharp knife. Hope this helps.


Reply 2 years ago

Noted. Thank you so much for answering my questions. It will really help me in doing this word clock. Cheers.


Reply 2 years ago

Thank you for the answer. To be honest i am really confused about how you can control/address this LEDs like they were WS2812b LEDs. İ dont see any transistor/mosfet. Or is it the Arduino Mega which make it possible to control all LEDs individually although they were connected together?


3 years ago

Hi Techkiwi i finish test, it's ok. I have change language in italian, and part program. Now Made A4.

1 reply

3 years ago

It'ok i connected the push button and the led turn on same the time. Thanks

1 reply

3 years ago

On display led i have all led on. when i test array it's ok. Sorry for much problem.

1 reply

Reply 3 years ago

If the Time Set Push Buttons are not connected then all LEDs will appear as on. This may be a cause.

Try loading the test code in section 5.4 above using the link below

Send me a message on the results.


3 years ago

I have correct time on seriale monitor when load the sketch from link. After when load the code with libraries, in serial monitor i have only this: RTC HAS SET SYSTEM. No have time day and Hours.

1 reply

Reply 3 years ago

Under normal operation on startup the message "RTC has set the system time" will display on the Serial Monitor.

What is displaying on the LED Clock LED panel?


3 years ago

Hi TeachKiwi where installed the libraries additional. The libraries is the same insidie the code. I don't undstand. Sorry thanhs

1 reply

Reply 3 years ago

when you load the time set sketch from this link

can you video the results and send me a link so I can view


3 years ago

Dear TechKiwi congratulations!! I have problem with the serial monitor. I have only RTC has set time system. I haven't the time and hour. the rtc is ok because when i load the rtcset i have the hours and day and years. Please i need the you

1 reply