Binary Clock Would Make Doc Brown Proud

Binary Clock

[Brett] was looking for a way to improve on an old binary clock project from 1996. His original clock used green LEDs to denote between a one or a zero. If the LED was lit up, that indicated a one. The problem was that the LEDs were too dim to be able to read them accurately from afar. He’s been wanting to improve on his project using seven segment displays, but until recently it has been cost prohibitive.

[Brett] wanted his new project to use 24 seven segment displays. Three rows of eight displays. To build something like this from basic components would require the ability to switch many different LEDs for each of the seven segment displays. [Brett] instead decided to make things easier by using seven segment display modules available from Tindie. These modules each contain eight displays and are controllable via a single serial line.

The clock’s brain is an ATmega328 running Arduino. The controller keeps accurate time using a DCF77 receiver module and a DCF77 Arduino library. The clock comes with three display modes. [Brett] didn’t want and physical buttons on his beautiful new clock, so he opted to use remote control instead. The Arduino is connected to a 433MHz receiver, which came paired with a small remote. Now [Brett] can change display modes using a remote control.

A secondary monochrome LCD display is used to display debugging information. It displays the time and date in a more easily readable format, as well as time sync information, signal quality, and other useful information. The whole thing is housed in a sleek black case, giving it a professional look.

20 thoughts on “Binary Clock Would Make Doc Brown Proud

  1. If you are absolutely sure your 7 segment displays will never need to show anything but a 0 or 1, you could drive them directly with greatly reduced wiring. Just connect the right side segments together with one connection. Connect the top, bottom, and two left side segments together with another connection. Power the first to display 1, power both to display 0. 21 digits = 42 wires. Then figure out some method to multiplex those 42 signals to reduce it further…

    1. In this case the flexibility of having all segments wired in is good for future implementations, you might just get tired of decoding binary and want it to say something else altogether.

      1. I agree that the flexibility to change the functionality is probably the way to go. I just wanted to make the point that sometimes if you consider what functionality is not needed it can greatly change your circuit requirements.

    2. Was thinking along these lines, myself… OTOH, it sounds like the builder didn’t have 7-segs already… so making it future-compatible like Nova suggests kinda makes sense. OTOOH, someone with, say, bags full of old (dim) 7-segs, no idea what to do with ’em all, but needing to do *something*, and a tendency to use once-highly-useful things in ridiculously-simplistic ways might find this quite handy to consider… And somewhere in reading your response might be inspired to also consider that some digits needn’t be wired-up as changeable at all (e.g. bits 5 and 6 in the hours could be wired straight-to-‘0’)… might even be worthwhile to throw in that 8th bit, just for the heck of it. And, 42 wires for 21 digits is great, but those “1”s could be wired-up permanently… then it’s at-max 21 changeable bits (fewer?)… lotsa microcontrollers out there that could handle that straight. I dig it.

    3. Each module of 8 7-segment displays only use 3 wires. The wires loop to the next display etc so in all I only need 9 wires to connect all 24 digits including the decimal points. Using the Arduino software I could have added normal decimal, Hex or even a message display. I think you can add up to 5 modules of 8 displays off the Arduino.

      1. Can you chain all three rows and run them all off only three wires?

        To clarify my original post, I meant that wiring for just display of 0 or 1 would reduce the wiring compared to a typical design that would multiplex all the digits and segments in some sort of row/column matrix and drive them directly.

        1. Ah yeah I see what you mean yes that would reduce the wiring compared to a typical design.

          You can run all three rows (I think max 5) off just 3 wires. You go in 1 side of the module and out the other and daisy chain the modules together. Each module has it’s own MAX7219 IC and this is controlled very simply by the Arduino via an added library.

          The MAX7219 can also drive dot matrix displays as well via the same library. In my code on my web page look for the ” lc. ” commands these are the MAX7219 library controls.

  2. Stange. The debug screen shows 14h59m57, but the binary shows 20h59m57.
    The debug shows also GMT+0.

    Best guess is there is another +4 setting somewhere, is this a Russian maker?

    1. You can quite easily make this clock display in HEX as well and I did think about it. Not a HEX clock as per your link but a HEX display of decimal time. The problem was using the 7-segment displays I had purchased the letters in HEX show as a mixture of upper and lower case that I thought would spoil the look of the clock.

      Maybe an idea for the future using a DOT matrix display……………….

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.