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 http://arduino.esp8266.com/stable/package_esp8266... 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: TimeMaster.zip and LEDControl-1.0.6.zip

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.


About This Instructable




Bio: Lazy Old Geek
More by msuzuki777:Senior Moments Weather Station 5 IP Time Clock Part 2 
Add instructable to: