A Seven Segment Art Installation

A modular board hosting 9 seven-segment displays that can be daisy chained to make an art installation

Similar projects worth following
A 100x100mm board is the basis for this project, a large installation of animated seven segment displays. Each board has an Arduino Nano and 9 Seven-Segment Displays. The Boards are daisy chained through three-pin headers on the sides. The pins carry power, ground and a serial port signal. The first board on the chain has two Arduino Nanos. The first one sends the instructions on which digits to light up, the second one drives the displays and relays the instructions to the next board down the chain.

The idea here was to make a large animated seven segment display the simplest way possible, its just a board with an Arduino Nano, some seven segment displays and two headers. That's it.

This project starts with a board size that can be manufactured cheaply (100mm x 100mm). In this board we can fit 9 (0.56") seven segment displays. 

An Arduino Nano can directly drive up to 12 seven segment displays in a multiplexed arrangement. In this project we only drive 9 and keep D13 with its built in LED and the serial port pins free. The Arduino in each tile is also responsible for receiving commands from the previous tile and relaying commands to the next tile. 

Current limiting is done in software, to keep things simple, there are no resistors on the boards. Development is done in a Sinclair Scientific Calculator and the sketch is uploaded to the tiles once it is working properly. Each digit is turned on for up to 255 uS and then the next digit is turned on. Each digit has 2ms to cool down. When powered with a wall adapter, it is quite bright. 

The idea for the software current limiting came from using a Bubble LED displays on the Sinclair Scientific Calculator. The only way to get decent brightness out of them was to eliminate the current limiting resistors altogether and instead control the current via the duty cycle.

The first tile in the series has two Arduino Nanos soldered, the first one runs the high level animation sketch and sends the commands to light up the LEDs to the display Arduino. The rest of the tiles only have one Arduino

Here it is running a falling digits animation:

the original animation that inspired this project, numbers increment and fade in, but a blank is shown instead of zero.

A pseudo-random number generator using a Fibonacci Linear Feedback Shift Register:

View all 11 components

  • The tile board can now control 16 digits using only an Arduino Nano

    Arduino Enigma08/16/2020 at 17:36 0 comments

    Here is a picture of the new 16 digit board using the Common Anode (CA) in parallel with Common Cathode (CC) technique.

    Here is a schematic for a 4 digit board using only 10 IO pins. Each additional pair of digits will only cost 1 pin. 

    Read more about it at:

  • More Digits!!!

    Arduino Enigma05/19/2019 at 13:44 0 comments

    I have found a way to add more digits to this installation. The key is to put a common anode seven segment display in parallel with each common cathode existing display. The capacity is instantly doubled to 18 or 20 digits maximum.


    -8 pins on the Arduino connect to the segment pins on the seven segment display.

    -9 select lines connect each of the common pins back to the Arduino.


    -On the 8 pins used for the segments, connect 9 common anode displays and 9 common cathode displays.

    -each of the select lines goes to the common anode of one display and the common cathode of another display. 

    To illuminate one digit, put the pattern on the segment lines, using 1 for the segments that will illuminate, then put 0 on the selection line for a pair of digits. Then put another pattern using 0 for the segments that will illuminate and put 1 on the selection line for that pair of digits. Lastly, put the selection line in input (high impedance) and move to the next pair of digits.

    Using this technique a tile can go from 9 digits to 18. To keep the square form factor, lets do 4x4, using 8 common anode and 8 common cathode displays.

    Parts have been ordered to test this technique...

  • Pictures of the front and back of the assembled object

    Arduino Enigma04/29/2019 at 04:30 0 comments










  • Display Fully Assembled - Falling Digits Animation

    Arduino Enigma04/10/2019 at 04:30 0 comments

    All the parts finally arrived and the display can be put together.

    Here it is running a falling digits animation:

    and the original animation that inspired this project:

    And a pseudo-random number generator using a Fibonacci Linear Feedback Shift Register:

  • A small design while waiting for spacers to be delivered

    Arduino Enigma03/31/2019 at 03:11 4 comments

    While waiting for delivery of the spacers to mount the boards to the back plate, I put together this design to stress test Fritzing. Copy and Paste takes a while, DRC fails with a success message, but it did not crash, until the silkscreen label on the back copper was moved up and down using the keyboard.

    @Benchoff, ready for that little contest...





    Who wants to see this made?


  • Illustrated Assembly Guide

    Arduino Enigma03/18/2019 at 00:18 0 comments

    The following pictures show the assembly process for a one Arduino Nano slave tile. Shown also are the steps that need to be taken once to make a master tile with two Arduino Nanos.

    It all starts with ordering this board.  Some work went into making sure the front was clean of marks, the only clue that this is oriented the right way is that the vias on the lower part. Those vias will be hidden under the displays when this is assembled.

    In order to keep the front of the board clean, it is important to put on the order a note: "do not add order number to board" PCBWay has been good about doing this.

    Here is a shot of the back. It has a few silkscreen markings, but those will almost disappear once assembled.

    Trying to show the traces in the front. The red soldermask is really, really shiny and hides the tracks...

    Unpack an Arduino Nano, two if building a master tile. The 6 pin connector can be ignored.

    Flip the board and insert the headers short pins first. We don't want pins sticking out of the front.

    And now is a good time to start heating the soldering iron.

    If building a master tile, prepare two 15 pin female headers.

    This Arduino Nano will become the master.

    Insert the Arduino headers long end first into the female headers.

    And here we are mocking how the Arduinos go on the tile. The display Arduino has the short side of the pins inserted on the board and the master Arduino goes into headers.

    Mocking how the Arduinos will look.

    Get the solder ready. I like this Alpha Pure Core Water Soluble Flux Solder, makes the boards easier to clean at the end of assembly.

    Start by soldering the four corners of the headers, make sure everything is fully inserted.

    Next, continue soldering the rest of the pins.

    Flip the board.

    And solder the four corners.

    Continue by soldering the rest of the pins.

    Next, insert the displays on the board. These have been pre-tested in a bread board to make sure all the segments work. Make sure the decimal point is facing down. Note that the display arduino is on the right half of the board.

    Carefully (the displays fall out easily), flip the board.

    While pressing down on the board, solder one pin on each display.

    Flip the board and make sure the displays are sitting flat.

    Then finish soldering the rest of the pins.

    Make sure all the pins are soldered and no solder bridges exist.

    Next, prepare a pin header, we need 2 three pin headers.

    Break off two three pin headers.

    Place the short end on the bottom side of the board.

    Carefully flip the board, ensure the pins are sitting straight.

    Solder one pin.

    Make sure everything is sitting straight.

    And solder the rest of the pins.

    And here is a fully soldered tile board. The steps after this one are to make a master tile.

    To make a master tile, start by placing the female headers on the bottom side of the board on the footprint labeled Nano-Prog.

    Insert the Arduino Nano on the headers.

    Press everything down to ensure the pins are fully seated and solder the four corners.

    Flip the board and solder the corners on the headers. Be careful that the soldering iron does not touch the displays.

    Flip the board over.

    And solder the rest of the pins.

    Flip the board and solder the rest of the header pins.

    Next, using a toothbrush and water, clean the flux from the board. Looking good!

    This is what the board will look like once...

    Read more »

  • Falling streamer using better data structures

    Arduino Enigma03/17/2019 at 15:01 0 comments

    It's just an array, but it allows one falling streamer per column. Next step is to have not only one, but TWO streamers per column. By adding yet another array, we can have independent falling speeds. 

  • Scaling it up...

    Arduino Enigma03/16/2019 at 15:55 0 comments

    Here is a falling streamer crossing tiles:

    The software for this has been uploaded to gitlab:

  • Adding Layers to the Onion

    Arduino Enigma03/11/2019 at 05:32 0 comments

    Added some functions to the sketch running on the Master Arduino to make displaying things easier:

    void SendCommandXY(byte XL, byte YL, byte CMD, byte VAL)
      Translate(XL, YL);

    Ultimately the goal is to manipulate arrays and have a function that scans what changed and send the commands to display that.

  • Done Soldering...

    Arduino Enigma03/10/2019 at 15:38 0 comments

    And finally we are 100% done soldering, time to put the soldering iron down.

    Shown below are the first two tiles in their final configuration while running off a 6V wall adapter. 

    The first (or last) board in the series is fed power via an adapter cable. The first board in the series has an Arduino Nano mounted in headers. This Nano is responsible for sending the commands for the animation that is going to run on the whole display. The Nano that is permanently mounted on the first tile receives the commands from the master, updates its internal arrays with the values to display and drives the displays. Any commands that need to go to downstream boards are relayed.

    Next step definitely is to order the mounting plate and 20mm spacers.

View all 17 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates