I need to built a 3x3x3 LED cube. I need to be able to turn every LED on (not at the same time) in different patterns. I need to use Charlieplexing (note that any other method is not a viable option), with a Arduino UNO (6 pins). I am allowed to use soldering. I have a limited supply of components:

  • 6 Resistors
  • 1 Arduino Uno
  • 27 LEDS
  • 1 Breadboard
  • Soldering iron and solder
  • Few wires (these wires cannot be used to connect the LEDs to each other. I need to solder)

How would I go about doing this? Please refrain from suggesting ideas that require components not listed above and do not use Charlieplexing. I searched online but found very tutorials with the above constraints. One useful tutorial was:


However the above tutorial uses transistors, something that I do not have. It also doesn't show where the pins need to be placed. I was also hoping for something with a bit more detailed instructions. This is not a homework assignment.

Please do not suggest examples (there are a plethora of videos and images of cubes online) but rather some kind of guide or instructions on how to proceed.

I unfortunately have no ideas. I was able to Charlieplex 27 LEDS successfully - however this was all on one layer as opposed to being a cube. Charlieplexing on one layer was simple - just a matter of connecting wires, however Charlieplexing with a cube seems to be much more complex.

  • 10
    \$\begingroup\$ 27 LEDs are 27 LEDs, however you arrange them. \$\endgroup\$ – starblue Dec 26 '12 at 23:13
  • \$\begingroup\$ @starblue I agree, but arranging them in a cube is much more complex as it requires soldering and a completely different "pattern". Concepts used for the one layer cannot necessarily by applied to a 3D cube as the connections are completely different in shape (in the first case the connections are 2D however in the latter case, the connections are 3D). I have never worked with 3D structures or soldering before, which could possibly be why I find this so complicated. \$\endgroup\$ – dfg Dec 26 '12 at 23:20
  • \$\begingroup\$ Some of your requirements seem to be for religious reasons only since they appear arbitrary and pointless. For example, you say this is not homework, then you say you are only "allowed" to use certain methods. This leaves the strong impression you are being less than truthful or are deliberately withholding information. This is therefore not a real question and needs to be closed. \$\endgroup\$ – Olin Lathrop Dec 26 '12 at 23:20
  • \$\begingroup\$ @OlinLathrop I assure you this isn't homework. My math teacher told me about a science contest he had in university, where he was given a list of projects to choose from. He built the project mentioned above, and he suggested I try it out as an exercise. I do not see why the question should be closed - what rule does it violate? Its on topic, objective and contrary to what you believe, is truthful. \$\endgroup\$ – dfg Dec 26 '12 at 23:25
  • \$\begingroup\$ To downvoters - I would appreciate a reason as to why you felt this question deserved to be down voted. I have provided sufficient and valid responses to any problems brought up in the above comments. \$\endgroup\$ – dfg Dec 26 '12 at 23:27

You say you did this successfully with 27 LEDs all in "one layer". As starblue said in a comment, 27 LEDs is 27 LEDs, regardless of how they are arranged mechanically. As a thought experiment, imagine the same 27 LEDs you already have working in one layer arranged in a line. Now fold them up to be a rectangle of 3 x 9 LEDs. Now imagine each group of 3 x 3 to be a separate "group". Note that none of the connections were changed so far, only how you thought of them being arranged. Now stack the groups of 3 x 3 above each other, and you have a 3 x 3 x 3 cube.

Addressing individual LEDs with X,Y,Z positions will take a little masking and shifting and the like, but that's only firmware. Since you have so few, one way to get the various output signals to address individual LEDs is with a lookup table. You only need 2 bits for each of X, Y, and Z, so a 64 entry table will do this.

  • \$\begingroup\$ Thank you. The thing I am having trouble grasping is making the connections. When dealing with one layer, if I wanted to connect an LED, I would directly connect its anode to one pin and cathode to another. However with the 3D cube, I cannot connect each LED individually, but rather I have to connect them in groups. Could you please expand on making the connections or the "mechanical aspect" as Gustavo puts it? For example, the LED connections seem to be very complicated in 1.bp.blogspot.com/_YDPYkReterA/TMcs6wzQetI/AAAAAAAAAIY/… \$\endgroup\$ – dfg Dec 26 '12 at 23:38
  • 1
    \$\begingroup\$ There really isn't very much to expand upon in the diagram above (from the tutorial you linked). Look at each horizontal plane in the cube, there is a group of 4 and a group of 5 LEDs. Connect the cathodes of all these LEDs as depicted (red). Do this for all 3 planes (6 groups total, 3 groups of 4, and 3 groups of 5). Then, connect the planes together as shown by the blue wires (the anodes). I think you're getting stuck on trying to be more elegant than you need to. You already have 90% of the project done, now you just need to physically build it... \$\endgroup\$ – Shamtam Dec 27 '12 at 12:59
  • \$\begingroup\$ ...Try by building 2 layers of the cube with the cathodes connected as shown, then find a way to connect those to together mechanically (forget about the electrical connections). After you physically group those two layers, then you can make the electrical connections you need to by simply using wires (and routing them along the skeleton of the structure you used to group the layers together). Now, how can you make this structure's skeleton out of the leads of the LEDs alone? \$\endgroup\$ – Shamtam Dec 27 '12 at 13:04
  • \$\begingroup\$ Is there any mathematical relation or some methodology to design the cube than just trial and error method (i.e building mechanical aspect) . Sorry for the inconvenience i.e for asking clarification here. \$\endgroup\$ – Rafi Feb 18 '13 at 15:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.