Ordinary displays typically feature a matrix of LEDs or liquid crystals that illuminate in specific patterns to generate images. On the other hand, the classic seven-segment module uses, as the name implies, seven LED segments that light up when power is applied. Some modules even combine several of these together and sometimes add decimal points. Maker Chris Combs had the idea to combine these two display technologies together by using the individual segments within each module as a pixel to draw a large image within a massive display. This gives a very retro, yet futuristic, aesthetic that is hard to replicate otherwise.
As stated before, a seven-segment module normally contains between one and four digits, with each digit having seven segments. The pins that drive these can be arranged in an array to save on the required IO and to make driving everything a bit easier. Combs stumbled upon a a set of 500 HPDS-B05G online, with each one having four digits and a central colon, but not decimal point. By quickly setting the digits sequentially, the strobing effect becomes unnoticeable and can even be used to dynamically control the brightness via pulse-width modulation (PWM).
For this project, Combs needed to find a way to combine 288 of these display modules into a matrix, which ends up being a lot of pins. Because almost no microcontroller exists in the world that has enough IO, a decision was made to group them into 48 sets with six modules in each one. From here, a single ISSI IS31FL3733 matrix driver IC can be connected to the 72 total pins within the group. And although the PCB looks complicated, it essentially consists of the driver in the center, along with a 3 row by 2 column grid of seven-segments and copper pads on the top, bottom, left, and right for joining the group with others.
The IS31FL3733 driver IC is conveniently used with the I2C protocol, which makes interfacing it with other devices much easier. Most microcontrollers wouldn't have the horsepower needed to run the math necessary for all 7,200 segments, so Combs decided to go with a Raspberry Pi. But even though a single I2C bus can support up to 127 devices, the driver can only be in one of 16 address configurations. Because of this drawback, the 48 ICs had to be split up among the Pi's three I2C buses.
With the PCB designed and a general idea of what programming needs to be done, Combs plans on publishing a second part in this series on how he is constructing the seven-segment screen. It will discuss how special device tree overlays can be used to "talk" to multiple I2C buses with ease via the Raspberry Pi 4's new kernel hooks.