I did it the hard way not using a Arduino but a stand alone micro processor, a PIC18F2550. This involved digging down into the registers and timings of the Micro to write the code, some of which contained assembly.

This is all great knowledge to have and has held me in good stead as it makes working with Arduino childs play. Most of the work has been done by the use of third party libraries whereas before I wrote my own library code.

This clock was designed to emit light out from the periphery onto the wall it is attached to using WS2812B individually addressable RGB LEDs spaced at 144 per meter. This gave me a clock diameter of 200mm, something I could make myself on my 3D printer.

It has a stunning effect, particularly at night or in a darkened room, light shines out about 500mm giving a total razzle-dazzle of over a meter diameter. The patterns are amazing.

The clock displays hours (blue), minutes (green), and seconds (red). Also displayed is the date on a 8 digit 7 segment display and the day of the week in a list form.

The clock is controlled by smartphone over WiFi using Blynk app and a local Blynk server running on a RPi 3.

The use of a local server for Blynk is optional and setting this up is not part of this instructable. The web hosted Blynk can be used after creating an account at www.blynk.cc and downloading the app.

There is a load of info on using Blynk on their website, so it is not part of this instructable.

At a later step in this instructable there is a QR code to scan, you will then have my app on your phone.

The app has controls for showing the clock or patterns (with LCD feedback on the app), the ability to set your time zone wherever you are in the world and get the time via an NTP server. It can also be set to sleep.

There is a Real Time Clock module with battery backup providing time/date functions to the Arduino.

The firmware on the NodeMCU-E12 in the clock can be updated over the air (OTA).”

Link