Introduction: Animated Word Clock

About: I love the challenge of building unique things. My goal is to make technology fun and help individuals build the skills and the curiosity to experiment with some of the amazing technologies we have available t…

Build your own Word Clock with an animated display. This is a simple project uses an Arduino Nano, Color LEDs and includes a stylish 3D Printed Case.

The Word Clock has three animated patterns
- Matrix style

- Typewriter Style

- Rainbow Color

The three buttons on the back enable animation style, color and time to be set.

A great addition to your home office or work space and a great gift for others. The Display provides an opportunity to experiment with various display options so there is potential to add your own custom animations.

- I hope you enjoy!!

Step 1: Gather the Materials

  1. Arduino Nano
  2. WS2812B RGB LED Module x 110
  3. DS2321 RTC module
  4. Light Dependent Resistor (Approx 8k-20k range)
  5. Resistor 10K ohm
  6. Push Button Switch x 3
  7. Vero Board 15 x 34 holes
  8. Access to 3D Printer with a build volume of 200mm x 200 mm x 70mm (Ender 3)
  9. White PL filament
  10. Mini-B USB cable - 2m length
  11. Multi-core hookup wire
  12. Bell Telephone Single-Core wire 3m
  13. Soldering Iron
  14. Silver or Black Spray paint for coating inside of Baffles

Step 2: Print the Case

The 3D design of the case has been through three iterations in the field and now I've settled on this design to give maximum transfer of light in the clock without compromising on aesthetics or build quality.

There are four components to print

  1. LED Mount - Contains the 110 x WS2812 LEDs
  2. Front Case
  3. Baffles
  4. Rear Panel

Download the STL files from Thingiverse link here and load into your slicer in preparation for printing on your 3D Printer.

I used PLA filament and printed at 210 Degrees with a print speed of 40mm/sec, no supports are required.

I printed on a glass bed heated to 60 Degrees to get the clean finish on the face.

Note: When you print the baffles there are some parts of the letters that have no attachment. For instance the centre of the letter "O". Dont worry about these because you can use a marker pen to color these in on the back of the front case if there is too much diffusion. See the final photo above.

Step 3: Build and Test the LED Array

The LED Array

The unit uses an 11x10 LED MAtrix using 110 Ws2812 LEDs which are connected in series as bus as per the Circuit Diagram.

Take the LEDs and carefully orient them in the LED Mount so that the LEDs follow the pattern and numbering provided above.

Solder the +ve and -ve connections using single core Bell Wire that has been stripped into one long chain see photo. Then carefully run one wire down the Data line and solder in place. I then snipped out the Data connection on each LED individually to make it easier to connect up.

I used hookup wire to connect each column of LEDs as per the photograph.

Testing the LEDs

Using breadboard and an Arduino Nano it is easy to test the LEDs at this stage. Connect the Arduino Nano Vin and GND pins temporarily to the LED Array then connect D11 to the Data pin.

Connect the Arduino Nano to the LED Array Data pin and connect to a Desktop device USB.

Load the Arduino IDE and then upload the code provided. The clock LEDs should run the startup Tests without any connections and therefore is a good way of testing your Array. If there are any LEDs not lighting during startup check connections and orientation of LEDs to resolve.

Step 4: Assemble the Circuit and Test

Assemble the Circuit

Now that you have tested the LED array you can assemble the circuit,

I have provided photos of the Vero Board layout so you can copy the holes and wiring layout provided. Drill out the mounting holes and check the alignment with the 3D printed read lid.

Solder in the Nano, Switches and LED first then connect up wiring as per the circuit diagram.

The DS3232 RTC clock module was installed last of all and connected with Bell Wire to the Nano as per the photo provided.

Load the Arduino IDE Libraries

These need to be added to the Arduino IDE (Integrated Development Environment) that runs on your computer, used to write and upload computer code to the physical board.

TimeLib.h

Wire.h

DS1307RTC.h

FastLED.h

Follow the Arduino IDE update library procedure to do this before the next step.

Set the Time

Use the "TIme Set" Sketch provided in this step, upload to the Nano and ensure that RTC is functioning correctly by setting the current. Then load the code provided and test the LED operation.

Step 5: Putting It All Together

Final Assembly

Finally, attach the USB cable through the rear case lid and fasten in the chord grip provided.

Screw in the mounting for the PCB. Place a sheet of plastic between the back of the Baffle and PCB to avoid any short circuits.

Screw in the back lid and you should be ready to use your Matrix Word Clock

Operation

The Word Clock has four animated patterns

  1. Rainbow Color
  2. Matrix style
  3. Typewriter Style
  4. Standard Static Display
  5. Downward Fill Style


Adjust Animation

The default animation is the Rainbow colour style. You can increment your way through the animations by holding down the left buttonfor a few seconds until white and red square fills the display. Release the button and then the animation will appear on the clock.

Adjust Colour
The default colour for the clock is Green. You can increment your way through the colours by holding down the right button for a few seconds until white and blue square fills the display. Release the button and then the animation will appear on the clock.

Auto Dimmer
The LDR provides enough sensitivity to detect dark and light environments through the white PLA casing. I have tuned this in the code to turn on the LEDs to brightest intensity when in daylight. You may have to adjust this depending on LDR values. You can do this by printing analogRead(7) and then exposing the clock to both dark and light environments then display the readings in the IDE monitor. Make appropriate adjustments in the code.

Note: If you dont want to bother with a dimmer you can forego the LDR and change the code. The variable "dimmer" has a numerical value between 20 and 100 sets the brightness. If you set this to a predetermined value by inserting this in row 176 of the code

Dimmer = 50; // Manually set brightness with Dimmer variable

Manual Time Adjustment

I recommend you use the Set Time Sketch provided to set the time accurately. Using an external USB port to power the clock gives you the convenience of doing this. The RTC will have a rechargeable battery that should retain the time for approx 24 months so there should be no real reason for manual changes.

If you have to you can increment or decrement the minute setting of the clock by doing the following.

Decrement Time

You can decrement the time by one minute by holding down the right and middle button for a few seconds until a white and purple square fills the display. Release the button and then change will be made. Remember the clock only displays five-minute variations of time so this means you will need to repeat until you see a change.

Increment Time
You can increment the time by one minute by holding down the right and middle button for a few seconds until a white and purple square fills the display. Release the button and then change will be made. Remember the clock only displays five-minute variations of time so this means you will need to repeat until you see a change.

The Display provides an opportunity to experiment with five various display options and I have only included 5.

There is potential to add your own custom animations. - I hope you enjoy!!

Arduino Contest 2019

Participated in the
Arduino Contest 2019