I decided to design a binary clock using flip-disc displays. I use the Arduino platform very often and this time I did the same. The clock is basically a simplified and modified copy of the Arduino Uno (see the diagram and description below) and the code is written in the Arduino IDE.

Flip-disc Binary Clock can be found on Kickstarter.

The clock should display hours and minutes. I also thought about seconds but came to the conclusion that reading seconds in the binary system can introduce unnecessary confusion - decoding the value takes a while, of course you can learn to read it quickly but for an inexperienced user it can be inconvenient. Assuming that each disc is another bit, with 6 discs the largest value is 63, which is ideal for displaying seconds 0-59. The top row corresponding to the hours does not need as many bits but for the aesthetics of the clock it will have the same number of bits.

The top row for displaying hours and the bottom for minutes.

Flip-disc displays are really old technology, they are electromechanical displays. The control is very specific and is based on precise current pulses thanks to which we can rotate individual discs. A detailed explanation of how flip-disc displays work and how to control them can be found here.

Design assumptions:

  • modular design
  • displaying hours and minutes in binary code
  • ATmega328 as the heart of the clock
  • clock code written in Arduino IDE
  • option to update the clock code yourself
  • accurate RTC real-time clock on board
  • RTC backup power supply - supercapacitor
  • time setting buttons
  • clock power switch
  • simple, aesthetic casing for 3d printing and/or laser cutting 

I like modular construction of electronic devices, so the clock will be a compact structure of two pcb boards connected to each other and to the casing with a set of spacers. The clock consists of two main modules: a 2x6 display module and a clock controller module.

2x6 Flip-disc display

Display with two rows of 6 discs each. The simplest way to control flip-disc display is to control one disc at a time (see detailed explanation). With this assumption, we can treat both rows as a matrix of two rows and 6 columns, which will reduce by half the number of mosfet transistors needed to control individual discs. See the diagram below or download.

I used mosfet N/P transistors to directly control the discs, while the transistors are controlled by two popular 595D shift registers. This reduced the number of control lines used by the microcontroller to 3. You can, of course, omit the shift registers and control the transistors directly through the microcontroller using 16 pins but then only a few pins remain for other tasks. I also wanted the 2x6 flip-disc display to be versatile and usable for purposes other than the binary clock. There is another advantage of using shift registers that I didn't mention: the displays can be connected in series with each other up to 8 and all the time the number of control lines will remain the same - only 3 lines. Connecting flip-disc displays in series is made possible by a dedicated library for Arduino FlipDisc.h

Binary Clock Controller

Below you will find a schematic of the clock controller - download schematic.

I chose the RX8025T real-time clock - I wrote the RX8025T.h library for Arduino. The accuracy of the clock is comparable to the popular DS3231.

How the binary clock works: The RX8025T stores the current time and generates an interrupt to the INT0 output every 60 seconds. The ATmega328, upon detecting the interrupt, reads the current time from the RTC and displays it on the flip-disc display in binary code. The RTC clock has a backup power supply, a supercapacitor. Two buttons are used to set the time and the 12/24 hour format. The clock's power supply is quite archaic as it is 12V - this was the easiest way without unnecessary DC-DC converters. The microcontroller and all control electronics operate on a 5V.

... Read more »