LED CUBE CODE GENERATOR 4x4x4 Arduino

67,580

445

113

Posted

Introduction: LED CUBE CODE GENERATOR 4x4x4 Arduino

This is a tutorial on how to easier make patterns for your Arduino-controlled LED cube 4x4x4.

I recognized the difficulty a lot of people have with programming the LED cube after building it, so I have made a program to make this an easy task.

The program will work for those that used a Arduino to control their LED cube. I did not write the LED cube code and the person I got it from didn't either so I don't know who wrote it, but thanks!

I will talk a little about how I wired the cube and how the program works in the next steps!

Step 1: The LED Cube Code Generator

You can download the program from my shared Dropbox folder here LCCG DOWNLOAD. You do not need to be a dropbox user to download it. Or you can download it from this instructable as a .Zip file below.

The program is made for Windows so it will not work on Apple computers unless you have a virtual windows.

How you wired your Arduino to the cube is of course very important for this to work like it's supposed to, it is a description of the pins in the Arduino code but I will also explain this in the next step.


How the code generator program works:

There are 4 squares with checkboxes. These squares are called plane 1, 2, 3 and 4. The planes represents the cube like you would have seen it if you looked straight at it from the front, so these are the four vertical planes of the cube. This is so it is easier to visualize your patterns when you make them. If you did not understand the planes you can take a look at the pictures, I will post one there to clear it up

To make a pattern you would simply check the boxes representing the LED's you want to light up and you hit the "Generate" button. Now you will see a line of code being published in the textbox below. If you want the code to be faster or slower you can enter a certain time in the "Enter time in m/s" box before generating the code, or change it later with the "Change generated code time" box.

So one generate would make the LED's light up for that certain amount of time, and to make a pattern just repeat this process. There are some black boxes beside the checkboxes, these are for marking the full line of LED's to save time not having to click every single checkbox.

When you are satisfied with your code you can click Ctrl+C (you don't have to mark anything) and it will copy your code to the clipboard. Then you click the "Main Code" button (Hotkey = Ctrl+Enter), and your Arduino code will pop up. Insert your generated code into this code where it says "Replace this with generated code" and click "Copy to Clipboard".

Now all you have to do is open your Arduino program and insert the code you have in your clipboard (Ctrl+v).

Arduino can also be opened from the Code Generator program where it says "Open Arduino" if you have it installed at "C:\Program Files (x86)\Arduino\arduino.exe"


If you click the "info" button there will be short info about the program and the hotkeys are listed there.

Hotkeys:

Ctrl+I = Info box

Ctrl+A = Mark/Unmark all boxes

Ctrl+X = Uncheck all boxes

Ctrl+Z = Undo generated code

Ctrl+C = Copy generated code

Enter = Generate code

Ctrl+Enter = Open main Arduino code

Delete = Remove all generated code from textbox

Updates:

19.03.2015 - Changed the label names from "columns" to "planes" to make the explanation of the cube more clear. Nothing else was done so the previous version is just as good, but with different labels of the planes.

10.02.2016 - Added several pre made patterns as "Patterns.zip". Here you will find some fun patterns and one extensive one that you can just open and run right away on your LED cube.

Step 2: Building the LED Cube

This is not a instructable on how to build your LED cube, but I will explain how I did it and how this way is really simple. There are 3 pictures above that shows the soldering of the cube and how to wire everything up to the Arduino. Hopefully the Arduino drawing will be helpful.

Components used

1x Arduino Uno board

64x blue LED

1x Prototype board to mount everything on

4x 2n2222a transistors

16x ~ 95ohm resistors

4x ~1000 ohm resistors

Wires for easy plug and unplug.

Arduino Uno

I used the Arduino Uno board for my build, it has 20 digital I/O pins in total because the analog ones can also be used as digital pins. This is exactly enough to wire up the cube directly from the Arduino, which was the reason I did it. Because this is only my prototype before making the 8x8x8 cube, I wanted to make it as simple as possible.

The Arduino's digital pins can output 5V and 40mA.

The 4x4x4 cube is a total of 64 LEDs. The way it's wired it needs 16 digital outs for the Anodes and 4 digital outs for the Cathodes. The wiring will be explained in a picture above and in the text below.

The Wiring

The LEDs are wired like the picture above which gives us 16 Anodes and 4 Cathodes. Each of the anode and cathode is also marked with a number in the picture. The 16 Anodes will be connected to the digital pins:

"0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, A4, A5" in the order they are marked on the picture from 1 - 16. That means anode number 1 in the picture is digital out nr 0 on the arduino etc.

The same goes for the Cathodes where "floor" 1 is A0, "floor" 2 is A1 etc.

"A0, A1, A2, A3".

I used blue LEDs that run on 3.1V and 20mA. Since the Arduino gives out 5V this would destroy my LEDs so you need a resistor between the digital out and the LEDs to convert the 5V to 3.1V and 20mA. This is done by using the formula: (Vs - Vd) / I

Vs = Source voltage = 5V, Vd = Diode Voltage = 3.1V, I = Max current the LEDs can handle = 20mA = 0,02A

Which gives us (5 - 3.1) / 0,02 = 95 ohm.

So we would need to add 16pcs of 95ohm resistors between the digital out and the anodes to keep the LEDs from burning and to make it light up at it's full potential.

For the 4 cathode wires we would need to ground them, but we also need to control when to ground them, so we use transistors. Using transistors enables us to use a +5V digital out from the Arduino to control a transistor that is used as a switch to ground the cathode layers. I used 4 pcs of 2n2222a transistors because they can handle the current and they are fast enough.

There can be maximum 1 layer on at a time which gives us 16 * 20mA = 320mA. This is the amount of current the transistor needs to be able to handle. It is also important to use NPN and not PNP transistors.

The wire from the first floor cathode goes to the collector of the transistor.

The emitter is connected to ground on the Arduino.

And the base of the transistor is connected to a 1kohm resistor and then to the pin A0.

Repeat this for the remaining 3 floors of cathodes.

So to summarize the wiring:

16 digital out's to - 95ohm resistors, from there to the 16 anodes.

4 digital out's to - 1kohm resistors, from there to the base of the transistors.

From the cube's 4 floor cathodes to the transistor "collector".

From the transistor "emitter" to ground on the Arduino.

And that's all there is to it, if you have any questions feel free to comment.

7 People Made This Project!

Recommendations

  • Epilog Challenge 9

    Epilog Challenge 9
  • Sew Warm Contest 2018

    Sew Warm Contest 2018
  • Gluten Free Challenge

    Gluten Free Challenge
user

We have a be nice policy.
Please be positive and constructive.

Tips

Questions

100 Comments

hello

can u share the code for atmega328p?

hey budddy so i built a really big 4x4x4 and i built it backwards or opposite and im having a hard time i guess finding the correct pinout the cube lights up but doesnt do what it should. i copied codes and tryed them out and im not getting the right animations i assume its not hooked up to right pins can u offer help to get the cube proper
tha ks a mill

I just learned a little more about sinking current with the arduino and I think we can solve it with a little change in the code. I'm not sure but you can try it out.

So what you do is you wire the 4 planes that you now have as anodes to A0, A1, A2, A3. And then you connect your 16 cathodes to the rest of the pins. So basicly just the same way as the picture I have of the arduino with connections but you remove the transistors and your cube is opposite.

What we see now is that you only have 4 pins to supply current (A0-A3) and you have to define the 16 pins to sink current, this means they function like ground because their potential is defined as 0V so you get current flow. Only having 4 pins to supply voltage could be a potential problem if they cannot supply enough, but since the LEDs are on for only a cycle (they blink really fast) the current needed is less and I think it might work.

Use 16pcs of 100ohm resistors between the arduino pins and the cathodes. If you didn't understand this, just let me know and I'll make a schematic. I will inbox you the code changes so you can try it out.

Hi there, I was hoping to find a way to program the lights, GREAT WORK! I have a question, however, when you explain LCCG - OPPOSITE.exe you make it sound like no big deal if the cube was wired that way - "If you wired your cube "opposite" and made the anodes the floors and the cathodes the columns then you can simply download the "LCCG OPPOSITE" instead." Mine is!I simply follow the schematic still? on 10-31-2015, you talk about removing the transistors and having new code...

"So what you do is you wire the 4 planes that you now have as anodes to A0, A1, A2, A3. And then you connect your 16 cathodes to the rest of the pins. So basicly just the same way as the picture I have of the arduino with connections but you remove the transistors and your cube is opposite."

I'm not sure what to do, I was going to etch a board for this so any help you can provided would be appreciated.

Would you be willing to give me the schematic for this as I have my planes as anodes and have the 16 cathodes to the rest of the pins?

was thus directed at me. ? the cube works with kylethecreators code n pinout. how can i use ur method to use b1000 with same pinout or what pinout do i use my cube is wired backwards

where is the wiring for led cube
will the code generated be for arduino uno

Am a novice and is confused.

On
https://www.instructables.com/id/4x4x4-LED-Cube-Arduino-Uno/step2/Making-The-LED-Jig/I
see the anodes horizontally and cathodes connected vertically.

On
https://www.instructables.com/id/LED-CUBE-CODE-4x4x4-Arduino/I see the vertical
anodes and cathodes horizontally.

I am wrong and how is
it anyway?

LCCG and LCCG OPPOSITE zip files contain what seems to be the same generator. I have my cube wired in the opposite manner and when I try to generate a pattern using the generator, my cube lights up erratically. I would like to show only one LED on at a time.

Also, I did not use transistors on my plane pins. Could this be the problem?