"Fiber Optic" LED Matrix




About: Projects in light, music, and electronics. Find them all on my site: www.jbumstead.com

In this project, I created a "fiber optic" LED matrix using WS2801 LED strip and glue sticks. The light displays have a different look than similar LED cubes and a few advantages. First, you can't see the actual LEDs in the display because the glue sticks guide the light away from the LEDs. Second, the device requires much fewer LEDs to make up the volume. Because the top and bottom have different LED strips, the fiber optic cables can take on two different colors that mix in the center. There are tons of different color displays that can be achieved with the device. I also added a button and knob for controlling the speed, color, and type of light display. In this instructable, I will go over the design, assembly, and code for building your own fiber optic LED matrix. Here we go!

Step 1: Supply List


1. WS2801 or WS2811 pixel LED strip (128 LEDs) - https://www.amazon.com/gp/product/B01AG923GI/ref=o...

2. Arduino Nano - https://www.ebay.com/itm/5Pcs-USB-CH340G-Nano-V3-0...

3. 5mm thick wood

4. 5mm plexiglass - https://www.ebay.com/itm/ACRYLIC-PLEXIGLASS-SHEET-...

5. 64 glue sticks - https://www.homedepot.com/p/DEWALT-10-in-x-7-16-in...

6. Push button - https://www.amazon.com/yueton-Momentary-Button-Swi...

7. 10k Potentiometer - https://www.adafruit.com/product/562?gclid=Cj0KCQi...

8. Alitove LED power strip - https://www.amazon.com/ALITOVE-Adapter-Converter-C...

9. ON/OFF switch - https://www.amazon.com/gp/product/B071R79R8M/ref=o...

10. 5.5mmx2.1mm DC Power Jack - https://www.amazon.com/gp/product/B01N8VV78D/ref=o...

11. M3 x 12 bolts

12. Wood glue

13. Electrical tape

14. Wire wrap wire


1. Hot glue gun

2. Laser cutter

3. M6 allen wrench

4. 3D printer

5. Soldering iron

6. Scissors

7. Wire wrap tool

Step 2: System Overview

The device consists of two 64 pixel LED strips that zigzag along the top and bottom. Data for each LED strip is controlled by separate digital output channels of the Arduino (D2 and D3). The potentiometer is connected to the analog input channel A0 and the push button is connected to digital pin D4. At the back of the device is a power jack and switch. The USB jack of the Arduino is also exposed so new programs can be uploaded to the device.

The light exits the LED and into the glue stick. Much of the light is "trapped" inside the glue stick because of scattering in the glue stick, which makes it act a little like a fiber optic cable. Glue sticks aren't the best material for fiber optic cables because they scatter the light a lot, making them more like a diffuser. Here is a nice video on using water as a fiber optic cable.

Step 3: Cutting the Chassis

I designed the chassis in Fusion 360 so it could be cut using a laser cutter. The top and bottom chassis are finger joint boxes. I wanted to hide these joints and have the plexiglass flush with the wood, so I added flat slats on the outside of the finger joint boxes. All the electronics are housed in the bottom portion of the device, and a cable is run down from the top to connect the top LED strip and Arduino. The LEDs are mounted into a 64 hole sheet of wood. A similar sheet is placed over the LEDs to hide them and guide the glue sticks.

Here is a link to the Fusion 360 file: https://a360.co/2DbVmKj

Step 4: Testing Fiber Optic Gluesticks

Before attaching all the glue sticks, I tested a single glue stick with one LED attached at either end. The data signal was generated with an Arduino. In the above photos, you can see how the color from either end of the glue stick merge in the middle. I suggest running this test to make sure you are excited about the effect and want to proceed. I realized I wanted to use smaller glue sticks after this test because the light didn't propagate down the glue stick as far as I initially thought.

Step 5: LED and Gluestick Mounting

After cutting the chassis, I cut 64 glue sticks to about 17.5mm. To make sure this length was correct, I assembled part of the chassis with the plexiglass and measured the length required so the glue stick would fit over the section.

NOTE: The glue stick length is really important. If it is too short, then you won't be able to attach the LEDs. If it is too long, then the glue stick will buckle when you attach the plexiglass.

I then placed the glue stick through all four sheets of wood with holes (see above). I pressed the hot glue gun into the glue stick to melt it and make a cone for inserting the LED. I quickly pulled out the hot glue gun tip and pressed the LED into the glue stick. The glue stick then hardened around the LED. I added one row of glue sticks at a time so it was easier to reach them with the hot glue gun. The procedure was repeated for the top and bottom LED strips.

Once they were all glued, I slid the wood sheet apart and pressed the LEDs into place on only one side. I soldered cables for 5V, Gnd, and data to the LED strip and ran the cables through the small hole in the center of the wood sheet. These cables were connected to the Arduino later.

Step 6: Front and Rear Panel Assembly

I pushed the ON/OFF switch and power cable jack into the rear panel, and the pushbutton and potentiometer into the front panel. To secure the Arduino in the device, I designed and 3D printed a mount (STL file attached here). The Arduino and two M3 nuts slide into the mount. I then soldered all the electrical components according to the diagram shown in the System Overview step of this instructable using wire wrap wire. The 5V, Gnd, and data pin from the two LED strips were also connected at this point.

Step 7: Base Assembly

The finger joint walls of the bases were then connected. Because of the snug fit, no glue was required for these joints. Above you can see how the 64 hole sheets of wood fit into the finger joint walls. There are rectangular holes in the finger joint walls so the cables and components on the panels can go through.

The plexiglass walls were then mounted with M3 screws that drive into the pilot holes in the finger joint base. The plexiglass was mounted at this point to make sure the flat edge panels were aligned. I added wood glue onto the face of the finger joint base and attached the panels, making sure the edge of the wood matched the plexiglass.

Step 8: Mounting Top and Bottom Cover

I wanted to be able to remove the top and bottom cover of the device, so I added corner pieces with pilot holes to drive a bolt into place. These corner pieces were adhered to the finger joint base with hot glue. I then pushed the top panel into place and screwed it down with bolts.

NOTE: My design didn't give much clearance for the LEDs on the top, so it may be good to edit the laser cutting file if you plan to build this device on your own.

Step 9: Coding the Fiber Optic LED Matrix

Attached is the code I wrote for controlling the device.

Data pin for LED strip 1: D2

Data pin for LED strip 2: D3

Push button: D4

Potentiometer: A0

The code tells the Arduino to read the inputs from the pushbutton and potentiometer. Then it updates the light pattern accordingly. The pushbutton is for switching the pattern, and the potentiometer changes the speed or the color of the display. I am exploring the FastLED library for the first time and I am really amazed by the light patterns one can make using it. I will definitely be using it for future projects.

Thanks for checking out my instructable!

Faux-Real Contest

Runner Up in the
Faux-Real Contest



  • Pocket Sized Contest

    Pocket Sized Contest
  • Trash to Treasure

    Trash to Treasure
  • Build a Tool Contest

    Build a Tool Contest

36 Discussions


5 weeks ago

This looks magical :) I really like the effect - the 'ible is also very easy to understand. Voted!

1 reply

5 weeks ago

can you provide us Corel draw type file or dxf. ?

1 reply

2 months ago

Nice work :) Any chance to convert it to stl so we can 3d print it ?

3 replies

Reply 2 months ago

I uploaded STL files for all the parts in Step 3. I am unsure how well the joints will work if they are 3D printed. Do you have any idea how to handle the plexiglass?


Reply 2 months ago

Thanks for that. If i go ahead with the project I suppose i´ll just get it cut too size. I have a shop that works with plexiglass close by.


Reply 6 weeks ago

Wow, this is so cool! Thank you for sharing your version of this idea. I am happy to see that the smaller glue sticks, 3D printed parts, and WS2812B LED strips all worked. Is there any coupling between the glue stick and the LED or does the glue stick just lay right on top of LED? It saves a lot of time if you don't have to melt the glue stick onto the LED.


Reply 6 weeks ago

The round hole for the glue stick stops just above the square hole for the WS2812B. So it sits very close but doesn't touch it. It also stops the glue stick from going right through. It makes it a bit hard to put all the glue sticks in place when joining the top and bottom sections, but because they are flexible, you can do it with a bit of patience.


Reply 6 weeks ago

Great design idea. Makes it much faster and cheaper to build.


6 weeks ago

Looking forward to building this beautiful project. One thing that put me off was the high price of the glue sticks in the link (roughly $48 for 64 sticks). I did a little searching and found a 5lb box (approx 85-90) 10" sticks on Amazon for under $22. Check it out here:

1 reply

Reply 6 weeks ago

Thanks for providing the link. I bought a cheap box of glue sticks (I don't remember if it was this one), but they were tinted yellow and I didn't think it would have the same effect. Did these work for you??


8 weeks ago

This is great! I want to make it. When you say "I cut 64 glue sticks to about 17.5mm" do you mean cm rather than mm or what were you referring to?

1 reply

Reply 8 weeks ago

Great! Thanks for catching the typo. It is 17.5cm. Make sure to check this length makes sense when you attach the plexiglass as described in Step 5:
NOTE: The glue stick length is really important. If it is too short, then you won't be able to attach the LEDs. If it is too long, then the glue stick will buckle when you attach the plexiglass.
Also remember that the walls may need to be extended so the fit isn't so type. Good luck with the build!