Design and 3D Print an RGB Word Clock




About: Electrical Engineering Student

A few months ago, I decided to make a word clock as a homemade Christmas gift for my grandparents. The main challenge I wanted to give myself was to 3D print the entire clock, except for the electronics.

This instructable will follow a slightly different format, since I chose to do a lot of optional things. Although my design may differ from the clock you intend to create, the steps below will work universally for designing your own.

Step 1: Required Materials

The materials for this project completely depend on what type of clock you want to create. As a guideline, here are the materials I used:

- Wood PLA (around 400-500g) = $15

- Black PLA (around 250g) = $6

- 100x Kuman ws2812b LED (NeoPixel clone) = $22

- Arduino Pro Mini clone = $3

- microUSB breakout board = $0.50

- DS3231 RTC breakout = $28

- 5V 1A microUSB power supply with switch = $10

- 2x micro button = cheap

- 3x 4.7k resistors = cheap

- Various wires = cheap

If you don't mind having a less precise time, you can save $25CAD by using a DS3231 clone instead of a genuine board.

Step 2: Determine the Layout

This was not the first step I did, but it should have been. Determining the layout of the clock will allow you to determine the amount of LEDs needed, as well as both the inner and outer dimensions of the case. A 10x10 layout as seen above will easily fit all of the necessary words, and has ample room to fit in a few custom phrases. Due to the limited space, I had to orient some words vertically, which made the clock a little more tricky to design.

Determining the 'hierarchy' of the words is also important. I did it by hand on a simple 10x10 table, which should work for most cases (even if it's not the prettiest). In all cases, the first few words need to follow the order below - words on the same number can be swapped around:

1. IT

2. IS



***FIVE must come after TWENTY

The remaining words representing the hour can be in any order, because they are always the last word in the phrase.

Step 3: Determine the Size of the Clock & Create the Letter Grid

The second step is to determine the overall size of the clock. This is extremely important because it allows you to budget the size of the letter grid within the overall design.

In my case, my delta printer can comfortably print a 20cm^2 square. Taking this into account, I budgeted a 16.5cm^2 area in the middle of the clock, which allows a 10x10 grid of characters which are each assigned a 1.5cm^2 square. Since I was using standalone LEDs, the spacing was not a concern for me. If you are using an LED strip (recommended) space the letters apart at the same distance as the LED spacing.

In order to transfer this into the word clock model, it needs to be both symmetrical and printable. In order to accomplish that, I downloaded the TC_LaserSans font and used adobe illustrator to center each of the letters in the middle of their designated squares. The easiest way to do this is to create 10 individual 10x1 vertical columns of letters and specify the vertical spacing, since each letter has a different width (but not height). You should be able to do the exact same using GIMP, or other free software.

Once the design is finished, export it as either a .dxf or .svg file.

Step 4: Determine What Your Clock Will Look Like

I can't offer much advice on how you want to design your clock. In my case, I wanted a simple 20x20cm clock, with a flat face and rounded edges. I also decided to print it in wood filament, in order to stain it a to a nice shade afterwards.

The important part is having a flat face which can stick to the print surface. You do NOT want to be using support material unless absolutely necessary, due to the fine detail of the surface.

It is a very smart idea to design all of the clock components at once, and make modifications after printing them one by one. I did not to this, and wish I did.

Step 5: Design & Print the Clock Body

I made a very simple clock face. There are two main things to do, regardless of your design or CAD program:

1. Import your .dxf / .svg file and extrude it through your clock body in order to create the letter grid

2. Plan your mounting system in advance

I wasn't sure how I was going to mount the clock, so I created two slots and screw holes to accommodate a stand or wall mount. I also added space for two buttons, which added the flexibility to add something like extra modes and a color selection menu.

Printing the clock was a little bit tricky, due to the fact that I had to find a perfect balance of printing speed - the wood filament I have tends to melt and stick if it's left heated too long, but the letters themselves need to stick to the print surface. I ended up printing the first layer at about 35mm/s, which worked fine. No jams! (on this part at least)

Step 6: Design & Print the LED Mounting System

The letter spacing is already determined from step 2, which makes designing the LED mount trivial. Simply space the LEDs at the same distance as the letters, and use your creativity to make a system of keeping them in place.

In my case, I created a grid with a spacing of 1.5cm. The LED mount needed to attach to the clock base somehow, so I designed it to press-fit into the back of the clock base, leaving 1cm for a diffuser.

When I was creating the clock, this was actually the first part that I created, hence the comment about jams in the previous step. It was not pretty, and I had to disassemble my entire print head and thoroughly clean it afterwards.

Step 7: Design & Print the Diffuser / Light Divider

The last mandatory part to create is the light divider and diffuser. This prevents bleed between the letters. It needs to be exactly the same depth as the distance between the LED mount and the letters in order for it to work properly.

I decided to do the divider in Illustrator, since it has much better features for creating patterns and I couldn't be bothered to make 100 squares by hand. Once again, I exported as a .dxf and created a part from it. For the diffuser, I decided I would rather cut a piece of photo paper instead of being a purist and printing it.

3D printing the part is very handy, due to the abundance of shiny black plastic. This is a fairly simple part to print, but I had a major issue with warping due to a roll of counterfeit PETG. It is very important to have NO WARP on this part, because it will allow light to bleed between letters.

Step 8: Assembly 1: the LED Mount

Use an LED strip, please. I wish I did, this took a tremendous amount of time.

I ordered 100 individual ws2812b LEDs, but they came attached together and needed to be broken apart. As a result, each one needed to be filed round in order to actually fit in the LED mount. Next, I needed to cut and strip 300 small pieces of wire to solder the LEDs together. Finally, I needed to perform 600 solder connections while being VERY careful to not accidentally short out the wires located 1mm from each other.

This step is where I stalled the most. An LED strip would have performed the exact same function, while being much easier. Eventually, I just decided to do it in one day.

Step 9: Assembly 2: the Electronics

The electronics are fairly simple to wire. The photo is using the breadboard setup for more clarity, although the electronics will go in a small box attached to the back.

LED Strip:

GND -> GND (Arduino)

5V -> VCC (Arduino)

Din -> Pin 6 (Arduino)


GND -> GND (Arduino)
VCC -> VCC (Arduino)

SCL -> A5 (Arduino)

SDA -> A4 (Arduino)

microUSB Breakout:



The buttons are completely optional. They simply use a pullup resistor setup to return either a high or low signal to the Arduino.

Step 10: Design & Print the Mounting System

How you choose to mount and display your word clock is totally up to you.

I created a stand which holds the clock at 15 degrees, with a mount for an electronics box which conveniently holds the electronics all in one place. After adding a wire harness, it eliminates most of the cable mess at the back of the clock.

An important lesson to be learned here is to make sure that your pro mini clone has a bootloader installed before you solder everything together.

Step 11: Programming

Programming the word clock is where most of the creativity goes.

EDIT: the code I have is essentially complete, and will not likely be changed further. It can be found at:

With the way I soldered the LEDs, the letters essentially form a continuous string that snakes back and forth - or at least from the code's point of view. In order to greatly simplify the rest of the program, I created an individual void function for each word on the clock, which can be passed a value which corresponds to the color shown. The result is that it is possible to type out a logical phrase within a function ( ie. it(); is(); ten(); ) and have the same phrase appear on the clock.

The code essentially reads the time value from the RTC and draws the logical phrases from that. Additionally, I added a fairly simple statement which will check the current date and display a birthday message if it is either of my grandparents' birthdays.

If you have any questions, feel free to leave a comment and I should be able to help you out.

Step 12: (Optional) Final Touches

Since I printed out of wood filament, I decided to stain the body. Unfortunately, the stain was nearly the exact same color as the filament itself. If I get a nicer wood stain, I'll update this picture.

Step 13: Finished!

By this point, there is a fully functioning word clock which is easily programmed. Although I couldn't quite stain the "wood" to a nice dark walnut color, it turned out quite similar to the render.

Thanks for reading!

LED Contest 2017

Second Prize in the
LED Contest 2017



    • Frozen Treats Challenge

      Frozen Treats Challenge
    • Sensors Contest

      Sensors Contest
    • Fandom Contest

      Fandom Contest

    18 Discussions


    10 months ago

    Very nice project, but i can't see the led frame stl file


    Tip 11 months ago

    For those who were asking:

    I haven't tested this new design yet, but it should work well enough. There isn't a stand or electronics box yet so you might have to get creative.


    1 year ago

    Congrat, really nice project !

    Did you progress on doing a frame for common strip made of ws2812b leds ?

    Any chance to get .stl files ?



    1 reply

    Reply 11 months ago

    I have some time now, so I'll try to get a generalized frame done in the next few days or so. If I'm allowed to make a new instructable, I will post it there and reply with the link.


    1 year ago

    Nice project, I think I found a mistake though. Did you mean WS2812b instead of ws2182b LED's?

    1 reply

    Reply 11 months ago

    Oops, yeah that was a mistake. Thanks for pointing it out.


    Reply 1 year ago

    Hi do u have an instructable on this or any link for details?

    would love to shrink the clock


    Question 1 year ago

    Hi. Great write up and the clock looks superb. Just one question. If I used an Arduino Uno and DS3231 would I just use Pin 6 and the RTC connections? Not worried about buttons as could set time in IDE. Sorry for noob question. Thanks.

    1 answer

    Answer 12 months ago

    Just finished it, works fine with Uno and DS3231. Pin 6 for the LEDs and A4 and A5 for the clock. Thanks.


    1 year ago

    Hello Robert,

    Well done, looks like my clock but something more professional look.

    It is a pity That the LEDs are so fustrating.
    I personally think it works well and you are not bound by fixed distances.
    You could have saved yourself a lot of work by taking a piece of wire at the junction, soldering on the left and right led and then the intermediate.
    Both minus connections and also the two plus connections on the LED are interconnected internally, so the same.

    If you add the full rainbow effect, the clock will get an even more vivid look and you'll get an even better effect of the clock.


    1 reply

    Reply 1 year ago

    Jan is de beste, ik ben en folower van je en een klok junk


    1 year ago


    What I'm missing is the schematics i.a. driver & mux and so on. Where I can get it? Also I can't find the hexdump of the eeprom!


    1 year ago

    This is excellent, could you maybe post the stl's or design files? Maybe thingiverse?

    2 replies

    Reply 1 year ago

    I should be able to post the files, the problem would be that (due to being a CAD amateur) the design has a lot of inconsistencies and cannot work as a truly parametric design if someone decided to modify the size. It would serve as a design reference more than anything else.

    My LED choice was a terrible idea. I will likely make a new, more basic version of the clock with 17mm LED spacing in order to accommodate most ws2812b LED strips. I'm not sure when I will be able to do that, but I will post it here once I do.


    Reply 1 year ago

    That is actually a fantastic idea (ws2812b) and something I am betting a LOT of people would rush to make. You definitely should do that if you can. You'd be my hero at least :)

    That said, posting the design files as is, just completes the instructable. The point of this site isn't really just to show off what someone has made it's to help others do the same thing (and be inspired).

    Following someone else's path can be just as empowering as creating your own for some people.

    It's kind of like when you go to YouTube and someone shows off a beautiful "DIY" project, you really want to make it, but then during the video you see the guy has 1000's of dollars in equipment, specialized tools and dozens of years in design and mechanical engineering experience and he says "you can do it too!".

    Don't be that guy (lol)


    1 year ago

    This looks really cool, nicely done!