Introduction: Giant LED Bar Graph

For a recent project I needed to build a large and obvious bar graph display. This was to show the power generated from a bicycle generator. I came up with this design and was pretty pleased with the final results as it is relatively low cost but still pretty visual. It stands 1.5m high and 10cm wide. It needed to be low power but bright so I used LED arrays.
Here I show the process of building one. This one has 10 light elements, but can easily be extended to suit your idea.
It is designed to be controlled using an Arduino devleopment board, but uses logic shift registers, so can be easily controlled by any microcontroller.

The video here shows the unit in action.

The main body is built from electrical trunking, which is available in 2 and 3m sections. This forms a relatively cheap, robust and long enclosure.
The LED light units are 12V DC units from Phenoptix. The PCB was designed by Big Clive and is designed to fit into a standard MR16-type 12V halogen light fitting. They are available in all different colours, including as an RGB array.

Step 1: Parts and Tools Required

Parts required:

Electrical trunking 100mm x 50mm in 2m lengths.
I got mine from Screwfix ( but its available in all electrical supply places
2 x End caps for the trunking
Again from Screwfix (

Sheet of 'frosted' polypropolyene
I got mine from Paperchase, but you can use thin card or plastic from milk bottles or other stuff here.

10 x 12V LED units.
These were designed by Big Clive ( and obtained from Phenoptix ( and have 9 x 'super flux' LEDs on them.
I used 5 green, 3 yellow, 2 red to give an indication of power level.

3mm Machine screws 20mm long
3mm locknuts

Glue - hot melt glue gun would work, or any general purpose glue.

Control circuit:

74HC595 Shift register (
 ULN2003 NPN Darligton transistor array (
0.1uF capacitor
100uF capacitor
Piece of strip board (also called veroboard)

When I built mine the total cost of parts was around £100 (including £60 for the LEDs, £20 for the trunking, £5 for the end caps).


58mm hole saw
Hacksaw for plastic
3mm drill bit
Soldering iron and solder
Strip-board cutter (to cut the tracks in the stripboard - you can also use a drill bit to do this)

Step 2: Build the Enclosure

Mark out distances between light elements. I used 130mm between the middle of each light unit. I used 150mm on each end, which made a total length of 1470mm.

Cut trunking to length with hacksaw. Ensure ends are cut straight.

Drill pilot hole for each light element. This ensures they are all in a stright line.

Cut the 10 x holes for the light elements using the hole saw.

Stick the ends onto the trunking

Cut 'frosted' plastic to fit the holes. It needs to be just larger than the holes so you have a surface to stick to.
You will need 10 of these, one for each hole. Glue them in place and leave to dry.

Step 3: Build the LED Boards

Solder the LED boards.
The LED kits are available from Phenoptix (click on this link).
They contain 9 super flux LEDs (which have 4 pins) and 4 x resistors.
I was using single colour ones hence all the LEDs and resistors were th same for each board.
Its pretty simple to solder them up but soldering all 10 of them takes a bit of time and some fumes.
The PCB is designed as an RGB device, but I was just using single colours, hence all three inputs needed to be wired together.
The positive lead goes to each LED board. You need to solder a negative control lead to each LED board.

Once you have built the LED boards, use a space PCB as a template and drill 3mm holes to hole the PCB.
I used M3 x 20mm countersunk machine screws and locknut to hold the boards in position.
For a flat finish so it will fit on the wall without scratching, use a counter-sink drill bit on the back and the countersunk machine screws will fit into the holes much better.

Step 4: Build the Circuitry

I used the 74HC595 shift register and a ULN2003 NPN transistor array. This has 7 outputs (the shift register has 8 outputs, but the transistor array has 7, so I dont use one of the outputs of the shift register).

The shift register means we can control a greater number of outputs with only a few pins from our microcontroller. It is a serial device so we send data and 'clock' it into the shift register. When we set the latch high then whatever sequence we have clocked into the registers will appear at the output.
See this great tutorial for using the 74HC595 shift register with an Arduino. This has the info you need for controlling the lights.
You could build this using individual transistors on each output of the shift register, but that means loads more soldering and is a bit more of a hassle.

A NPN transistor array type ULN2003 is used to control the devices in the neagtive path. There is a common positive to all the LED boards. This makes the control very easy. The NPN transistor array is OK to handle 500mA per device. Each LED board is around 100mA whn ON, so this should be OK, but check the current raing is ok for your application.

The LEDs use a 12V supply. The logic works at 5V, which is taken from the microcontroller board. I would use fuses, just in case of short circuits.
For some reason my .png files look terrible, so I have attached a pdf file of the circuit schematic (28/6/12).

I'm leaving the strip-board layout to you.

I will be producing a PCB with this on (email or comment if you are interested in one), but strip board works just fine.

Wires in and out:
I used a cable with a comression fitting grommit. I also used an output 7 pin socket, as this system was designed to have additional displays on the output.

Step 5: Arduino Control Code

I am using the shiftOut command, which sends data serially on the output, with the clock flipped each time a data value is sent.
The latch is set low, data is written from arduino to the shift register, then the latch is set high and the output of the shift register appears on the output of the NPN transistors, and hence on the display. Lots more information is here on this tutorial.

Wire it up to your chosen microcontroller. The Arduino is pretty easy and the examples here have been written for the Arduino.
There are three control wires (Data, Clock and Latch). These are wired to pin 8, 11 and 12 of the arduino respectively (but this can be changed in the code)

I have done a couple of 'getting started' Arduino sketches. They are .zip files containing the code. The code is very basic but you can build on that.
One will scroll the bar graph up and down.
The other moves the bar graph dot across, kind of like the old Knightrider lights....
Upload one of the sample codes below and start to do your display.

Step 6: Test and Use It!

Check out the unit in action with the bicycle generator on this post or go see the real thing at the Arcola theatre in London.
More details on the bicycle generator are at .

My next version will use an RGB array to give a full colour output display. I will also rig one up to a sound level monitor to give a huge VU display..... Ah the posibilities...
Make It Real Challenge

Participated in the
Make It Real Challenge