Picture of LED Cube 8x8x8
Create your own 8x8x8 LED Cube 3-dimensional display!

We believe this Instructable is the most comprehensive step-by-step guide to build an 8x8x8 LED Cube ever published on the intertubes. It will teach you everything from theory of operation, how to build the cube, to the inner workings of the software. We will take you through the software step by step, both the low level drivers/routines and how to create awesome animations. The software aspect of LED cubes is often overlooked, but a LED cube is only as awesome as the software it runs.

About halfway through the Instructable, you will actually have a fully functional LED cube. The remaining steps will show you how to create the software.

A video is worth a thousand words. I'll just leave it up to this video to convince you that this is the next project you will be building:

I made this LED cube together with my friend chiller. The build took about 4 days from small scale prototyping to completed cube. Then another couple of hours to debug some faulty transistors.

The software is probably another 4-5 days of work combined.

Remove these adsRemove these ads by Signing Up

Step 1: Skills required

Picture of Skills required
At first glance this project might seem like an overly complex and daunting task. However, we are dealing with digital electronics here, so everything is either on or off!

I've been doing electronics for a long time, and for years i struggled with analog circuits. The analog circuits failed over half the time even if i followed instructions. One resistor or capacitor with a slightly wrong value, and the circuit doesn't work.

About 4 years ago, I decided to give microcontrollers a try. This completely changed my relationship with electronics. I went from only being able to build simple analog circuits, to being able to build almost anything!

A digital circuit doesn't care if a resistor is 1k ohm or 2k ohm, as long as it can distinguish high from low. And believe me, this makes it A LOT easier to do electronics!

With that said, there are still some things you should know before venturing out and building this rather large project.

You should have an understanding of:
  • Basic electronics. (We would recommend against building this as your very first electronics project. But please read the Instructable. You'll still learn a lot!)
  • How to solder.
  • How to use a multimeter etc.
  • Writing code in C (optional. We provide a fully functional program, ready to go)
You should also have patience and a generous amount of free time.

1-40 of 2667Next »
Popehappycat made it!14 hours ago

Made it. :)

pankaj77716 hours ago

i made it same as it given....but the speed of effects is very can i increase the speed so that the effects are properly

i am using top2008(a universal programmer) burner to program the atmega32......

pankaj77716 hours ago

i made it same as it given....but the speed of effects is very can i increase the speed so that the effects are properly visible......

mik.cox17 days ago

This is an awesome instructable, thanks so much for all the time and effort you put into it! I just finished my cube today and I'm really impressed with how it's working.

I noticed one oddity though... I have to keep the programmer plugged in to the LED cube and the computer in order to run programs. If I ever unplug it, I get no status LEDs and the cube goes dark. Do you all have any ideas what might be causing this?

I had a secondary thought just recently. Make sure you put a pull-up resistor on the reset line. (5K from Reset to +V)

A 5V line is missing from the supply to your driver board or ATmega etc. would be my immediate guess.

Geekaton6 days ago

is the controller you make in it essentially a small computer?

Yes, a microcontroller is just a mini-computer that does a dedicated task. It can run tens of thousands of lines of code, and even do complex processing, sensing, and data acquisition. It can be programmed in C/C++ or Assembly Language code. Here's something I wrote that expands upon the subject in relation to radio control:

I'm looking for someone to make me 2 of 10 x 10 (1m) cubes... By 1st September, London uk... ? anyone?

If they were 8X8X8 you might have takers, but with 8 bit chips, a 10 bit wide cube is not the easiest thing to do. Also, post what you're willing to pay for a completed project, and what processor it has to use etc. If you're only willing to pay $100, forget it. At $1000 you MIGHT get some interest if they ONLY have to build the cube and not the electronics. If you have a schematic, $2000 might get you the cubes and controller. If you don't even have a design for the controller or any code to run it, I think you're asking a bit much.

Thanks for you response... Yes it was a bit of a vague long shot. Not enough information. Since you have responded I'll elaborate. I'm trying to procure 2 x 1m LED cubes. I'd need it from scratch and delivered in working order ready for someone to programme and install in situ. I could find $2000 per cube though that would be stretching the budget a bit... The event they will be used for is in London, UK on September 4th.
Anyone think it's achievable and is interested in taking it on then hit me up.
...and thanks for the prompt SuperTech


By 1M - do you mean ONE CUBIC METER in size? Also, what kind of LEDs do you think you'll need because if this is to be at some well lit event, you are then going to need super bright LEDs (10W or so) which means high current driver circuits (MOSFETs for all 64 outputs, plus super high current drivers for the layers, and a SUPER MONSTER power supply, or more likely up to 8 high current 35V power supplies) and you want it in 2 weeks? IMPOSSIBLE. You'd need to come up with closer to $50K for the project so someone could hire the necessary labour and that would be assuming the design already existed. Your offer would barely cover parts and shipping of a cube that size and the drugs necessary to make someone work fast enough to complete it.

simas.sio made it!10 days ago

fanally i made it! its awesome:P


Ah, that feeling of accomplishment! We'll be waiting to see your video!

when I uploaded the program to the IDE, it gave an error message saying that delay_ms(delay); was not working. When would I fix about it?

What version of the IDE are you running?

roland9320 days ago

I finished the circuit and tried to turn it on. Avrdude recognized Atmega and changed fuse bits, then uploaded test.hex. Unfortunately nothing was happening at all. I connected circuit to my Arduino and Cube was allright, i could see all effects. So i thought that maybe Atmega is broken, bought a new one and now I am getting problems like, unable to read fuses, the signature for Atmega is wrong etc. Can't do nothing about it and make it alive, any ideas ?

There's a switch you can use on the command line to ignore a wrong signature (-F) or try using AVRDudess.

I actually really like AVRDudess because I don't need to remember all the command line switches and data paths.

Tried with -F and didnt work. Also tried with AVRDudess and still no results, Cube is working great on my Arduino but nothing happening on Atmega. I managed to upload test.hex to one of them but nothing was happening. With the second one i still got problem with recognition and even getting access to program it...

Check your 16 MHz crystal, and triple check that the 22pF caps are the right value (remove them completely if you have no replacements - most often the circuit will work without them if the crystal is close enough to the ATmega). Make absolutely sure the crystal is on the right pins of the ATmega.

After lot of debugging I managed to force my Atmega to work, thanks for the tips ! And last extra question, in few effects i can see how diodes in all colums (driven by separate IC) indexed 7 and 8 are flipped, except corner ones. i checked all the wires and everything seems to be ok but this 6 columns change places all the time. Any quick idea ? ^^

"Managed to get it to work" won't help anyone else reading this that might run into the same issue. Please share what was wrong, and how you corrected it.

If what goes to chip 7 is swapped with what goes to chip 8, then the answer is you have them reversed coming out of the 74HC138 (which is responsible for what chip is used when). So this means take the wires going to pins 9 and 7 and reverse them on the 74HC138. Of course if you happen to accidentally be calling chips 1 and 2 incorrectly chips 7 and 8, then it's pins 14 and 15 you need to reverse.

The problem was in capacitor next to GND and VCC, one of the legs wasn't soldered good enough, that solved the problem. Cables was swapped as You mentioned, thanks !

i am really confused about the whole purpose of the RS-232 cable and where it should be connected. can the cube be made without it?

Buskleif3 years ago
I find it much better to just use a USB to TTL serial adapter like FTDI friend from Adafruit . You also save some space on the circuit board as you don't need the MAX232/233 chip.

I tried this. im stuggling to get the code to work. the test code worked without a problem but uploading the actual main.hex and main.eep code does not work for me. according to the command prompt there are no issues. what are the odds that i have a bad USB to TLL?

The TTL or RS232 on the ATmega32/32A/32L is only for sending cube frames to the cube from a PC - not for programming it.

I don't get why you are using a USB to TTL. You are supposed to be using an ICSP programmer like the USBasp (fast) or USBTiny (old, tried and true, slow). Until you get one of those, I don't know where your issue is except that you aren't using one of these.

Disregard my previous reply. When reading through old comments I made, I see that you have to flash hex first and then eep, not the other way around.

It's been almost 3 years since I did anything with my cube, so my memory is a bit outdated. Does it look like the upload works ok, but the cube does not do anything? I have a vague memory that you have to upload the eep file first, then the hex file. Try this and see if it helps.

(removed by author or community request)
Just connect the TX line from the adapter to pin 14 and RX to pin 15 on the microcontroller.
Don't forget that you must also connect adapter GND to circuit GND.

Basically the TX line from the adapter must go to the RX pin on the microcontroller and vice versa.

Good luck.

does the AVR ISP have the rainbow ribbon cable coming out of it or does it just appear that way?

Loskeem made it!22 days ago

It's not finished yet but it works. Thanks CHR and others for inspiration to learn. I designed and built my own PC boards, learned to write some code, and learned ALOT! Next I want to figure out why the ATMega 32-16 won't work correctly. It's something in the way it's complied, I'm sure. Will be fun to figure out. Cheers!


This is how my circuit boards came out...LOL

RAMP 1.0E Rev.4.jpg

This is the SMT version

ARMS Rev 3 top.jpg


Hallo i have almost finished my Cube (very nice guide) im using a Arduino but have a liltle problem. I only have one row and 8 layers. But have som strange behavor, when im in the "rain" program, its lock like my LEDs are opersit (LED that should be off is on). Think i have the problem in my transitor? Im using "A684 Y122" (cant find a good data for this, so have maybe mounted it wrog?)

Is there somebody els there have problem whit the arduino duemilanove?

This happens most often if your LEDs are backwards (using anode layers rather than cathode)

I change the output for the layers, seems to my transitors are driffrent.

Here is what i changes if other need that:

// Invert A0-A5 of the arduino


// Invert bit 4 and 5 of the D8-D13

PORTB = PORTB ^ bit(4);

PORTB = PORTB ^ bit(5);

1-40 of 2667Next »