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

View all 11 components

  • Illustrated Assembly Guide

    Arduino Enigma2 days ago 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 Enigma3 days ago 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 Enigma4 days ago 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.

  • First Electrical Tests With All Panels Connected

    Arduino Enigma03/09/2019 at 17:08 0 comments

    Soldering this was a lot of fun. So now it is time to start putting it together.

    This is how it will look. 

    Comparison with Motivational Board, another monster soldering project. Care to guess which one has more solder joints, the Motivational Board or the Seven Segment Art Installation?

    Powering up all the tiles in a daisy-chain configuration by feeding 6V DC to the first tile. Each tile is running a standalone animation. This eats a pack of AAA batteries quite fast. It will be run from a 6V or 9V wall adapter. Each Nano is responsible for converting raw DC power to 5V.

    An Arduino Nano on a separate breadboard is sending data to the first tile in the installation. The data gets relayed to the last board. Shown below is a demo of double buffering. The data gets written to a buffer that is not visible and then a command is sent to swap the visible buffer with the other one.

    Below are the commands the Master Arduino sends to the first tile. The first 5 characters are a board address, FFFFF means this command is meant for all the tiles. Each tile processes it and re-sends to the tile down the chain. 

    The first command selects buffer A, the visible one, for all future commands. The second command lights up all the segments. The third command selects buffer B for all future commands. Then boards 0, 1 and 2 are initialized, but not displayed. Finally, a flip command is sent every few seconds to all boards to swap the A and B buffers.

    Next step is to design an acrylic piece to mount all the boards. This will get laser cut at Ponoko. The design below is missing 4 mounting holes in the corners to bolt it to a larger piece.

  • Ordering some parts

    Arduino Enigma03/06/2019 at 00:49 0 comments

    Just ordered some components from US suppliers, so they should get here fast:

    10 x 3Pin 10cm Servo Extension Lead Wire for Futaba RC Connector Cable LB

    10Pcs 2.54mm Pitch 0.1 1x15 15 Pin 15p Female Dupont Header Arduino Nano Headers

    And then when those two arrive and everything is put together, then the spacers can be selected:

    25/100pcs Black Plastic Nylon M2 M3 M4 Hex Column Standoff Spacer Phillips Screw

  • Everything is working, just a quick update...

    Arduino Enigma03/04/2019 at 05:19 0 comments

    Everything is working, so this is a quick update to list the location of all the resources to duplicate this project:

    Here is the page to have the boards made at PCBWay:

    The seven segment displays are:

    Here is the code that runs on the Master Arduino. Its job is to send the desired content to be displayed down the line:

    This is the code for the tile boards. It receives commands, processes and relays them down the line to other boards while continuously multiplexing the displays:

  • A Little Preview

    Arduino Enigma02/27/2019 at 11:46 0 comments

  • Digit Animation Working

    Arduino Enigma02/20/2019 at 04:42 0 comments

    Here is the latest fade in effect. I am using a Sinclair calculator as a stand in until the seven segment displays arrive.

View all 12 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