See step 17 for more info regarding the music input mode for non-RAMP boards.

There are now 7 music modes in the posted code, and I am looking for more ideas for animations or music triggered effects !

SKIP DIRECTLY TO STEP 1 if you just want to get to the improved build instructions

See step 18 for my latest released Boards and features and subscriber videos of their completed cubes!

See step 19 for the most recent or upcoming design previews and demos.

Don't forget to check out my RGB cube and drop by TheLEDCube.com for more videos and info!

I want to acknowledge that so many here contributed ideas and support, and although there are too many to name now, I did want to acknowledge my gratitude for all that contributed to the project.
I am so happy that the printed circuit boards I developed helped those that wanted or needed them, whether they had put in months of work, and just couldn't get the circuit working,just wanted to eliminate all those wires, wanted a PC Board but didn't know how to design them, designed a circuit board and then realized how expensive they can be to have fabricated, didn't know how to read schematics, were up against a school project deadline, or just loved the added features like the music input and remote control - I am happy that so many were able to benefit from them.
I myself was so taken with the original project, that if I didn't have the knowledge or skill or resources to design a PCB, or wire up the circuit myself,I would have gladly bought a board if they were available.
Unfortunately, none were in theoriginal instructable by CHR when I had first seen it. If you couldn't hand build it, you were on your own, and I felt very sorry for those that tried and failed, or didn't even know where to start.

PLEASE DON'T ASK FOR EAGLE FILES for the PCBoards. It wasn't designed in Eagle, so there aren't any.

Now...on to the instructable.

I was immediately enthralled with the LED Cube instructable by CHR .
I am going to give a piece of advice I saw there that made a lot of sense. READ EVERYTHING including all the comments.
Often there is information and answers to questions that may answer a question you might have.

I thought "I COULD MAKE THAT" (and I did, making little improvements along the way) - but I took it a step further, and decided that I would try to make it so that almost anybody could make it as long as they could solder and could tell the difference between the different parts.
That is the reason I created the PCBoards to control the cube, and eventually even a Cube Base Board which all but eliminates the point-to-point wiring from the project. I loved the project but hated all the messy wires everywhere.
I have also supplied demo code (both the original code and many of my modifications), and clickable AVR initializer and code uploader utilities to get the code onto the board quickly and easily for those that aren't comfortable with dos-prompt based utilities like AVRDude.
There is also a pinout / connection chart that you can use to design and troubleshoot your own board using the Arduino, ATmega328P, or the more capable ATmega32 microcontroller for extended functions.

The hardest part is building a cube that is straight and square. I will be addressing this first.
If you use my construction methods, your cube should be as straight and square as in photos above.

I have a good electronics background, so I immediately wanted to build one of these cubes the second I saw it.
The more I got into it and read the comments on hiswell documented instructable, the more I thought I might be able to help people with less of an electronics background understand exactly how this thing actually works, and troubleshoot problems.
People were asking all kinds of questions long after people that really knew the circuit stopped answering them, and I found myself answering questions in his instructable on a fairly regular basis.
Finally, I knew enough to make what I hoped would be an easier to understand instructable.
Not only that, I have made a few improvements along the way as well, and eventually even PC Boards for myself, and got extras for those that might also want them

As I start out, I realize I will be "winging it" a lot here, so forgive me if I am unclear at any point, and feel free to ask questions.
If you see ANODE written where you know it should be CATHODE - or vice-versa - let me know. Sometimes I get tired when writing and get electronic dyslexia, and mix them up. I have tried my best to proof read my instructions to make sure this hasn't happened.
Try to keep in mind during construction that there is one cathode connection per layer, and 64 anode connections.

I will ask however that if you are getting ready to build one of these, Especially if you want to build your own circuit, that you go through CHRs well documented instructable FIRST, and then read through this one.

Try to build his controller circuit if you can, and feel free to contact me if you run into trouble (which almost everyone does).
THIS can be a VERY daunting task. Many people find they can build the physical cube, and are able to solder connections easily enough, but when it comes to constructing the actual circuit, that's where it all usually falls apart.
Troubleshooting a point-to-point hand wired circuit is not easy, even if you know what you're doing.
FEAR NOT ! As this instructable progresses, I will be working on a number of circuit boards that will include features requested by people here, and at varying levels of soldering expertise all the way from simple through hole soldering to completely surface mount technology boards.
You will be able to purchase these boards when they are available, and prices drop as more requests for boards come in due to volume discounts. Just don't expect them to be five bucks - I won't be mass producing them which makes my cost a lot higher.
Watch for board revisions if you have made a recommendation or request for a board feature that I liked

Music triggered modes for those with my circuit boards... (I'll be working on more as suggestions come in) - LATEST CODE IS NOW posted on STEP 10

Sorry about the video quality on this one, but I was in a hurry to get these posted and didn't take the time to adjust the camera well.

Just hit the MUSIC button on your board (Black Edition V3.5 and higher, ARMS series or RAMP series) or wireless remote (ARMS and RAMP series boards only) to cycle through the music modes.
Previous 5 mode code is on STEP 12 so you guys with the new boards can play with it! I will be adding to it though!
The code works with both wired input as described in step 17 ,built onto the board (RAMP boards only), or using the Mic Module in the parts list (3.5A and above, ARMS or RAMP boards)

If you are thinking "Big deal, I have seen cubes react to music in other videos" - well, we are doing it WITHOUT a PC hooked up to the serial port! That's right, the ATmega32 is doing this on it's own. What is more, with the Mic module option, this means you could take your cube to a party and set it somewhere (that nobody can touch it) and let it react to the music without even hooking anything up to it.

This instructable has mutated over the past few months, and you'll see a bunch of end results before we get into how to make the cube, and the improvements that have been made over the original construction techniques and original circuit, as well as improvements made on the PC Boards over time.

A couple quick videos of my cube in action are above.
The first video is the cube as a standalone device, and the "Cube Perry" video is under PC control via the TTL Serial port and a script written in Processing.
The serial port is key to allowing it to be controlled by things like a PIC, another Arduino or PCDuino or PC computer .

Stand-Alone Music Input! The video below demonstrates this addition to the circuit,

The schematic is on step 17 for connecting an audio source to previous board versions.

By the way - come back here every few days to check up on this instructable. I tend to add to it without notice!
This includes additions and revisions to the code.

If you have tried to make your own controller - or just know you couldn't build one from scratch, but COULD solder a PC board, then ask me about what boards are available.

Send me a private message for details.

NOTE: If you downloaded the 5 mode music hex file before Jan 12, you need to download the latest code.
The music modes originally used up a little too much RAM in the AVR, and when the Fireworks effect would try to initiate, the cube would reset. This has been fixed by reducing the firework sparkles from 60 to 40. The new 5 music mode HEX file does not have this problem now when running in animation mode. Fortunately I first ran into this issue with the Arduino when porting over the same routine. Since the fonts go into RAM rather than EEPROM on the ATmega328p, there was a lot less RAM to utilize, and this is why there are only 30 sparkles in the fireworks routine that was ported to the Arduino portable code.

The ARMS and RAMP series boards have an area marked off where the wireless remote module goes. If you are NOT going to use the wireless remote module, none of the parts in that area need to be put on the board, and you don't need to purchase the remote module. Likewise, if you don't want acoustic music response, you don't need to purchase the Mic module.

And now on to our regularly scheduled program (How To Make The LED Cube)

Step 1: There's Got to Be a Better Way...OR "Building the Perfect Cube".

I hated how hard it was always to align the LEDs when soldering them together though, and thought "THERE'S GOT TO BE A BETTER WAY" ... but HOW?

I thought "If the LED leads were on the edge of the LED, it would be a snap to line them up.
So it hit me...MOVE the anode to the outside of the LED. If the anode coming from the LED above was on the outside edge, the LED below could sit directly under the LED above it. And if the legs were on the outer perimeter, they would line up easily to be soldered. Not only that, it takes care of measuring because if you solder the leads at the point where they meet, it would always be the exact same distance every time!
So I started bending the leads in this manner, but I was soon suffering from finger fatigue, and it was hard to make the bends precise. Once again, I was thinking there had to be a better way. I tried to think of how a machine programmed to do this automatically would work, and how I could emulate that machine manually. After much thought, I had an idea.

So I made a small jig out of an old X-Box heat sink, but you could use almost anything you can drill a precise hole into that won't easily wear.

Drill a hole the exact size of the LED you are using. If the hole does wear or is a bit big, stick some tape over half the hole, and shove in an LED, and then stick the tape down good. The LED will bring the tape inside the hole and make it a tighter fit. Once the tape is nice and secure, remove the LED. You want the fit to be snug, but not so tight that it's hard to remove the LED.
Mine would be snug enough that I added an aluminum "eject" lever as well to help pop the LEDs out of the jig.
I tried to loosen the hole up a bit, but then had to add tape because I widened it too much! LOL.
Wnem I moved up to the "hat top" LEDs, sticking in the hole no longer seemed to be an issue.
<p>Made it! Used Supertech's Ramp board. Fun project, working on a few more. Thanks Supertech for all your help! </p><p><iframe allowfullscreen="" frameborder="0" height="281" src="//www.youtube.com/embed/DfM-G4Ppf6Y" width="500"></iframe></p>
Kindly send me thes code<br>Chiranjitkarmakar838@gmail.com
<p>LOL - that song takes me back! Nice looking cube! Glad I could help !</p>
<p>Sent you a private message about your boards please let me know.</p><p>Thanks</p>
<p>I have no idea what this is...lol...if I sent you a private message, please REPLY to it...LOL</p>
<p>My LED cube encased in 2-way mirrored acrylic.</p>
<p>I love it, had this same idea! Any chances to see it working?</p>
<p>Forgot to respond to this. Here's a YouTube video going through the different music modes with a Aux-in circuit. Video really doesn't do the 2 way mirror justice, but you get the idea. At the end of the video, I show how easy it is to toggle to the mic input. It is much less responsive, but you can't argue with a pre-built mic circuit for $4...</p><p>https://www.youtube.com/watch?v=pUF2gaMFZ0w</p>
<p>Great! This is the design I used on my 8x8x8 cube, still working on it though!</p>
<p>I just completed constructing my cube two days ago. The instructions and methodology given by SuperTech-IT are spot-on. I deviated slightly by attaching the layers together with them upside down (like a dead bug) instead of on its side like SuperTech indicates. That seemed easier at the time, HOWEVER, my cube ended up a little slanted as a result. You can't really tell too much from my photo. I'd probably do the next one on its side to guarantee perfect alignment.</p><p>I also bought a spool of narrow-gauge galvanized wire and straightened using CHR's methodology. I used three of these on each layer (middle and each side) to reinforce. This seemed a little easier and less tedious than using clipped LED leads.</p><p>The &quot;S&quot; shaped gaff was indispensable in assembling the layers and getting the finished cube mounted on the PC board. You WILL need one of these. Just make it out of a piece of straightened wire.</p><p>I highly recommend getting the circuit boards from SuperTech-IT if he still has them for this cube. It will shave incredible amounts of time off your construction..</p><p>Though I didn't need significant amounts of help from SuperTech-IT in construction and debugging (you have minimal problems when using pre-fab circuit boards), he has been incredibly responsive and helpful in addressing my questions. I have close friends that are less responsive. ;-)</p><p>For my USB programmer, I used a SainSmart I got thru Amazon. This gave me errors with Avrdude when trying to program. Initially I thought I had fried some part of the circuit or had done a bad solder joint. SainSmart has a GUI-based programmer called PROGISP that could program the ATMEGA. My board was fine. Of course I forgot to set the fuse-bits. POST ran incredibly slow and it looked like I had two completely failed layers. This was fixed when I used the PROGISP tool to se the fuse-bits.</p><p>This was a fun project. Now I can set about to customize the effects and create some new ones.</p><p>Thank you, SuperTechIT -- this has been the most rewarding Instructable I've ever done.</p>
<p>I ended up having ghosting on layer 2 of my cube. When pixels above that layer would light, the layer 2 ones would as well, albeit dimly. Come to find out (with SuperTech-IT's help), I had my transistors in backward. I thought I had checked and double-checked. It's about the easiest part to install incorrectly. CHECK YOUR TRANSISTORS if there's any problems. The P2N2222A transistors I got from DigiKey need to mount with the flat side facing away from the 40-pin connectors. I will reverse my transistors later today to see if the situation is improved.</p>
<p>Yup, someone else had the identical issue on a hand wired board on CHR's instructable page just last week. If you check <a href="https://www.instructables.com/id/Led-Cube-8x8x8/" rel="nofollow">here</a> at the comment by <a href="https://www.instructables.com/member/Tiimmee/" rel="nofollow" style="">Tiimmee</a> you'll see the issue was almost exactly the same, and the fix was the same for him.</p>
Post here on step 18 to show off your cube, new effects, music response demos or whatever! You deserve a pat on the back and a place to showcase your work!
<p>hello, are you still around... I tried contacting you via your ledcube store a couple weeks ago.</p><p>I bought some boards from you and am now getting around to building... I have a few questions... please contact me... thanks</p><p>bill</p>
<p>It's best to email me directly at SuperTech (at) TheLEDCube (dot) com</p>
Hello. Has a tip to turn this cube with 74hc595 from 8x8x8 to 10x10x10. I'm not getting.<br> #include <br> #include <br> #define AXIS_X 1<br> #define AXIS_Y 2<br> #define AXIS_Z 3<br> <br> int latchPin = 10;<br> int clockPin = 13;<br> int dataPin = 11;<br> int latchPinPORTB = latchPin - 8;<br> //holds value for all the pins, [x][y][z]<br> byte cube[8][8];<br> <br> //Contagem atraves das camadas<br> int current_layer = 0;<br> <br> //--- esse processo &eacute; rodado pelo temporizador e faz controle PWM<br> void iProcess(){<br> //ultimo armazenamento de camada<br> int oldLayerBit = current_layer + 2;<br> <br> //incrementa contagem de camada<br> current_layer++;<br> if(current_layer &gt;= 8){<br> current_layer = 0;<br> }<br> <br> //--- Executado atrav&eacute;s de todos os valores do registo de deslocamento e envi&aacute;-los (&uacute;ltimo primeiro)<br> // travamento no processo<br> latchOff();<br> for (int i = 0 ; i &lt; 8 ; i++){<br> spi_transfer(cube[current_layer][i]);<br> }<br> <br> //Esconder a camada antiga<br> digitalWrite(oldLayerBit, LOW);<br> //Novos dados sobre os pinos<br> latchOn();<br> //nova camada de alta<br> digitalWrite(current_layer + 2, HIGH);<br> }<br> <br> //--- Acesso porta direta trancando<br> void latchOn(){<br> bitSet(PORTB,latchPinPORTB);<br> }<br> void latchOff(){<br> bitClear(PORTB,latchPinPORTB);<br> }<br> <br> //--- Usado para configurar SPI baseado em configura&ccedil;&atilde;o atual pin<br> // isso &eacute; chamado na rotina de instala&ccedil;&atilde;o;<br> void setupSPI(){<br> byte clr;<br> SPCR |= ( (1&lt; SPCR &amp;= ~( (1&lt; clr=SPSR; // clear SPI status reg<br> clr=SPDR; // clear SPI data reg<br> SPSR |= (1&lt; delay(10);<br> }<br> <br> //--- A vers&atilde;o muito r&aacute;pido SPI de shiftOut<br> byte spi_transfer(byte data)<br> {<br> SPDR = data; // Start the transmission<br> loop_until_bit_is_set(SPSR, SPIF);<br> return SPDR; // return the received byte, we don't need that<br> }<br> <br> void setup() {<br> Serial.begin(9600);<br> <br> //layer pins<br> for(int i = 2; i &lt; 10; i++)<br> {<br> pinMode(i, OUTPUT);<br> }<br> <br> pinMode(latchPin, OUTPUT);<br> pinMode(clockPin, OUTPUT);<br> pinMode(dataPin, OUTPUT);<br> <br> digitalWrite(latchPin,LOW);<br> digitalWrite(dataPin,LOW);<br> digitalWrite(clockPin,LOW);<br> <br> //--- Setup to run SPI<br> setupSPI();<br> <br> //--- Activate the PWM timer<br> Timer1.initialize(100); // Timer for updating pwm pins<br> Timer1.attachInterrupt(iProcess);<br> }<br> <br> <br> void loop(){<br> int i,x,y,z;<br> <br> while (true)<br> {<br> effect_path_text (1000, &quot;boa noite makers&quot;);<br> }<br> <br> }<br>void effect_path_text (int delay, char *str)<br>{<br> fill(0x00);<br> int z, i,ii;<br> z = 4;<br> unsigned char path[28];<br> font_getpath(0,path,28);<br> unsigned char chr[5];<br> unsigned char stripe;<br> <br> <br> while (*str)<br> {<br> font_getchar(*str++, chr);<br> <br> for (ii=0;ii&lt;5;ii++)<br> {<br> //stripe = font[(chr*5)+ii];<br> stripe = chr[ii];<br> <br> for (z=0;z&lt;8;z++)<br> {<br> if ((stripe&gt;&gt;(7-z)) &amp; 0x01)<br> {<br> setvoxel(0,7,z);<br> } else<br> {<br> clrvoxel(0,7,z);<br> }<br> <br> }<br> effect_pathmove(path, 28);<br> delay_ms(delay);<br> }<br> <br> effect_pathmove(path, 28);<br> delay_ms(delay);<br> }<br> for (i=0;i&lt;28;i++)<br> {<br> effect_pathmove(path, 28);<br> delay_ms(delay);<br> }<br>}<br>void fill (unsigned char pattern)<br>{<br> int z;<br> int y;<br> for (z=0;z&lt;8;z++)<br> {<br> for (y=0;y&lt;8;y++)<br> {<br> cube[z][y] = pattern;<br> }<br> }<br>}<br>const unsigned char paths[44] = {<br> 0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x10,0x20,0x30,<br> 0x40,0x50,0x60,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,<br> 0x67,0x57,0x47,0x37,0x27,0x17,0x04,0x03,0x12,0x21,0x30,<br> 0x40,0x51,0x62,0x73,0x74,0x65,0x56,0x47,0x37,0x26,0x15}; // circle, len 16, offset 28<br><br>void font_getpath (unsigned char path, unsigned char *destination, int length)<br>{<br> int i;<br> int offset = 0;<br> <br> if (path == 1)<br> offset=28;<br> <br> for (i = 0; i &lt; length; i++)<br> destination[i] = paths[i+offset];<br>}<br>void font_getchar (char chr, unsigned char dst[5])<br>{<br> int i;<br> chr -= 32;<br><br> unsigned char font[455] = {<br> 0x00,0x00,0x00,0x00,0x00,0x00,0x5f,0x5f,0x00,0x00, // !<br> 0x00,0x03,0x00,0x03,0x00,0x14,0x7f,0x14,0x7f,0x14, // &quot;#<br> 0x24,0x2a,0x7f,0x2a,0x12,0x23,0x13,0x08,0x64,0x62, // $%<br> 0x36,0x49,0x55,0x22,0x50,0x00,0x05,0x03,0x00,0x00, // &amp;'<br> 0x00,0x1c,0x22,0x41,0x00,0x00,0x41,0x22,0x1c,0x00, // ()<br> 0x14,0x08,0x3e,0x08,0x14,0x08,0x08,0x3e,0x08,0x08, // *+<br> 0x00,0x50,0x30,0x00,0x00,0x08,0x08,0x08,0x08,0x08, // ,-<br> 0x00,0x60,0x60,0x00,0x00,0x20,0x10,0x08,0x04,0x02, // ./<br> 0x3e,0x51,0x49,0x45,0x3e,0x00,0x42,0x7f,0x40,0x00, // 01<br> 0x42,0x61,0x51,0x49,0x46,0x21,0x41,0x45,0x4b,0x31, // 23<br> 0x18,0x14,0x12,0x7f,0x10,0x27,0x45,0x45,0x45,0x39, // 45<br> 0x3c,0x4a,0x49,0x49,0x30,0x01,0x71,0x09,0x05,0x03, // 67<br> 0x36,0x49,0x49,0x49,0x36,0x06,0x49,0x49,0x29,0x1e, // 89<br> 0x00,0x36,0x36,0x00,0x00,0x00,0x56,0x36,0x00,0x00, // :;<br> 0x08,0x14,0x22,0x41,0x00,0x14,0x14,0x14,0x14,0x14, // &lt;=<br> 0x00,0x41,0x22,0x14,0x08,0x02,0x01,0x51,0x09,0x06, // &gt;?<br> 0x32,0x49,0x79,0x41,0x3e,0x7e,0x11,0x11,0x11,0x7e, // @A<br> 0x7f,0x49,0x49,0x49,0x36,0x3e,0x41,0x41,0x41,0x22, // BC<br> 0x7f,0x41,0x41,0x22,0x1c,0x7f,0x49,0x49,0x49,0x41, // DE<br> 0x7f,0x09,0x09,0x09,0x01,0x3e,0x41,0x49,0x49,0x7a, // FG<br> 0x7f,0x08,0x08,0x08,0x7f,0x00,0x41,0x7f,0x41,0x00, // HI<br> 0x20,0x40,0x41,0x3f,0x01,0x7f,0x08,0x14,0x22,0x41, // JK<br> 0x7f,0x40,0x40,0x40,0x40,0x7f,0x02,0x0c,0x02,0x7f, // LM<br> 0x7f,0x04,0x08,0x10,0x7f,0x3e,0x41,0x41,0x41,0x3e, // NO<br> 0x7f,0x09,0x09,0x09,0x06,0x3e,0x41,0x51,0x21,0x5e, // PQ<br> 0x7f,0x09,0x19,0x29,0x46,0x46,0x49,0x49,0x49,0x31, // RS<br> 0x01,0x01,0x7f,0x01,0x01,0x3f,0x40,0x40,0x40,0x3f, // TU<br> 0x1f,0x20,0x40,0x20,0x1f,0x3f,0x40,0x38,0x40,0x3f, // VW<br> 0x63,0x14,0x08,0x14,0x63,0x07,0x08,0x70,0x08,0x07, // XY<br> 0x61,0x51,0x49,0x45,0x43,0x00,0x7f,0x41,0x41,0x00, // Z[<br> 0x02,0x04,0x08,0x10,0x20,0x00,0x41,0x41,0x7f,0x00, // \]<br> 0x04,0x02,0x01,0x02,0x04,0x40,0x40,0x40,0x40,0x40, // ^_<br> 0x00,0x01,0x02,0x04,0x00,0x20,0x54,0x54,0x54,0x78, // `a<br> 0x7f,0x48,0x44,0x44,0x38,0x38,0x44,0x44,0x44,0x20, // bc<br> 0x38,0x44,0x44,0x48,0x7f,0x38,0x54,0x54,0x54,0x18, // de<br> 0x08,0x7e,0x09,0x01,0x02,0x0c,0x52,0x52,0x52,0x3e, // fg<br> 0x7f,0x08,0x04,0x04,0x78,0x00,0x44,0x7d,0x40,0x00, // hi<br> 0x20,0x40,0x44,0x3d,0x00,0x7f,0x10,0x28,0x44,0x00, // jk<br> 0x00,0x41,0x7f,0x40,0x00,0x7c,0x04,0x18,0x04,0x78, // lm<br> 0x7c,0x08,0x04,0x04,0x78,0x38,0x44,0x44,0x44,0x38, // no<br> 0x7c,0x14,0x14,0x14,0x08,0x08,0x14,0x14,0x18,0x7c, // pq<br> 0x7c,0x08,0x04,0x04,0x08,0x48,0x54,0x54,0x54,0x20, // rs<br> 0x04,0x3f,0x44,0x40,0x20,0x3c,0x40,0x40,0x20,0x7c, // tu<br> 0x1c,0x20,0x40,0x20,0x1c,0x3c,0x40,0x30,0x40,0x3c, // vw<br> 0x44,0x28,0x10,0x28,0x44,0x0c,0x50,0x50,0x50,0x3c, // xy<br> 0x44,0x64,0x54,0x4c,0x44 // z<br> };<br> for (i = 0; i &lt; 5; i++)<br> {<br> dst[i] = font[((uint8_t)chr*5)+((uint8_t)i)];<br> }<br>}<br>void setvoxel(int x, int y, int z)<br>{<br> if (inrange(x,y,z))<br> cube[z][y] |= (1 &lt;&lt; x);<br>}<br>void clrvoxel(int x, int y, int z)<br>{<br> if (inrange(x,y,z))<br> cube[z][y] &amp;= ~(1 &lt;&lt; x);<br>}<br>void effect_pathmove (unsigned char *path, int length)<br>{<br> int i,z;<br> unsigned char state;<br> <br> for (i=(length-1);i&gt;=1;i--)<br> {<br> for (z=0;z&lt;8;z++)<br> {<br> <br> state = getvoxel(((path[(i-1)]&gt;&gt;4) &amp; 0x0f), (path[(i-1)] &amp; 0x0f), z);<br> altervoxel(((path[i]&gt;&gt;4) &amp; 0x0f), (path[i] &amp; 0x0f), z, state);<br> }<br> }<br> for (i=0;i&lt;8;i++)<br> clrvoxel(((path[0]&gt;&gt;4) &amp; 0x0f), (path[0] &amp; 0x0f),i);<br>}<br>void delay_ms(uint16_t x)<br>{<br> uint8_t y, z;<br> for ( ; x &gt; 0 ; x--){<br> for ( y = 0 ; y &lt; 90 ; y++){<br> for ( z = 0 ; z &lt; 6 ; z++){<br> asm volatile (&quot;nop&quot;);<br> }<br> }<br> }<br>}<br>unsigned char inrange(int x, int y, int z)<br>{<br> if (x &gt;= 0 &amp;&amp; x &lt; 8 &amp;&amp; y &gt;= 0 &amp;&amp; y &lt; 8 &amp;&amp; z &gt;= 0 &amp;&amp; z &lt; 8)<br> {<br> return 0x01;<br> } else<br> {<br> return 0x00;<br> }<br>}<br>unsigned char getvoxel(int x, int y, int z)<br>{<br> if (inrange(x,y,z))<br> {<br> if (cube[z][y] &amp; (1 &lt;&lt; x))<br> {<br> return 0x01;<br> } else<br> {<br> return 0x00;<br> }<br> } else<br> {<br> return 0x00;<br> }<br>}<br>void altervoxel(int x, int y, int z, int state)<br>{<br> if (state == 1)<br> {<br> setvoxel(x,y,z);<br> } else<br> {<br> clrvoxel(x,y,z);<br> }<br>}
<p>Please don't clog up the instructable with code. Also, nobody has any idea if you are asking a question, or providing a solution. Please delete this when you have a chance. If it's a solution, I will put your code in a file where people can get it. If you have a question, please try to ask it better.</p>
Here is what is currently looks like.
My boards work for any cube built to CHR's way, but unfortunately right now my boards are out of stock with no firm ETA for new ones due to unforeseen circumstances plus a theft.<br>You can still pre-order the board (RAMP board) and you will have one shipped as soon as the new ones arrive - I just cannot say exactly when that is going to be next.
I built the cube in 2011 and even used The original schematics to have pcbs built. Unfortunately, even though the cube LEDs work the pcb to drive them did not. I'm not sure where I went wrong but I ended up putting the nicely built cube on the shelf and went on to other things. I would like to finish it but I have been unable to find a pcb kit that is in stock. Any ideas ?
Thanks for the arduino code u supplied works great. Do u know any place i can get more to add to it. I m horrible at coding, building it was the easy part.
We tried to make the code as easy to add to as possible. It's best to try to understand the existing code and then add to it yourself.
<p>Need a lil help here please.......I've build this cube and used arduino to program it along with 74HC595 shift registers and for layer control i used ULN2803 darlinton pair IC. I am confused with the connections. Can you tell me how should I make the connections with arduino to make my cube work with your code.....pls its really <strong>URGENT...please</strong></p>
<p>Why you decided to re-invent the wheel puzzles me when we have a perfectly working and tested design already. It's like you are saying &quot;I built your engine, but used a different carburetor and coils, and it won't work&quot;. It's hard to troubleshoot what is technically a completely different design that I have never tested. Tell me how you have it connected and the problems you are having and I'll see what I can do. Please give as much detail as possible. Also, you can check the excel spreadsheet on step 6 to see what is supposed to connect where in the original design. </p>
<p>very good job... I have built one but i can see here the schematic diagram to improve circuit for audio mode... i have modified the circuit like kukata86 show in his site : <a href="http://www.kukata86.com/en/deveopment-and-pictures-of-3d-led-cube" rel="nofollow">http://www.kukata86.com/en/deveopment-and-pictures...</a></p><p>keeping of course the new file hex and eep.... but don't work in the same way... the coreografy are all ok ...but not work with music and pressing the button to change modality of work i have not a change... </p><p>Please could you help me?</p><p>my pc for program has win764bit os and i have used usbtiny and avrdudes for programming.</p><p>Sorry for my english... i know that is not very good looking!</p><p>Sergio </p>
I dont inderstand how to made it . can u give me full schematic of this project?
the schematics are in CHR's instructable.
<p>but i cant find where is to put R.A.M.p like yours . <br></p><p>if I buy your board , I can not wait long to get to my country , Indonesia . LOL .<br>so I prefer to create own board . <br>i hope u understand my problem ..</p>
<p>HELP!!</p><p>How To run PC software code on windows machine?<br>My 3D functions not working. <br>I'm using a USB-TTL serial converter instead of RS232, and Arduino Mega.<br>I can post code of Arduino MEGA (altough it was already posted in one of the comments) and PC software if rrequired.<br>Everything compiles well. I'm using createfile() function under windows.h to create hCOM handle and writefile() function in the cube_push() function to write data to serial port..<br>Everything copiles well, but nothing shows up in the cube.<br>HELP!</p>
https://youtu.be/1B2fy-Eei_I<br><br>hi SuperTech-IT, this video has your POST running on my cube. please see it and tell me what is the problem?
<p>Wow. Either you are using the wrong microcontroller for the code you are running, or your microcontroller is damaged, or that is NOT MY POST running, or the circuit is so badly messed up that I doubt I could even tell you where to start. Sorry.</p>
SPOT ONN!! it ws the microcontroller itself..i ran your POST on my arduino...it worked like magic!!<br>thnxs for the genius advice!!<br>now i want to write the eeprom of arduino..how to make stringfly2 animation work on arduino!?i.e. how to flash eeprom of arduino!?
<p>I suppose there is some mismatch in the Q0-Q3 bits and Q4-Q7 bits..<br>what could it be?</p>
<p>I'm using ATmega32 only..<br>and that is your POST..(I just removed buttoning action..i'm focusing on running the code correctly)</p>
<p><iframe allowfullscreen="" frameborder="0" height="281" src="//www.youtube.com/embed/ekg4-vQpLJA" width="500"></iframe></p><p>Help Me SuperTech-IT !!<br>Unfortunatly your POST programm is not running..I dont know why..<br>It compiles well..but does not runs..<br>I'm having trouble in running animations...my LED cube connections are fine..all LEDS glow..but unfortunately...some(majority infact) animations dont run properly..<br>As you can clearly see for yourself...as far as i can decipher ..there is some difficulty in loading of 8bit data to the data line...because..the Q4-Q7 leds work fine..but upper half..i.e. Q0-Q3 leds are some time working..sometime not..<br>According to me..there is no short in circuit..hardware seems fine as of now..i think there may be some glitch in code..it has been 2 weeks i'm unable to run my cube completly...<br>Moreover..I'm on a windows machine...so the termios.h and pthreads used by CHR in his PC software part is giving me pains..Please suggest me a way out for this also..<br>Thanx for your time...<br>PLEASE HELP !! </p>
<p>This doesn't appear to be using my circuit boards, and the fact that you cannot run my POST program is also quite distressing. There's definitely a wiring issue, either on the control board, or between the controller and the cube itself, but I can't point out exactly where without seeing the POST running on the cube.</p>
i tried playing your post..<br>but i dont know why it is not running...<br>it is compiling very well but not running at all..plz help..<br>is there something to infer if post doesnt work at all?<br>but as you can see in video..for chr's program cube atleast runs..but animations not running completely...you suggest what to do..
thanx for for a prompt reply! I'll try to run the POST. and yes, i hand soldered a board.
<p>Im gonna make an acrylic case eventually</p>
<p>I finished my cube finally! I am using the arduino mega2560. If you are in need of code here is a link to the code on the arduino forum. <a href="https://forum.arduino.cc/index.php?topic=371012.0" rel="nofollow">https://forum.arduino.cc/index.php?topic=371012.0</a></p><p>Hope that helps!</p>
I like this instructable, too bad it is too difficult for me.
<p>controller board made &amp; Arduino board got installed on control board. Now just few connections from Arduino to control board &amp; its completed. Wait ...... my LED cube is not ready...by the time i finish makeing LED cude can some one send me codes to jameelsheik@gmail.com</p>
<p>Hi, I've added your project to the &quot;A Collection of WAAAY To Many 8X8X8 RGB LED Cubes!&quot; Collection</p><p>This is the link If you are interested:</p><p><a href="https://www.instructables.com/id/A-Collection-of-WAAAY-To-Many-8X8X8-RGB-LED-Cubes/">https://www.instructables.com/id/A-Collection-of-WA...</a></p>
<p>what is the different between your cube and the cube from CHR???</p>
<p>Functionally, nothing other than the music response.</p><p>Electronically, I use only 1 transistor per layer, and allow either the ATmega32 or the ATmega328P (arduino chip) to be placed on the board. Also I made a PC board for the circuit and an optional one for the base.</p>
<p>the Programm Codes are the same, so i ca build the like CHR or i buy your board</p>
<p>Yes, you can use his code, or the advanced code with extra and extended animations and music response found here.</p>
<p>Hi, can you pls tell me how did you make the connections for the cathode from each layer. The base layer has the 64 anode connections that have been inserted into the baseboard but what about the 8 cathode connections? How do i put them into the baseboard? do i have to use jumper wires or something?</p>
What I am about to say will make no sense if you're reading it on the main page or step 1, so please go to step 14 and continue reading there. <br> <br>As you can see, the base board has holes precisely positioned where each anode must go. So the best way to make your cube fit the base, is instead of using the printed template, put the base itself over your cardboard &quot;assembly&quot; template box. <br>Instead of poking a pin through the grid junctions in the paper template, instead poke a pin through each hole in the base board piercing the cardboard. <br>Then go back to step 3 and follow the rest of the instructions for constructing your assembly template and LED layers. This board makes the entire construction easier and more accurate.

About This Instructable




Bio: Just getting into the microcontroller craze. I used to do this sort of thing building circuits for 8 bit microprocessors back in the early 80s ... More »
More by SuperTech-IT:8X8X8 3D RGB LED Cube Arduino 8 A.C. Outlet (plug) Timer / Vampire Killer One Part $1 Computer Security Power Lockout 
Add instructable to: