Introduction: 10x10 RGB Matrix (3D-Printed) With Adalight Protocol

I saw some RGB Matrixes on youtube and was inspired to build a custom one with the following features:

  • 3D printable (White PLA for diffusion, Black PLA for Baseplate and seperators)
  • using WS2812 LED Strips
  • Wall mountable
  • Using an Arduino Nano as a controller receiving serial data (Adalight protocol)
  • Building a C# Application which streams Pixel Data over Serial to the Matrix

My goal was to show desktop notifications like discord or whatsapp and also play random animations like gifs on it. It had to be split into 4 sections because otherwise it wouldn't fit on my buildplate on my Anet A8.


  • Black and white PLA
  • 3D Printer
  • Hot Glue (duh)
  • Soldering stuff
  • PC
  • Arduino Nano
  • WS2812 Strips with 30LEDs/m
  • Aluminium square profiles (optional)

Step 1: Project Thoughts

Step 2: Testing the Diffusion Distance

I started by testing a single LED on a slider which holds the LED (not shown) to find the optimal diffusion distance which gives an uniform color on the white diffusion piece.

I used two layers of white PLA for that with Curas Ironing Feature on to hide the Layer Lines better.

I found that 30mm works quite good as a distance.

Step 3: Design of the Whole Assembly

Then i designed the whole assembly in 4 mirrorable sections.

The LED Strips are aligned horizontally and i bought them with the specific spacing of 30 LEDs per meter.

the diffusors align in a border on the baseplates and should be pressfit (so that no glue is required)

The diffusors have a little slot on the side to make room for the cabling.

The walls of the black seperators are only 1 or 2 layers thick and leave a little slot for the led strips.

I made small indentations into the baseplate to help me align the strips in the middle.

Step 4: Printing Time

Here you have the STL files. Make sure that you think before you print because i mirrored some parts in Cura because my CAD wouln't let me. The diffusors and baseplates are mirrored on the horizontal axis.

The files should fit on a normal 220x220 buildplate. Use glass for a glossy finish (which i actually dont quite like) or buildtak for a more diffused look.

I used curas "stop at height" post processing feature to manually swap filaments. The ones i used are standard black and white PLA filaments.

Make sure you turn on ironing and use a brim because the sharp corners tend to warp.

Step 5: Assembly

Once you got all the parts, assembly is simple.

I used aluminium profiles to glue the 4 baseplates together. This will also act as a wallmount.

You glue the Strips horizontally across the baseplates and connect them in series with flat ribbon cable. The cable will lay in the small diffusor slots. Make sure you got the order right because the strips are unidirectional.

After assembly i make a small hole into one baseplate to get the cables through and connect the arduino nano board.

Step 6: Coding

For testing i used the standard adafruit strand test sketch to test if all leds are working.

I then used the following sketch to implement Adalight with FastLED and changes the LED count to 100.

I then build a small application in Visual C# to stream Pixel data to the matrix and it kind of works for static images. But this is where I am stuck at the moment.

If you have ideas how i can implement gif streaming or animations, please hit me up!

Step 7: Bonus Videos