My little place on the web

This is an old revision of the document!

The Cube was not my idea, I stumbled upon a video of a LED cube while researching the arduino. I found the LED cube so awesome that I decided to make one myself.

Now it has been build, I can understand why you can't really buy one. If you find a company that produces it, it is ridiculously expansive. And that is because it takes a lot of time just building the thing.

To give you some idea, I used 512 blue diffused 5mm LED's and 55 meters of silver-plated wire. This equals to hundreds of hours of pure soldering fun :-)

Here is a video of a first demo of the end product:

The basics


The basic principle behind this cube is multiplexing. Simply put: all the columns are connected (8×8=64 columns) and all levels are connected (8 levels). So you have 64 connections on the bottom and 8 connections for the levels.

All you have to do to turn one LED on, is to put ~2,5Volt on one column and 0Volt on the corresponding level. For the second LED you do this again, and for the next again … And so on.

If you do this a couple of hundred times per second, the human eye does not see it blinking. The human eye thinks the LED's are constantly on. This phenomenon is called Persistence of vision .


The intelligence behind it all is an Atmega328P micro-controller. This sounds like a lot of work but actually you can buy a PCB with a micro-controller, serial port for programming and all basic components for using the Atmega328P quite cheaply. I bought a couple at avmicrotech on e-bay. You need only one board like the “ATMEL ATMEGA328 Arduino Duemilanove bootloader” for this project.

Driver board

The only problem we need to solve now is how to add enough output pins and power to the Atmega328P so we can drive 64 + 8 connections which use about 1,28Amp at full load. This is done by making a sort of “driver board”. It is a PCB I designed and created myself, it basically exists out of two independent parts: one for the levels and one for the columns. For the levels I used an IC 74HC238 “3-to-8 line decoder/demultiplexer”. This IC has 8 outputs, but only one is active at anytime. This has a major advantage because this it what we what if we need to turn on the cube one level at a time. A LED uses about 20mAmps so an entire level (all LED's on) uses about 1,28Amps. This is why I connected the 8 outputs of the 74HC238 to one IRF510 mosfet each. Now we could drive 5,6Amps, witch is more than enough. For the 64 columns I used a 74HC595 8-bit serial-in, serial or parallel-out shift register with output latches; 3-state.. Because there is never more than one level on at any time, we do not need mosfets or transistors to boost the power of the outputs. We do need to connect 8 74HC595 together to get 64 outputs.

Bringing it all together

The design, build and software are made and put together is described in the following paragraphs.

The driverboard

The driverboard is the PCB which connects the Arduino to the LED cube. I designed the PCB in a program called Eagle. This software is really good for designing PCBs and schematics but unfortunately the free version has a limit on the maximum size of the PCB you can design. So in the end I actually made the board on a PCB Prototyping Board Actually this one.

The schematic

The finished driverboard in the end looks like this:

The driverboard
 All hooked up  From the top  From the side

The LED cube

The construction of the LED cube is a very tedious and time consuming part, and also the most visible part. So take your time and measure twice, cut once…

Some details of the construction:

The LED cube
cube-construction cube-finished-layers cube-detail cube-finished

These are the principles used in creating the LED cube, the details will follow…