My recreation of a colourful clock with date, time, temperature, moonphase, forecast and alarm.

Similar projects worth following
I saw a similar product online and liked the look of the colored areas and the way the non-active LCD segments were visible. I created my own take on it, with different form factor, using a custom PCB, Arduino Nano, 480x320 LCD, SPL06 sensor, RTC etc.

The graphics are done by creating coloured BMP files representing, for example, a 7-segment digit. Each segment has a different colour and some Python code converts them into run-length-encoded data arrays which are included in the sketch. Colour variations within the segments below indicate areas for block compression vs line compression.

The weather "forecast" is done using the Zambretti Forecaster algorithm, displayed as either an icon or the Zambretti text.

The assembly is a stack of two identical boards (minimum or five per order!), one is used as an adaptor connecting a Nano to the LCD shield and has the RTC and buzzer. The other has the sensor, buttons etc. An Acrylic sheet protects the LCD. The boards are separated with brass stand-offs and connected by a header/socket strip.

The board is here. Pins.h has an ASCII schematic.

The code can also run on a 320x240 LCD and use touch instead of physical buttons.


Laser-cut plates SVG. for 3mm clear acrylic. Lines are super fine!

svg+xml - 3.51 kB - 04/22/2024 at 19:05


  • 1 × Arduino Nano
  • 1 × 480x320 LCD ILI948x driver
  • 1 × SPL06 Pressure & Temperature sensor, I2C
  • 1 × DS3221 RTC, I2C
  • 1 × Piezo Buzzer 5V active

View all 9 components

  • 1

    There are two copies of the board, front and back.  The Nano is soldered directly for the top side of the front board.  Header sockets are also soldered to the front side and the LCD shield is inserted into them, over the Nano.

    The RTC and buzzer are soldered directly to the underside of the front board, along with the connecting header.

    The back board top side has the SPL06 and the connecting socket strip

    The underside has the two push-buttons and the slider switch, plus the power connector.

    The two boards are joined by the header/socket strip and supported with standoffs.

View all instructions

Enjoy this project?



sdmilliken wrote 04/28/2024 at 01:04 point

how much adaptation would there be for a Giga the matching screen?

  Are you sure? yes | no

Mark Wilson wrote 04/28/2024 at 02:26 point

Well, the LCD shield would probably just work and you'd still have access to pins for sensor, RTC etc

  Are you sure? yes | no

Mark Wilson wrote 04/29/2024 at 06:56 point

I can confirm the clock face works with the shield plugged into a *Mega*, but needs

to look right.  On a Giga you might need to alter the direct register access in ILI948x.cpp. The PCB is no use to you. See the other pin assignments in Pins.h, adjustments would be needed there too probably

  Are you sure? yes | no

David Plass wrote 04/24/2024 at 16:24 point

Gorgeous display with just the right amount of faded segments.

  Are you sure? yes | no

Mark Wilson wrote 04/25/2024 at 23:04 point

Thanks. Yeah I like that look too.  It can be turned off with a define in the code.

  Are you sure? yes | no

Paolo Chiarlone wrote 04/24/2024 at 16:00 point

Hey Mark is your intention to share the code and parts list for this? Thanks

  Are you sure? yes | no

Mark Wilson wrote 04/25/2024 at 00:13 point

The code is in the linked-to GitHub repo. I'll work on a parts list

  Are you sure? yes | no

Mark Wilson wrote 04/25/2024 at 23:05 point

I've added a parts list

  Are you sure? yes | no

Paolo Chiarlone wrote 04/26/2024 at 01:39 point

thank you!!!

  Are you sure? yes | no

Rudolf Usselmann wrote 04/24/2024 at 01:27 point

Absolutely love it !!! Do you sell these ? 

  Are you sure? yes | no

Mark Wilson wrote 04/25/2024 at 23:04 point

Thanks. Hah, no not at all, where would I find the time? :-)  Purely for my own enjoyment.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates