Introduction: IP Time Clock Part 2

So Lazy Old Geek (LOG) made an electronic clock:

The advantages are that it’s pretty cheap, it gets the time off of the Internet, it adjusts for Daylight Savings Time and doesn’t require a battery to remember correct time.

I wanted to make a few improvements:

Wanted bigger numbers, it was hard for me to read the time.

I wanted to know the day of the Week, since I’m OLD it’s harder to remember.

And I wanted seconds displayed.

Step 1: Design

The Clock design is basically the same as the first one. I decided to divide it into two different PCBs, the base and 6 Digit display.

The MAX7219 can drive up to 8 seven segments so I used six for the clock and one for the day of the week. Instead of a seven segment, I used individual LEDs for the day of the week. See schematics.

For the Day of the Week, I bought a pill minder that has seven containers. See picture.

I cut off the covers, painted the interiors and installed an LED in each pocket.

Problem: Make day visible.

Solution: Well, I tried a lot of different ideas. I printed out a strip with three letter abbreviations on a transparency, tried reverse (clear letters on dark background). Didn’t work very well. Finally, I tried single letters on white paper. Works pretty good.

Eagle Cadsoft files are zipped.

Step 2: Problems

Well, I used this in bedroom for a while. In the middle of the night, the thing I didn’t like about it was the seconds changing every second.

However, I wanted the seconds sometimes. This is rather dumb, but when I get up, I like to gargle and to gargle for 30 seconds. (Actually, this was probably from a "Listerine" commercial).

Solution: Well, the solution wasn’t too bad. I set up the software Sketch so the seconds would be lit only when in the A.M. until about when I went to sleep.

Here is some of the added code:

// 0 is undefined, 1 is Sunday JPF, JPE, JPB, JPA, JPD, JPC, JPG

byte DayOfWeek[]= {

B00000000, B00000010, B00000100, B00100000, B01000000, B00001000, B00010000, B00000001


if ((hour() >= 6) && (hour() < 23)){


lc.setDigit(0,5,(second() % 10),false);


lc.setRow(0,6, DayOfWeek[weekday()]);

Problem: I downloaded the latest Arduino environment (1.6.7 at the time) and tried to load the sketch. It wouldn’t load.

Solution: Well, I had recently restored a laptop so I load Arduino 1.6.5.

Went to this website

and followed the instructions

Start Arduino and open Preferences window. Enter into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas. Open Boards Manager from Tools > Board menu and install esp8266 platform (and don't forget to select your ESP8266 board from Tools > Board menu after installation).

Also added: and

Open LEDcontrol.h with Notepad++

Change: #include <avr/pgmspace.h> to

#include <pgmspace.h>

(I don't know why I had to do this, but it worked)

To load the Sketch to the ESP8266, see the other Instructable.

Sketch is zipped.

Clock works pretty good.


ManelM made it! (author)2016-04-10