LED Matrix Cylinder




This LED matrix uses standard WS2812b LED stripes to build a matrix with a cylindric shape and a nice wooden veneer finish.


  1. 790x384 cardboard 1.5 mm (other sizes are also possible, but CAD data has to be changed)
  2. 100 WS2812b LED from LED-stripes (30 LED/meter)
  3. Raspberry Pi or Arduino
  4. Microwood veneer or any type of flexible diffusion material
  5. Wires


Step 1: Design and Laser Cutting File

Main design parameter is the thickness of the used material. In this build, a 1.5 mm cardboard was used because it is easy to cut and quite cheap. 3D design (e.g. Fusion360) helps to avoid problems in the assembling process. For laser cutting, parts have to be arranged in a way that they fit to the laser cutting area of your machine, in this case 790x384 mm. Inkscape is a simple and powerful tool to handle this job. Attached SVG file contains all parts for the cylindric display with 1.5 mm material.

UPDATE: I have modified the Fusion360 model with a user parameter thickness, so you are able to change the material thickness for the matrix and generate your own laser cutting file. Cut-out slots for the LED stripes will be added soon.

Link to the model: https://a360.co/2OC2kvZ

Step 2: Laser-cutting and Preassemble

After laser cutting, you will get the following parts:

- 12 C-shape horizontal segments

- 18 comb like vertical segments

- 2 vertical connection segments

- 20 led carrier segments

8 C-Shapes, 9 combs and 1 connection are combined to a display half. In this step, parts are only plugged together to check if all fits well. Don't use glue yet.

Step 3: Wiring of LEDs

LED stripes are cut in 5 LED segments and glued to the carrier segments with the backside adhesive tape. First the DI (data in) and DO (data out) pins of the stripes are wired together in a zig-zag manner, connecting DO of the first stripe with DI of the next stripe and so on. This is done for each half of the cylinder including 10 stripes. 5V and GND are connected only at one side from strip to strip. Length of the wires should be matching the strip distance of the array.

Before the LEDs are installed into the matrix, the segments of the matrix have to be glued together for each half of the cylinder.

Finally the 10 stripes are placed in each half of the matrix and fixated with hot glue. DO from one half is connected to DI of the second half. DI of the first half will be the input for the Raspberry Pi or Arduino.

Step 4: First Test

To ensure that everything works, a first test of the LEDs should be made. Using an Arduino and the Neopixel library should be the easiest way to do this.

Step 5: Wooden Veneer Diffusor

After measuring the diameter and hight of the matrix, the wooden veneer could be cut out and rolled around the matrix. For fixation, a transparent glue strip is sufficient.

Step 6: Raspberry Pi, Arduino and Power Supply

For easy coding in Python of nice matrix effects, a Raspberry Pi could be used. In this case, a Raspberry Pi Zero was used, which is connected to the matrix via GPIO pin 18 via a 74HCT245 level shifter to adapt the 3.3V from the Pi to the 5V of the WS2812. Also a large capacitor (2200 uF) and a series resistor (470 Ohm) are used like suggested when using larger Neopixel/WS2812 LED counts.

Power Supply

Maximum power for 100 WS2812b LEDs is 100x60mA = 6A. Of course, by reducing brightness, the power consumption could be reduces drastically. Please ensure, that your 5V power supply is able to drive the current for your desired brightness.


This matrix directly works on Arduino devices with the NeoPixel and NeoMatrix library from Adafruit. You have to change the PIN and initialization if you want to use the examples:


Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(20, 5, PIN,NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, NEO_GRB + NEO_KHZ800);

You also have to include Adafruit GFX library and load a different font with a height of 5 pixel. Please use the attached Arduino sketch as a starting point (uses PIN 4 for the matrix). It is an adapted version of the Neomatrix example sketch.


Adafruit_NeoPixel strip = Adafruit_NeoPixel(100, PIN, NEO_GRB + NEO_KHZ800);

Step 7: Simulation

Python source-code is available at Github

There are two modes for coding. If PI=False defined at the beginning of the cylinder.py, code is in the simulation mode. You can test all animations on any platform which is able to run python. Please install first all libraries which are used by the program (like pygame, numpy, etc.). In simulation mode, the cylinder is displayed as a 5x20 pixel matrix.

Step 8: Programming

The second software mode is PI=True (defined in cylinder.py) and started on the Pi. This drives the GPIO pin 18 of the Raspberry Pi. You are free to add additional effects and play around with the parameters.

Text is displayed with a 3x5 font, so not all letters are perfect due to the limited display height.


Epilog X Contest

Runner Up in the
Epilog X Contest

5 People Made This Project!


  • Party Challenge

    Party Challenge
  • IoT Challenge

    IoT Challenge
  • Woodworking Contest

    Woodworking Contest

52 Discussions


Question 4 days ago

Hi, can you help me with the upload on an arduino, the library’s can’t be incl


Question 4 weeks ago

hi maketvee,i just completed all wiring after some customization into your original design (i used mi 3d printer for the framE, created an internal pocket for a 10 amp 5v power supply, and wired 100 individual circular w2812b leds instead of using led strips., thanks a lot, the result is awesome.

do you know if there is any way of using MQTT to live post messages on the display?

3 answers

Answer 4 days ago

I have problems with uploading the code on the arduino. How could you manage that?


Answer 16 days ago

in case anyone is interested i merged this project with a project i found in hackaday.io (https://hackaday.io/project/19773-esp8266-based-neopixel-dashboard). i modified some of the original code (support to zigzag led pattern, display size, among other small changes) and now i can connect from my cellphone into blynk to send messages over the internet to be displayed, lunch different FX patterns, change display color, set an alarm or use the display as a clock. if interested my fork is at "https://github.com/gefidalgo/ESP8266_NeoPixel_Dashboard", maybe it can be further improved.


Reply 12 days ago

Super cool, I will try it out as soon as possible!


Question 23 days ago

What is the use of arduino analog output graphics?

PS.My English is not fluent, so I may not express it accurately

1 answer

Answer 5 days ago

Sorry, I don't get your point, what do you mean with arduino analog output graphic?


6 weeks ago

Hi! I am having problems with finding the exact LED strip you used, I guess that precise spacing between LEDs is necessary. Could you please post a link for the LED strip? Thanks

7 replies

Reply 5 weeks ago

Thanks for the link! they do not ship to germany unfortunately but I found alternatives with the important point of 30 leds/meter.
Now I'm trying to figure out what would the best power supply be and how it connects to the strip while being driven by the Pi / ESP32 (I want to try ESP32)


Reply 5 weeks ago

You're welcome. For what it's worth, I used a 5V/10A power supply and connected a barrel adapter to the 5V/ground connectors on the LED strip and powered the pi separately.


Reply 5 weeks ago

aha, now I maybe understand it better. Good to know that they can withstand a 10A :-) was worried I'd blow them up. So I just connect the timing signal to the Pi while leaving the power to the external power supply. Thanks


Reply 5 weeks ago

Hi mbariola,
if you want to know more about this kind of LED stripes, please read this document from Adafruit: https://cdn-learn.adafruit.com/downloads/pdf/adafr...
It also covers the power supply. ebay is a good source for this type of LED stripes in Germany, or AliExpress if you need more and shipping time of 1 month is no problem ;-)


Reply 5 weeks ago

Thank you! Now I have all needed info to add some pixelated goodness to my home :)

Irish pirate630

7 weeks ago

hi, i have a question, i have built and coded the entire frame and led matrix, but i can't find a wooden veneer that is see through, and i am not sure how to proceed, could someone please tell me what wooden veneer you guys use???

4 replies
JensCIrish pirate630

Reply 7 weeks ago

You don't necessarily need to use veneer. I've used just plain white printer paper and it looks pretty good! I plan on swapping it out for frosted acrylic squares though when I have some more time to work on the project. Any translucent material should do the trick!

Irish pirate630maketvee

Reply 7 weeks ago

so umm, i live in the us, and i was wondering if you know what i should use if i only have acceess to amazon?