Some time ago I got my hands on a bunch of white 5mm LEDs from some broken LED flashlights. They were of very low quality, so I didn’t want to use them for lighting purposes. Instead I decided to build a clock from them. I started by sanding them one by one so that they can be seen from the side and they don’t blind you if you look straight into them. After that I arranged them on a piece of protoboard so that they form numbers that look like huge 7-segment displays. To give the clock a better look, I painted the protoboard with black spray paint and added a clear layer afterwards. The sanding makes the LEDs look white which provides a good contrast to the black protoboard.
The LEDs are arranged so that two LEDs form a single segment of the 7-segment display. This causes some problems with directly driving the display with shift-registers. Two white LEDs in series require more than 6 volts to fully light them. This is more than a standard shift-register can handle. Instead of using transistors to drive the display, I decided to use four SN74LS247. These chips are BCD to 7-segment drivers that can handle up to 15 volts and are driven by normal 5 volt signals. I used one of these chips for each of the clocks four numbers. Four decoders with four input signals each left me with a total of 16 data lines that I had to control. Using two 8bit shift-registers in series reduced the amount of data lines to only two (data and clock). In the end I could control the whole display with only four pins of a microcontroller: data, clock, colon and PWM for the brightness. I decided to mount the ICs and the resistors below the display so they can be seen from the front and they fill the empty area on the protoboard.
For the first tests I used an Arduino to test the display and find out how good the crystal is for time keeping. Controlling the display proved to be quite easy, but keeping the time did not. As I didn’t want to have my Arduino hanging on the back of this clock for the rest of its life, I switched to an Atmega8 for the clock’s controller. I could have chosen a smaller one, but I had this one lying around. The Atmega8 allows one to connect a watch crystal to it for better time keeping, so I decided to try that before using a RTC as time source. I tried several crystals from very cheap and used ones to a completely new bought one and they all showed quite some error. In the end I used one of the used ones in combination with the Atmega’s internal caps on the crystal pins AND some external caps. Now the clock is about one second too slow each day which can be compensated by adding one second in software each day.
The rest of the electronics is quite simple: A bridge rectifier, some caps and a 7805 for the µC as well as a 7808 for the LEDs. Two buttons connected to the Atmega8’s INT0 and INT1 with a 100nF cap each(to prevent bouncing) allow you to set the time. A resistor and a LDR from an old alarm clock allow the Atmega to measure the ambient light and dim the display accordingly. A cap connected to this voltage divider prevents quick changes in the measured light and allows smooth changes without using software for that part. The PCB that holds the Atmega8, the buttons and the voltage regulators is mounted behind the display board.
To make the clock usable, I took the clear plexi glass from a long gone 386 notebook display, sanded one side and bent it twice using a heat gun. The plexi is mounted in front of the display so that it covers the display and improves its readability. At the same time it protects the display from dust and it provides a stand for the whole clock. Because of the plexi, the time can now be read even in a bright room and the size of the numbers allows the clock to be read from far more than only across the room.
And here are the long-awaited photos: