Building an Arduino LCD Clock

The first step in my Arduino monitored / controlled orchid vivarium is giving my Arduino the ability to track time with reasonable accuracy and display information on an LCD.  I went with a Boarduino for ease of prototyping, but the final build will probably use an Uno or Mega.

Components as built on a breadboard
Bill of Materials
A lot of my supplies were bought from Adafruit Industries.  I've been very pleased with everything I've ordered from them and the tutorials/instructions are excellent.  I bought an LCD power supply on Amazon because eventually I'll want to run 12V computer case fans.

Description Cost
Boarduino $17.50
FTDI To USB Adapter $14.75
16x2 LCD $9.95
LCD Backpack $10.00
Real Time Clock (DS1307) $9.00
12V 6A Power Supply $8.62
Total $69.82

Components with logical connections 

  1. The 5V pin of the Boarduino is connected to the 5v pin of the DS1307 breakout and the 5v terminal of the LCD backpack.
  2. The ground pin of the Boarduino is connected to the ground pin of the DS1307 breakout and the ground terminal of the LCD backpack.
  3. The A4 pin of the Boarduino is connected to the SDA pin of the DS1307 breakout and the DAT terminal of the LCD backpack.
  4. The A5 pin of the Boarduino is connected to the SCL pin of the DS1307 breakout and the CLK terminal of the LCD backpack.

I've created a github repo to track the project in general:

The sketch specific to the LCD RTC clock is available here:

Clock pictured mid second change

The next step is adding a temperature and humidity sensor to the circuit and replacing the banner output with those readings.


  1. I just finished a similar project using the same RTC module. I've posted my code on github as well - you may find a few useful functions: https://github.com/azrobbo/Arduino-Clock-Seven-Segment

    1. Oh, cool! I took a quick read through your code - I like the idea of the chimes and the menu. I was also thinking of using the NVRAM on the RTC for storing prefs, nice to see it works well for that and cool idea with the check byte!

  2. Thanks for your feedback.

    The sound has been cooler than I ever imagined. Having it beep after initialization is a neat thing (and becomes the "happy sound" if you're having problems in your init code, as I was for a while). Its also useful when clicking the buttons through the menu to get a small audio click as feedback.

    After the usefulness, and fun, that I had with it, I've decided to include it on all of my future products. I have a dozen or so very small Citizen brand speaker designed for cell-phones - Model #CHB-04D (8.7mm x 8.7mm x 4mm). I drill a very small hole somewhere in the case and line it up with the small hole in the side of the speaker, then Sugru the whole thing in place. Works great & I highly recommend it!

    I also recommend the NVRAM on the 1307; it is super simple, and works well. The only downside is not all other RTC have on-board NVRAM, so it could make it harder to change your design later. For example I was thinking of using the chronodot in another project, so I can use 3.3V. However, I discovered that the chronodot doesn't have any onboard RAM, so I would need to stick it in the AVR's EEPROM instead.

    I was an easy fun project. I didnt have any major problems, and you can see the few that I did by reviewing my changelog - which is basically a big log :-).

    Good luck!

    1. You're welcome - thanks for sending me the link to your code and for the speaker info - I'll have to order a few of those speakers! Is there a source you would recommend? (I did some googling and checked mouser and digikey, no dice)

      Thanks! :)