Overview

This project uses the DS1307 Real Time Clock with an Arduino to display the time as a series of colored arcs.

With the new NeoPixel 60 Ring, we have a perfect display for presenting the time with RGB LEDs!

Hours are represented by red, minutes by green, seconds by blue. The arcs overlap and the colors mix. Minutes and seconds are each represented by a single green or blue LED, respectively. In the 12 hour version, a single red LED represent 24 minutes. The image above represents 3:48.

To build this project you will need:

If you are new to microcontrollers and Arduino, I would recommend starting out by building the circuit using the Arduino Uno and a breadboard.

If you are more familiar with Arduino, you can use a Trinket 5V and perfboard to build a more permanent electronics project.

 

 

Building the Circuit

Solder 4 pieces of the the NeoPixel 1/4 60 Ring together, connecting GND to GND, 5V to 5V and DIN to DOUT. Butt the ends together and use a small piece of stripped wire as a 'bridge' to give some mechanical support

Leave one pair of DIN and DOUT disconnected- this will be where the NeoPixel strand begins and ends.

The ring is very delicate! So please mount onto a backing or use care when moving around!

Note that the diagram above depicts a NeoPixel Ring with 24 NeoPixels, but the same principal applies!

NeoPixel Ring connects as follows:

  • +5V → 5V on Arduino or USB on Trinket (red wire)
  • GND → GND on Arduino (black wire)
  • DIN → Digital 3 on Arduino (blue wire)

DS1307 connects as follows:

  • +5V → 5V on Arduino (red wire)
  • GND → GND on Arduino (black wire)
  • SDA → Analog 4 on Arduino or #0 on Trinket (green wire) 
  • SCL → Analog 5 on Arduino or #2 on Trinket (orange wire) 

 Assemble the DS1307 breakout following these instructions.

 

Code

Important note: when running this code, you should probably use an external power supply (say 9VDC into the Arduino). When I ran the code on USB power, the NeoPixels drew too much current and this caused the RTC to provide strange numbers to the Arduino.

Download the code and uncompress in your Arduino sketch folder.

This Arduino sketch relies on a few Arduino libraries:

Follow the DS1307 RTC breakout tutorial to learn how to install the RTC library and set the time on the DS1307 RTC.

You will also need to install the NeoPixel library.

The DST_RTC library is used to keep the time accurate for Daylight Saving Time. 

See the following tutorial to learn how to install Arduino libraries.

You can edit the #define DAYBRIGHTNESS value to change the maximum brightness. This value can be from 0-255 although with 0 you won't be able to see anything.

The clock will be dimmer at nighttime. You can adjust the settings to define between which hours the clock should operate at a dimmer setting.

Finishing It Up

This is the back of the clock, pictured here with the discontinued USB Boarduino. As stated before, this project works great with the Trinket 5VArduino UnoMetro or other Arduino compatible microcontroller board!

I used a spare circular piece of black plexi to hide the electronics behind, since I'm just hanging the clock near a desk.

If you want to you can create a more sophisticated enclosure for this clock. arradan created this enclosure to 3D print on Thingiverse!

This guide was first published on Jul 01, 2014. It was last updated on Jul 01, 2014.