loading
Picture of Arduino 4x4x4 LED Cube
DSCN0063.JPG
P1010199.JPG
P1010195.JPG
Overview:

     This instructable will cover the building process of an 4x4x4 LED Cube. I will be using an Arduino to control the LEDs.  Since the Arduino (Freeduino) has a total of 20 pins (including the analog pins) we will not need to have any multiplexing or shift registers.  I will take you though what i did in order to build the cube and create some designs of your own.



 
Remove these adsRemove these ads by Signing Up

Step 1: Bill of Materials

Bill of Materials

 For this project I used the freeduino Arduino. Because the Freeduino has a total of 20 I/O pins (with using the analog pins) we will not need and multiplexing or shift registers. So all we will need for our project is:

1. LED x 64
2. Resistors x 16
3. Arduino x 1
4. Perforated PCB
5. Soldering Iron
6. Drill (for the jig)
7. Piece of wood (for a jig)

Vendors:

   I have found sparkfun.com and digikey.com to be good suppliers of small electronic components in general and are currently the only two that I have purchased anything from.





Step 2: Choosing LED

Picture of Choosing LED
P1010168.JPG
LED Type:

LED’s come in different shapes, sizes and colors. For this project we will need diffused through hole LED’s. When an LED is diffused is disperses the light in all directions rather than mainly toward the top of the LED. By using diffused LED we will have get good color out of our LED’s from the side of the cube. Since we will only have a cube that is 4 LED deep I chose to use 5mm super bright LED’s from Sparkfun. 3mm LED’s will work just fine for this small of cube the fall back from brighter LED is when you have a large cube and cannot view the LED’s in the center.

The LED’s I ordered were not diffused this is not that big of problem all you need is some sand paper (a dremel is faster) to sand each LED will light up all parts rather than the focal point at the top.

Test your LED's:

I would recommend that you test each LED in a bread board before soldering. Simply use the +5v and connect that to a resistor (size discussed later) and to the LED just to make sure each LED lights up it would be bad to build the cube with a faulty LED in the middle somewhere.


LED Layout:

Most LEDs positive pin (anode) is the longer pin coming out of the LED and the negative (cathode) is the shorter pin. You can also look at the little metal inside the smaller metal piece is the positive end (anode) of the LED.

Step 3: Choosing the Resistors:


The resistors you end up using depend on the LED’s that you order. Since only one LED in a column should be on at once we only need to use one LED in our calculation. Using Ohms Law V = IR we can calculate the size of resistor.  This may require looking at some spec sheets but all we need to know is max operating current and the voltage drop. The LED’s I used have a voltage drop of 3.4 and a max current of 20 mA. To find the resistor size we can plug these into (Volts – Voltage drop)/(Max Current) = R. Since the arduino will be putting out 5 volts we get (5-3.4)/.020 = R. Solving for this gives a resistor size of 80 ohms that would be allowing for the max current. To have longer LED life I used just a tad larger resistor of 100 ohms to better protect the LED’s.  I was able to find a good price for resistors on digikeay and since we do not need a certain tolerance or anything these will be pretty cheap.

Step 4: General LED Cube Information

Picture of General LED Cube Information

 The cube I am constructing will be a 4x4x4 in other words it will contain 64 LED’s with 16 columns and 4 layers. Each column will be the LED’s positive pins connected together allowing 5 volts to pass to all the LED’s in that column. The Layers will consist of the LED’s negative pins connected together To control the LED’s we will be able to supply 5 volts to the column and let the layer connection go to ground. In order to prevent a column from drawing to much current there should only be one layer on at a time.

How do we light up the entire cube at once you ask? Well, we will use something call persistence of vision. An LED leaves an afterimage in the human eye, in other words even when the LED is turned off for a fraction of a second our brain perceives the LED as still light up.

Using this we can control each LED in the cube with only a total of 20 I/O from our arduino. For example if we want to light the third LED on the fourth column we will simply set the output to that column to HIGH (5 V) and the output for that layer to LOW (0 V) thus creating a ground and allowing current to flow and the LED lighting up.
 

Step 5: Constructing the Jig

Picture of Constructing the Jig
P1010181.JPG

In order to solder up a good looking symmetrical cube we will need some help. A jig can be thought of as a template that we will use to hold each layer in place while soldering. To create the template we will need a flat piece of wood that will be able to hold your cube, a drill and some measuring tools.  Depending on the size of your LED's the size of your holes will be different.  Try to find a bit that will allow the LED's to fit snug in the hole but not to tight.

To determine the size of your cube you will need to measure the bent cathode portion of the LED. My bent LED turned out to be about 25 mm therefore I drilled my holes roughly 23 mm apart to allow me 2 mm in order to solder the cathodes together.
 

Step 6: Constructing the Cube Layers

Picture of Constructing the Cube Layers
P1010179.JPG
100_1029.JPG

Now that we have the jig in place we can start building the individual layers. When soldering try not to heat up the LED’s too much if they get too hot it could destroy the LED, so try to solder faster when soldering close to the LED.

To start we will have one LED whos negative pin will go outside the cube.  Next start placing LEDs and soldering as you go I recommended that you complete the row where the pin is sticking out.  Then solder up the other rows to that main row.

Step 7: Constructing the Cube

Picture of Constructing the Cube
100_1031.JPG
100_1032.JPG
Now that we have all of the pins it is time to start soldering up the layers.  Place the best looking layer you built back into the jig.  In order to be able to connect the positive pins we need to bend the higher layers pins enough so that the pin goes around the lower layers LED and we can solder to that lower pins positive pin. 

To hold up the Cube while i soldered I used erasers that i cut to the correct size.

Simply continue this step until all of the layers are soldered together.

Step 8: Connection

Picture of Connection
Due to popular demand, here is a diagram of the connections.

Step 9: Base and soldering resistors:

Picture of Base and soldering resistors:
P1010187.JPG
P1010183.JPG
P1010184.JPG
P1010190.JPG
For the base is is pretty open ended on what you would like to do.  For mine I simply used a PCB (or glued PCB together) to solder my cube to.  Once i had my cube done i soldered wires from each column to a resistor. Each resistor was connected to another wire that i planed to plug the Arduino into. You will also need a wire soldered of each layer allowing for negative control (no resistor needed). You can make this part look alot better than mine but for time reasons i just soldered it up quick.

Step 10: Base/Box

After awhile i got tired of wires hanging everywhere and my cube looking unfinished so i decided to build a box for it.n  After running to the local hardware store I found some cheap scrap counter top and some acrylic.  Using some saws at the parents house I was able to build a base and as you can see I was able to hide all of the wires inside. I added some spray paint to the PCB and my cube was starting to look pretty good. Next comes the acrylic.  This part was a little harder. We did not have the correct tools to saw through the acrylic so I decided to use a box cutter with a new blade!  Using this you can make slices on the acrylic were you would like the cut and attempt to break the acrylic on that line.  There are some good videos online of how to do this.  I then supper glued the pieces together which ended up not being as clear as I thought it would be (I may just need to clean it better).

Step 11: Programming:

Picture of Programming:
P1010198.JPG
P1010199.JPG
Programming can take some time some tutorials have good condensed code that is easier to do designs but again for time reasons i was not able to spend much time doing that.  However I was able to do some designs and looking at them will let you better understand what is going on.  I provided my code at the bottom (its kinda sloppy)!

The ground/negative/layer pins:

   Remember the Persistence of Vision since we want to be careful to only have one layer on at a time (although I have made the mistake and am pretty sure the arduino can handle it but why try and break things?).  Since the layers are ground they are backwards from the column pins.  When we want to ground a layer we set the pin in the code to LOW.  This creates a difference in potential allowing current to pass and the LED to be lit up.  When we set the ground pins to HIGH no there is no potential difference and the LED's do not light up.

The Column/Positive pins:
 
    To control the column pins we can set the pin number to HIGH thus allowing 5 V to flow out of the pin.  So when a specific layer has been grounded the 5 V will flow and the LED on that column and layer will be lit up! If we do not want a LED on that column to be lit up when a layer is grounded we can set that column to LOW and the LED will not light up.

Here is a video of my cube in action! The acrylic box turned out a little hazy but I removed it in the second half of the video so you can see how it looks both ways!


http://www.youtube.com/watch?v=g5bviIamIpo



Thanks for reading!
   
1-40 of 52Next »
Gatlarf made it!8 days ago
Thanks for the tutorial. Works like a charm!
image.jpgimage.jpg
Wouldn't the amount of current going through the ground pins blow them out? Like if all the LEDs in one layer are on, you'd need 16x20mA of current for the ground pin on that layer, and doesn't each pin on the Arduino only output like 40 or so mA?

I thought that was why you needed a transistor for each layer, because the arduino couldn't sink the right amount of current to ground.

Did you ever figure this one out? bc im confused here as well

boxman1172 years ago
are you soldering to the anodes or cathodes

the layers will be negative/Cathode and each column will be a positive/anode.

boxman1172 years ago
i am wondering what PCB i should get
Phogie7 (author)  boxman1172 years ago
Any that the holes are not already connected. :)
369ben2 years ago
Is This called multiplexing where all the cathodes of each layer are soldered together and the anodes of each column are soldered ?

Also why weren't any transistors used as I have seen in other tutorials?

Thanks
Ben
Phogie7 (author)  369ben2 years ago
It sure is.

If you don't want to use your micro controller pins as a power source you can use transistors. :). You can also control the layer grounds using transistors.
WGY2 years ago
I made my cube and all of the lights work, however, there seems to be a problem with the wiring. Whenever I address a single LED in 6 of the columns, The whole column lights up. This does not happen in 2 columns where the LED's light up individually.
Help would be appreciated!
Thanks!
Phogie7 (author)  WGY2 years ago
Sounds like you are grounding out each layer for those columns. Make sure in the code you are only have one layer ground on at a time. Somehow those 4 layers for the 6 columns are getting grounded make sure the wiring/soldering did not get crossed somehow.
glen2472 years ago
Hey thanks a lot for the work i have created 4x4x4 led cube looking at you tutorial. 
telonics2 years ago
here's my effort using the UNO board.

http://youtu.be/SeKxOYz2ri8
Thanks Phogie!
glen2472 years ago
Hey thanks for the information. i studied and did the same cube
below is the link for the same

http://youtu.be/-8lJ8YVt6cI
taattooed32 years ago
Got my first cube done,waiting on proto board and a few components to actually finish the project but the cube is done and running on an arduino uno R3. Thanks everyone for all instructibles,questions,answered questions and most of all your time and patients. http://youtu.be/QjRBElq4a-8
Phogie7 (author)  taattooed32 years ago
Congrats!! Always feels good to finish a project!
Are you sure that an arduino can handle that current? although, only one led should be on any given time, I am still concerned that i could mess up the code, and end up drawing something like an amp from an arduino pin ( .....) . Do you think I should use darlington transistor arrays to the output pins and supply voltage from an external powersupply? many thanks andrew.
Phogie7 (author)  schembri_andrew3 years ago
I think most arduinos are 40mA. If you want to live on the save side I would run them off transistors and a different power supply. Its really up to you I just decided to take the risk. My arduino still works I am sure i messed up the code a time or two but can not say for sure. I just remember the LEDs slowly getting more dim toward the top and i unpluged it as soon as possible. Could also set up functions in the code to handle the grounds. Four functions each one turns on a layer and off the others.

Best of Luck!!
ma7moodz3 years ago
Okay Im pretty much stuck here..
Where do I connect the the layer's negative control wires to? (the black wires)
Note: Im very new to arduino
Phogie7 (author)  ma7moodz3 years ago
I added a diagram step number 8. I hope that helps if not let me know.
It worked!
and here is my result
http://youtu.be/VWYiD5FnHZc
Phogie7 (author)  ma7moodz3 years ago
Wooo Hoooo!! Looks good!
DeNuzio3 years ago
Great instructable :) Here is my results.
http://www.youtube.com/watch?v=lVW64nfY2PE
I used forte1994 arduino's program
Phogie7 (author)  DeNuzio3 years ago
Awesome! It looks good! Not as bent up as mine got hahaha.
hey. ive read your instructions, but im not sure where to connect the leads from the resistors to the arduino? Im not sure what ports to use
Phogie7 (author)  argentinoloco873 years ago
I added a diagram step number 8. I hope that helps if not let me know.
I just posted an instructable on programming a 3x3x3 cube with an Arduino. It *might* be possible to adapt that to a 4x4x4 and give us even more programming possibilities. One would need to change the pin setup, but that is about all, I think.
earton3 years ago
I have followed your instructions, definitely the best instructable to help a beginner! I see your map for the columns, but can you tell me which cathode goes to which ground, for the layers?
Much appreciated :)
Phogie7 (author)  earton3 years ago
Thanks! It was my first one so its a little rough around the edges. I wrote a note down to get a circuit diagram up. In the code i set up pins 16-19 up as the ground pins. Those should be analog 2-5. Does that help?
Pizzapie5003 years ago
Hi! I finished the cube, but I'm not sure where to attach the 16 columns of positive diodes, to the Arduino. Also I don't know where to put the negative ones either. Can you tell me which one goes to which pin number (like if the first one goes to A0, or like D3)? Sorry i'm new to Arduino, and the other instuctables used too many pieces. Thanks!
Phogie7 (author)  Pizzapie5003 years ago
This would be from looking down onto the cube. Hope it helps! Each number represents a column of the cube and corresponds to an port on the arduino. Let me know if that works and ill add it to the tutorial!

----Back----

3 7 11 15
2 6 10 14
1 5 9 13
0 4 8 12

-----Front----

Yeah this was my first tutorial and i realized that I did not explain the connections very well.

On the freeduino i was using use the digital outputs for 0-15 and the analog next. So analog 0 corresponds to column 14 and analog 1 corresponds to column 15. Analog 2-5 will be the negative or ground for the 4 layers.

If you need anything else let me know.
AndreD.3 years ago
Hey Sir...

Can you please explain how you write some letters in your 4x4x4 Cube?
Phogie7 (author)  AndreD.3 years ago
I may have to watch the video again but I do not think there are any letters. If you want to write letters i would suggest building a bigger cube. A 4x4x4 does not give much room to create letters or numbers.
Oh, and if you have the electronic circuit, would be great.

Thank you.

Great project, congratulations!
Phogie7 (author)  Bruno Silva Pinheiro3 years ago
Thanks! Ill make a note to create a circuit and let you know once i get it posted. :)
kelsorj3 years ago
Great project! I played around with different colors on each layer and it makes for some fun patterns.

http://www.youtube.com/watch?v=fXeoowp5JtE
Phogie7 (author)  kelsorj3 years ago
Nice! I do like the different colors! I would like to do a RGB one sometime just have to wait for a rainy day to spend some more on the LEDs.
iinzunza3 years ago
I have a project for a subject, and I decided to do this Cube but I have one condition... I need to use transistors, so my question is... How can I design the circuit using my arduino and transistors???
Phogie7 (author)  iinzunza3 years ago
You could use transistors to control when a specific layer is grounded. Instead of grounding the layers to the arduino you would have each layer go to a transistor. Then you can control the transistor with the arduino and chose when to ground out that layer. So in other words connect the ground for a layer to the collector of a NPN transistor and the arduino to the base and the ground to the emmitter. Then you can control that layers ground by setting that arduino pin on and off.
Brunomaster3 years ago
Por que está chueco? sabes soldar?
1-40 of 52Next »