2.5D Edge Lighting Pixel LED Cube




Introduction: 2.5D Edge Lighting Pixel LED Cube

About: A Interaction Designer with Industrial Design and EE background. Maker since a kid. Super grateful to new technology and online communities made everything possible!

LEDs are awesome, they are so tiny but bright, colorful but easy to control. Many of us start to know LED since our first lessons of electronics. And my love to LEDs started at the same time. Once I showed a LED demo to my friends at work. A girl said:I love LEDs, I gonna marry to LEDs.(she said that for real :)) I believe many of you share the same love,too.

One LED by itself is cool enough, but by the nature of human kind, we are making LEDs cooler and cooler. LED strips made one spot to a line, Matrix made it a 2D surface, some genius made LED Cubes to light up 3D space(search LED Cube projects on instructable, or check out this video, my favorite. You can even buy a 3 x 3 LED Cube kit in Radioshack for 20 bucks ).

These fancy cubes blew my mind when the first time I saw them. I knew I want to build one instantly. After some online research and messed with radioshack kit for a while. I feel it is not a easy job for me to build a big(at least 6x6x6) single color LED cube, let alone the cool RGB I want. You need pretty good soldering skills to make it work and looks nice. A lot of wiring and complicated coding.

Don't be discouraged by me though, there are good enough tutorials for you to go through. And some practice can make perfection. I just don't have enough time and effort to build this ultimate LED challenge(for me). I just want to build something nice before my girlfriend's birthday(not a whole lot time), as a gift.

Step 1: The Idea

So the goal here for me is, to design something as cool as LED cube, but easier to build, saves time and may be money. I started to do more research about light shows, figured edge lighting is also cool. After some doodling, I got a idea: what if we use a LED matrix and many pieces of clear plastic, to light up a 3D space?

But how could it have the depth of field(the third dimension)? By looking at those edge lighting designs, it seems wherever is cut or sanded will catch the photons. So on the clear parts in each row/column, if they have areas in different height are etched/ sanded, a third dimension is added.

Step 2: Stuff You Need

Adafruit NeoMatrix 8x8

4 x Clear Extruded Acrylic Rectangular Bar, 3/8" Thick, 3/8" Width, 6' Length McMaster

Arduino Uno

470 Ohm resistor

Capacitor 1000 uf

5V 2A Power supply

Female DC Power adapter - 2.1mm jack to screw terminal block

Something to hold all stuff together, wood, cardboard, foam core, or 3D print your housing!

Step 3: Prepare the Bars

Before we deal with the bars, let's do some calculation first. Since I need to order stuff in advance, I don't know the spacing between each single LEDs. Based on the dimension described on adafruit, I calculated the spacing is 71.17mm/8 = 8.896mm = 0.35inch. The closest bar you can get is 3/8 inch thick. So in the end 8 bars is slightly wider than the LED Matrix, but still, every bar is on top of a LED.

Since we are making a 8 x 8 x 8 cube, there need to have 8 3/8 squares on Z axis. 3/8 x 8 = 3. Plus some extra to band them together later. I decided each bar is in 3.5 inch long.

I asked my professional model maker friend Denis about how to achieve what I want. Here's the plan:

  1. Cut bars into piece with a band saw, leave some extra length here.
  2. Use a milling machine and end mill bit to cut the edge flush. It won't be perfect smooth.
  3. Denis suggested me to sand all the edges, but considering there are 8 x 8 = 64 bars, I skipped this step
  4. Polish bars with a polish wheel.
  5. Masking tape the bars, only leave the block area you want lights up later exposed. You can get the best quality if you tape one at a time. I taped one set at a time to save some time.
  6. Bead blast the masked bars.
  7. Repeat!

I bought these bars thinking I can save some time cutting them. But as the project progressing I figured it is still a lot repetitive work. Is there other options?

Next time probably I will try laser cutting them. 3/8 inch thick acrylic might be a little challenging for a hobby laser cutter. But if you can find one, it might save you some time.

Step 4: Wire Them Up

Adafruit has a very good tutorial of its Neopixal products. And they are updating over time. When I started to play with them, they didn't mention there should be a resistor between arduino and the matrix. Thus I fried a couple LEDs. But don't worry, usually it will only fry the very first LED. So I highly recommend you order some replacement LED chips (WS2812S 5050 RGB LED with Integrated Driver Chip) if you know how to desolder SMT components(Or have a friend knows how like I do, thanks Eric).

The connection is actually pretty easy. All Neo pixal products have three pins, +5v, GND and Digit In. An external power is needed though for a NeoMatrix. The above image shows details. Just make sure you have the protection of the capacitor and resistor.

Step 5: Coding Started

After everything connected, you should go download the Neopixel library and run the test code. When it lights up, you will be amazed! I seriously stare it for as long as my eyes can take(they are so bright!). You will see 4 LEDs are off, but don't panic, they are fine, it's all because the test code only defines 60 LEDs. Just change that to 64 .

Then you can download the NeoMatrix Library to let it say "Howdy" to you.

Also, to draw dynamic shapes, you'll need Adafruit GFX library. You can scroll texts, draw each single pixel, lines, rectangles, circles and other more. By using the drawPixel command, you can make customized shapes .

The way I did for my shapes is, I drew what I want in a 8 x 8 grid in Adobe Illustrator first(You can use any 2D software, or draw even on paper first. In this step you design the shapes and make sure you like it, so you don't have to change it later programming which consumes more time). Then define a 2D array in arduino sketch as this:

byte heart[8][8]={

{ 0,0,0,0,0,0,0,0 } ,

{ 0,1,1,0,0,1,1,0 } ,

{ 1,1,1,1,1,1,1,1 } ,

{ 1,1,1,1,1,1,1,1 } ,

{ 1,1,1,1,1,1,1,1 } ,

{ 0,1,1,1,1,1,1,0 } ,

{ 0,0,1,1,1,1,0,0 } ,

{ 0,0,0,1,1,0,0,0 } ,


In this array, 1 stands for a pixel that lights up, and 0 means off. In the void loop(), you can just call

for(int i=0;i<8;i++){

for(int j=0;j<8; j++){


matrix.drawPixel(j, i, RED);






to draw the heart shape.

In the 2D array, you can throw other numbers to represent other colors, and add several other if statements.

I tried to create a 3D array, with the third dimension as color. It is too complicated to type for simple shapes. You can try that if you want to show some really colorful but specific image.

Step 6: Put Together

I 3D printed housing parts and put them together, in this step you can use whatever material around you, card board, wood, foam core. Just make sure all the bars are fixed tightly and secure on top of NeoMatrix

STL files are here:


Step 7: Future Plan

Make some nice graphic binding with music.

Play around with bars layout, what new interaction can you get with different configuration?

At last, thanks for watching! If you gonna make something similar, please let me know. Can't wait to see your light show!

Makerlympics Contest

Runner Up in the
Makerlympics Contest

2 People Made This Project!


  • Tiny Home Contest

    Tiny Home Contest
  • Fix It! Contest

    Fix It! Contest
  • Audio Contest 2018

    Audio Contest 2018

23 Discussions

This looks great. I particularly like when it is the blue color! :)

Hiii, is nice that someone could find this kind of projects on the web. Thanks for the tutorial. I just have one small question. Do you have to code for the rainbow like colors?


Hello guys,

I am interested by this amazing project. The problem is that not everyone has a sandblaster. Is there any other solution ? Do you think abrasive paper could work ?


Do not have access to sand blaster, do you think a "Frosted spray" would work

Hi Fried. I missed your call saturday. Please call me at my 647 phone number. I do nt have Skype

1 reply

What's the best time to call you? I'll go out with friends tomr night so how about tuesday night around 7?

Do you have the STL file for the base? I really like the design of the base plate. I was thinking of using the base plate and then using nice wood for the sides. How did you suspend the LED matrix in the base, or is it resting on the Arduino?

3 replies

There are 2 version of the housing now, one with the usb port opening another without.

This is beautiful and by far the best electronics instructable idea i have seen for a while. Thank you dude, i will definitely build one of those.

1 reply

4 years ago

and is the power suply ac or dc? thanks

1 reply

Sorry, it should be 1000uf, and it is a DC power supply. I suggest you go to the adafruit tutorial to get the latest updates.


4 years ago

in the sketch you'v written capitetor 1000 uf but in the list you'v written 100 uf so which do i choose? i want to be sure beforei start shoping


The first video looks really neat! I don't understand though how you get the image onto two sides, or is that post production?

2 replies



I also bead blasted all the top surface of the bar, so it will catch light. You can find images on Step 1 to get a better understanding.

Ah, so you created a kind of step, that is visible through the front i guess? And because the ones in front are not blasted you can see through? Very neat!