Charliecube -- Charlieplexed 4x4x4 RGB LED Cube

38,948

303

38

This is a Charlieplexed 64 RGB LED 3D Cube.


The CharlieCube has a total of 192 LEDs and is controlled by 16 arduino pins wired through 16 spires of 4 LEDs and 4 connections. The 64 connections that 16 spires of 4 leads are wired in such a way that they only need 16 micro-controller (arduio) connections. The arduino connects directly to the LEDs without using any resistors, shift registers, LED drivers or any other electronic components. It is simply LEDs, micro-controller, and circuitry. It is sorta like applying geometry to circuitry.

This cube design uses complex wiring instead of parts. This type of wiring LEDs is known as charlieplexing, and it is a type of multiplexing, that arranges LEDs facing each other in groups. The result is that it requires less connections to control the LEDs. In the case of 64 RGB LEDs that is actually 192 LEDs that can be controlled with 16 tri-state micro-controller input/output connections (pins). Charlieplexing was created by Charlie Allen, and its a fairly interesting way to control many LEDs.

The original website by Asher Glick describes how to make this cube with common cathode RGB LEDs, however I have modified the code to work with common anode LEDs. I made an instructable called Hacking the Charliecube, and it describes how I went about making the code for this cube, also work with common anode LEDs. I have a website that I created with pictures and in depth details how to make the cube, Im going to try to re-create it here, and focus on just building the cube.

The parts list for this 4x4x4 RGB LED cube are simple:


64 RGB LEDS (common anode, or common cathode)
Arduino Nano or variant with 328 chip (168 chip may not work)
Wires (various depending on how you build your cube)
Prototyping printed circuit board (pad per hole type), Optional (if you are hard core!)


Tools:
Soldering iron, tweezers, wire cutters, wire strippers, drill (5mm)

Supplies:
Flux, Solder, Alcohol, a small board, patience.

My website about the cube:

https://sites.google.com/site/rgbledcubes/home/cha...

Asher Glicks website about the cube (where it all started)

http://aglick.com/charliecube.html

More about Charlie Allen Charliplexing can be found here:

https://en.wikipedia.org/wiki/Charlieplexing

My other instructables about hacking the charliecube, and advanced charliecube...
https://www.instructables.com/id/Hacking-the-Charli...

https://www.instructables.com/id/Advanced-Charlicub...

Step 1: Prepare Your Parts, and Do a Good Job.

The first part is always preparing your parts, I always tell people to take their time here, and do a good job, because how well this part is made effect the next step in the process, and that effects the next step, and so on and so forth. Little things in the first step, become much more exaggerated by the last step. Being consistent is also very important, the first one, and last one should look about the same. If they are not, go ahead and fix the first ones, until they all look the same.

Use the first image as a guide how to bend the LED leads. The black one is the common cathode lead, I like to mark my LED common lead with a black marker, this helps later when setting them up to solder. Notice how the blue and red are just the same direction, but the inner 2 leads can be easily done 2 different ways, be careful to make sure that you do them all the right way, if not, fix them now, before moving on to the next step.

Now that all your LED leads are bent, group them in 8 groups of 8, to make it a manageable group of groups. Then take a group of 8, and break that into 2 groups of 4, and set 4 of those aside.

Now you need to prep your wire. There are a few wire options, but if you are using straight hard wires, you need to cut them to the right length, this can vary depending on how you build your cube, but 1" gaps are a good spacing, my wires are about 3.5" long. If you are using bus wire, or other coiled soft steel wire, you need to straighten it, then cut it in sections about 4 inches long. If the wire that you are using solders easliy, you are read, if the wires you are using dont solder to well, you may want to pre-tin your wires for best results.

When you have a set of 4 LEDs with the leads nicely prepared, and the wires all straight, cut, and tinned if necessary, we can begin building a spire.

Step 2: Building an LED Spire

Building a spire requires that you hold all the LEDs in a nice straight line, with the LEDs evenly spaced, all facing the right direction. There are many ways you can accomplish this, A cardboard box with holes lined up will work, you can build a jig out of wood, or cardboard or plastic, I chose to just use part of a DVD players metal cover. I have marked where to set the LEDs with 1" spacing. I put the LEDs in one at a time, taping down the bottom lead as I go. I make sure that the LEDs are facing the right direction by observing the black marked leads. I double check that the LED bodies are lined up with my spacing marks, and adjust until they are right.

I put one wire in place and tack the top LED with the wire in place. I add flux to each of the 4 solder joints, then starting with the second LED, solder it on, and go down to the bottom one, then I reflow the first one again. I look it over real good to make sure that the wire is soldered properly, and that all the LEDs are lined up just right.
I take extra time on the first wire, to make sure everything looks nice, because if it isnt, it gets ugly after you put the rest on. When the first one is on right, then I undo the tape, and gently rotate the LEDs 90 degrees (either way, it doesnt mater.), and gently tape it down. I then repeat the soldering process only its quicker for the 2,3,and 4th wires. When Ive finished all 4 wires, I take it out, an examine it, if an LED doesnt look straight, I fix it, if a solder joint is too big, or to small, I fix it. When its right, I clip the leads, and soak it in a jar of alcohol to clean the flux.

The last picture shows you what you should end up with, 4 LEDs soldered onto 4 wires, each LED rotated 90 degrees. Now is a good time to test the LED spire. I soldered a couple wires to a cr2032 coin cell battery and used it to test the LED spire. Its a simple easy test. put the common lead on the battery, touch the other 3, red, green and blue should light as you touch those leads. change the common lead to the next wire, and repeat the red, green and blue tests, repeat this until you see each LED light.

Once you do one spire, you will find the next one easier, by the time you get all 16 done, you will be a pro at it, but the first few are going to be difficult and frustrating. You may want to re-do the first couple spires so they all look consistent, its important that each spire look uniform, and things are evenly spaced, or your cube may look lumpy.

Before moving on, you should have 16 spires that look good, and passed testing.

Step 3: Build the Cube

This part is where everything comes together. There are some options here, the end product will depend on which options you chose. If you want to put them on a circuit board, or not, what kind of wires to use, and what size/colors. I will show you with a circuit board, but this can also be done with just bare wires.

If you want to make it easy, start by taking a small wood board, and drill a grid of 16 holes evenly spaced, I marked the spacing on a computer, and printed that and transferred it to the wood with a nail, and drilled them out. You can see the board in the following pictures.

I also marked on my board where I wanted to put stuff, made a mental note, then cleaned the marker off with alcohol, and cleaned the board with a pencil eraser to remove any oxidation. See the first photo for markings.

This step is critical that you get right, if you get this wrong, its a lot of effort to repair, do your best to get every single spire lined up the same orientation when you are sticking them into the circuit board or wood board.

See the second photo for example of putting the spires into the circuit board.

With all the LED spires set in the circuit board, put the wood board with the holes drilled into it, on top of the spires, you may need to wiggle each one to get it to fit into the holes. When you get them all in the holes, press the circuit board down, and that should fit them all in nicely, and level (the circuit board should be parallel with the wood board.) see the third photo for example.

Next you can solder the connector for the arduino in (or you can wait till later if you prefer to focus on getting this wiring right!) The 4th photo shows the connectors soldered in, the 5 shows some tools and wiring, there will be lots of complex wiring, as shown in the next several photos. I will add the wiring schematics in a page of its own.

Look over the images, you will see a progression of circuitry from the cube to the connector for the microcontroller. Then the second to last picture is how it will look when you have finished soldering it, but havnt plugged in the microcontroller yet. The last picture shows how to do the wiring without a circuit board, I'll make another instructable about how to do that, its pretty tricky, but it looks real nice.

Step 4: Testing!

The last step is programming the microcontroller, and plugging it in, and testing.

You may have broken a solder joint, or not wired everything correctly. There are 4 different ways that I have miswired the cube, and Ive figured out how to compensate for it. I wont go into the details about how to program the microcontroller, but I will describe how to test the cube. Ive written a little program to help, You can use it to see how your cube is lighting, it should light up in a predictable sequence, but if not, you may need to change some code, or check your wiring. You pre-tested each spire, so those should be right, and assuming you put each spire in the same direction, that should be right, but the wiring is still easy to mess up.

You can start by running the sample programs that come with the cube, asher wrote a bunch of programs that should run if you upload them, watch the shift squares, and the fountain. You can also slow the cube down by changing the animation speed of each program. I like to comment out all but one program, and slow it down. if it starts at the right place, and does the right things, then Its mostly right. If you start with the fountain program, it should start at the bottom inside 4 LEDs, progress up 2,3,4, the light the outside square (12 LEDs), and go down 3,2,1. Slow it down and watch. If it doesnt start in the right place, you should get my cubeplex.h file, and look for flushfuffers, I have setup 8 flush buffers, 4 for common anode, 4 for common cathode, uncomment out the one for your cube, and test it again until you get it right. When fountain looks right, then try shift squares, it too should work right. If it works right, then you are probably good, but if you want to be certain every single LED is working right, then try my test program.


Here is my program to test your cube.


/******************************** Sequence THE DOT ****************************\
| | | | | Hacked up by hippynurd@gmail.com to suit his testing needs. |

| Inspired By: Jonah Glick | | Written By: Asher Glick | \******************************************************************************/

void SeqTheDot()

{ continuePattern = true;

int animationSpeed = 200; // change this to speed up or down.

// color= green; // change this to set a specific color or comment it out to cycle.

int xpos = 0;

int ypos = 0;

int zpos = 0;

while (continuePattern) {

for (xpos; xpos < 4; xpos++)

{ for (ypos; ypos < 4; ypos++)

{ for (zpos; zpos < 4; zpos++)

{

// drawLed(color,1,1,3);

// use this one to light up a specific LED drawLed(color,xpos,ypos,zpos);

flushBuffer();

clearBuffer();

delay(animationSpeed);

} zpos=0;

} ypos=0;

} xpos=0;

}

color=nextColor(color);

}

Step 5:

The first image is a schematic of a spire with brief explanation.

The second drawing illustrates how each spires leads are organized and labled a,b,c,d to a match with the wiring schemes a,b,c,d.
The next four drawings show the wiring for each letters group. Note, all "A"s use the same spire pin location, all the "B"s use the same spire pin location, ... You can make it easier to get them right by doing all As at a time, then the Bs, then the Cs, then the Ds. The first 2 sets are the easy ones.


Now its important to make sure that you have your cube oriented properly before moving on to the next step, connecting the cube to the arduino.

The cube connects to the arduino via 16 tri-state microcontroller ports. It holds 14 at input, one high, another low, and that lights up a specific LED.

The last diagram shows how you wire from the arduino to the cube from the circuit side of the board.

Side note:

You can add 75 ohm resistors to each arduino pin to make this a safer design,that maximizes the lifespan of all the parts, but it will run for years without them, and they may be under no excessive load as is.

Step 6:

Share

Recommendations

  • Optics Contest

    Optics Contest
  • Make it Glow Contest 2018

    Make it Glow Contest 2018
  • Plastics Contest

    Plastics Contest

38 Discussions

0
None
Mousepotato01

1 year ago

How can this build possibly work for common cathode rgb led's? Unless you implement shift registers I do not see how it could work the nano just does not have enough pins to use.

4 replies
0
None
HippyNerdMousepotato01

Reply 1 year ago

It does it with a special kind of multiplexing called charlieplexing, that only works with diodes (LEDs are diodes). This cubed has 64 voxels, and each voxel has 3 LEDs (red, green, blue). Thats a total of 192 LED, and obviously a nano doesnt have 192 I/O pins. Wired for charlieplexing, it turns out that you only need 16 I/O pins, and a nano does have enough for that.
A simple explanation of charlieplexing requires 2 LEDs, if you join both cathodes, or both anodes (either way works, just not both). and you connect a coin cell battery one way, it will light one LED, but not the other, if you reverse the battery, it will light the other LED, and not the first one.
If you look at one the diagrams that uses 4 RGB LEDs, you can see that its controlled with 4 leads. If you connect a battery to any two LEDs, one and only 1 LED will light, if you reverse polarity, it will light a different one.
With the 4 LED example (just like in the cube example), you can actually light any combination of LEDs within a single voxel. With a common anode spire, you ground one pin, and put a few volts on any combo of the other 3 pins to light up to 7 different colors, with combinations of red, blue and green.
Both of these examples are ideal charlieplexing, where every single wire combination works.

The top of this instructible has links to more details about charlieplexing, and my other instructibles about charliecubes.

0
None
Mousepotato01HippyNerd

Reply 1 year ago

I thank you sir. I have learned an very old lessen all over again for the first time. LOL FORGET WHAT YOU THINK YOU KNOW when attempting a new project never accomplished by yourself. That what you know is a safe bet WRONG... I continued to read all of your instructables about charlie cubes and learn where my ignorance was at. See my thought was how could it light up with the common lead intermixing with the other leads but I learned it's not what you already know forget that stuff within reason and start from scratch when attempting to build anything for the first time lol. My apologies sir. By the way very nice work on the Instructables you should be very proud of them.

0
None
HippyNerdMousepotato01

Reply 1 year ago

You are welcome buddy, im glad you enjoyed my instructibles.
These charliecubes are a very curious thing, the more you mess with them, the more fun things you learn. They are on the lower end of image quality, you can make better quality imaging with LED drivers or even shift registers, like you mentioned earlier.

0
None
Mousepotato01HippyNerd

Reply 1 year ago

I would love to see instructions on the other cubes the Constant current cube, the Transistor cube, The Naked Charlie Cube, and last but certainly not least Shift Register Cubes Please sir. The Constant Current looks like you use TLC5940 IC's? I used many of them in my PROJECT ALICE:RED QUEEN diorama sign I have been working on for the past 13 months with over 900 man hours into it this far. It has many things involved RGB led's UV led's EL-WIRE RGB and UV stip leds animatronics with servo motors and coloring with Rave fluorescent black light reactive paints powders glow in the dark luminescent phosphorous pigments tinting silicone used in sculptures of most of the characters from every Alice in Wonderland movie or cartoon including father time the red queen twins guards card solders Cheshire cat Absolem the caterpillar and many others tinted with the coloring methods mentioned. I have reached the halfway point with the project it is ready to be wired into the circuit boards after I build them. Your cubes however may be of great help with my project if I may get some info on the builds they may help me iron out the programming for some of the lighting if you would be so kind to provide me with some build information and possibly some basic code to operate them after I build them to be certain they work properly so then I may use what I have and work with it to iron out the bugs and any additional writing I may do or add. I have been to your web site BRAVO to you Sir exceptionally nice job. I may even be willing to purchase the kits from your store if it would help obtain information on the 4 builds. The current cube if the IC's are TLC5940 chips then that would be almost the identical application I will be using to run the 5050 RGB Diodes I have installed inside the Mushroom and flowers of my project only thing is I have 72 of them in the Mushrooms along with El-Wire and another 47 in the Flowers portion also with El-Wire Illuminating the silicone in my build. The cube would be of great help in using the cube to work with my software in lower numbers of diodes. I am sure you can see my point. If you look at this instructable you possibly can see some of the work as it was unfolding and progressing from basic ideas on a picture to foam mock ups then some in actual silicone.(https://www.instructables.com/id/Enchanted-Forest-Mushroom-Lights/?commentId=CSB3B55J12O2D0X)

0
None
Mousepotato01

1 year ago

If you like this cube then Challenge yourself to make a 16x16x16 rgb cube using 74HC595 Shift Registers (unlimited Pins). I currently am working on a cube now. Maybe in a year I will have it completed to post back here.

1 reply
0
None
HippyNerdMousepotato01

Reply 1 year ago

Yeah, shift registers are a neat way to do it. I converted my first cube (4x4x4 white LED cube running on an uno). Then I made my very first instructible (almost 5 years ago...) Its a pretty crappy instructible, Ive gotten better at it since, but here it is.

https://www.instructables.com/id/4x4x4-LED-cube-up...

Ive seen cubes as big as 32x32x32, but havent tried over 4x4x4. I might consider an 8x8x8, but even then its a lot of LEDs (512), thats over 2,000 solder joints just for the LEDs alone.

I havent made any cubes with individually addressable LEDs, The circuitry is kind of weird, but not impossible.

I have some other cubes on this website, and you can see that I did build a 4x4x4 RGB cube using shift registers. I also built one using LED drivers (fancy shift registers designed specifically for controlling LEDs)

https://sites.google.com/site/rgbledcubes/

Good luck with your cube, I would like to see it, and I hope you write something so others can maybe give it a go too!

0
None
grandpayum

2 years ago

could you scale this up? 5x5x5 cube or so? or does this max out the usability of an arduino

2 replies
0
None
HippyNerdgrandpayum

Reply 2 years ago

This is kind of limited to 4, because common LEDs have 4 leads (3 LEDs), if you had 4 color LEDs with 5 leads, you could do a 5x5x5. the 4x4x4 cube uses 16 pins to control 192 LEDs (3x4x4x4), and you would need to control a lot more LEDs, so it makes sense that you would need more pins to control it, the charliecube is not ideal, you could actually control more than 192 LEDs with 16 pins (240 LEDS). 5x5x5 cube uses 125 voxels, and if they have 4 LEDs each voxels, and thats 500 LEDs to control. If you could ideally control the 500 LEDs, you would need 23 microcontroller pins, and that is too many for a uno, or nano, or many of the arduinos, but not all, you could use a mega, or some other micro that has 23+ pins.
I guess the answer is maybe, under the right circumstances, but probably not.
It is possible to do an 8x8x8 cube, by stacking 2 spires to make one, it would require 8 leads for 2 spires, 4 for the bottom half, and 4 for the top half, and a lot of crazy wiring to make it all work.

0
None
Mousepotato01HippyNerd

Reply 1 year ago

74HC595 Shift Registers (unlimited Pins) if you use them any arduino can make any size cube you can possably imagine.

0
None
MikeRich

2 years ago

I built your common anode version and got the tables right, all of the colors light when and where they are supposed to, but... Have you had any problems with 'ghosting.'? fre example, If I light green at 0,0,0 it comes on full brightness, however six other reds come on, very dimly. I tried adding resistors to the wires, but that did not help. I put a volt meter across the red leads and there is only 0.9V, which should not be enough to cross fhe Vf threshold.

v

7 replies
0
None
HippyNerdMikeRich

Reply 2 years ago

DIfferent color LEDs have different forward voltages, the red ones are always very low, usually just under 2 volts, and the blue and green are around 3 volts. The ghosting you are seeing is a direct result of the unequal pairing. Since the microcontroller is running at 5v, and this design doesnt use resistors, technically they are runing much higher voltage (and current) than they should be, but the resistor value is different for different color LEDs, so you cant add one size resistor to equalize things. I have found that adding a resistor on each of the 16 microcontroller leads does help reduce the ghosting some, but it comes at the cost of brightness.
If the cube is run in daylight, its hard to see, if the cube is run in the dark, then being dimmer is not really a problem.
Ive used between 75 and 150 ohms, and 100 ohms seems to work pretty good, but there is no perfect/ideal value.
There is also a little bit of an issue with the built in LED on pin 13. Some folks remove the LED, others have re-wired and programmed to use a different pin than 13. It doesnt bother me, so I havnt bothered to change it.

0
None
HippyNerdaljohnjesar

Reply 2 years ago

This is the common anode version. I also have a common anode version that I discuss here:

https://www.instructables.com/id/Hacking-the-CharlieCube/

0
None
aljohnjesarHippyNerd

Reply 2 years ago

Hey can i build a common cathode rgb. Using this format?

0
None
MikeRichHippyNerd

Reply 2 years ago

Got around to looking at this again. Put all of the resistors in place. Fixed a lot of the ghosting, but not all. Removed the D13 onboard LED and NO MORE GHOSTS! Thanks for the tips. As soon as I get a case made for it, I will post a picture of my work.

0
None
HippyNerdMikeRich

Reply 2 years ago

Awesome buddy, thats great news. Now that you have a working cube, you can mess with programs, and really make it your own thing.