Multi-Display Clock Gadget Page


Home                               Craigs Pages                               Heathers Pages

Multi-Display Clock Gadget
May 2022

I came across some small I2C OLED displays that were very inexpensive so I thought it would be interesting to experiment using Forth32 to drive them. I was interested to see if I could arrange things such that I could smoothly scroll images and text from one display to the next. The first thing I had to do was write some Forth code to control an I2C multiplexer chip so that a single I2C interface on the ESP32 module could control all six displays. This turned out to be very easy. Next I had to write a driver that could interface with the SSD 1306 display controllers on each device. This driver had to keep the data for each display separate while allowing the control of each to be centralized. This took some head scratching but eventually it all worked out. The frame buffer data for each display had to be ordered correctly for the scrolling to occur. As a result I can write data to any/all of the frame buffers and with a single Forth word call I can rotate the data between displays.

This gadget displays the time and date alternately with the starting point of the display moving around the gadget. First, the time or date is displayed statically so it is easy to read and then begins to rotate around. I have implemented multiple fun patterns with moons and stars and peace symbols that are displayed every 5, 10, 15 and 30 minute intervals to add a little interest. This gadget uses NTP and custom timezone code so the time/date is set automatically and requires no interaction to change between standard and daylight savings time. Very convenient. 

As you can see in the pictures below I 3D printed a custom enclosure to house the six displays and the required electronics.



Here is the finished multi-display gadget. The 6 I2C displays are mounted in a 3D printed radial enclosure that has a single NeoPixel at its center. All the wiring for the displays is run to the base through a clear plastic tube. I used clear plastic to show how much wiring is involved in this project.



The base is 3D printed with copper and gold PLA. The gadget is powered externally via a USB power module. All 3D printed parts were designed using OpenSCAD.

The electronics in the base consists of an ESP32 module and the TCA9548A I2C multiplex chip.

Each display requires 4 wires for I2C operation.


The 3D printed bottom is also shown.


Low Voltage 8-Channel I2C Switch With Reset (Rev. D)

Here the 6 displays are mounted into the enclosure. The NeoPixel is mounted in the center and the three wires are for its power and serial data.

The hole in the enclosure is for the plastic support tube which contains the wiring between the displays and the base.

The front and the 3D printed back of the gadget.

The assembled gadget with wiring exposed.

A video of the working gadget will be forthcoming at some point.

Click here to view my ESP32Forth workspace which contains code for this project along with a bunch of other Forth projects.

Questions and comments to me Craig at: calhjh@gmail.com


Home                               Craigs Pages                               Heathers Pages