Building RGB LED Marquee Letters

Tara and I got married this month and whilst doing the prep work for the wedding I came across some large marquee lettering that were up for hire. After talking with the hire company and being given a quote that was absolutely ridiculous, I told Tara that I was going to build our own. Much to her dismay, I did build them, and they were a hit!

Saying that, If you were to build your own, these are the the two biggest questions I would have you ask yourself. 1. Where will you put them? (If you want to place them in front of a table, do not make them 1 meter high like I did.) 2. Cost of materials – Depending where you get the MDF, you may actually be better off hiring them. Time vs Materials.

Materials Required

  • MDF - Approx 18mm Thick
  • Plywood - 3mm or 5mm Ply (3mm Bends easier)
  • Small Tacks and Nails (For attaching Ply to side of MDF)
  • Sanding Sheets
  • CNC Router or Jigsaw (Jigsaw for Hand cuts)

  • White Gloss Paint (Rollers/Brushes etc etc)
  • Fairy light fake bulbs (You can use the lights also)
  • OPTIONAL - Pixel Pusher
  • OPTIONAL - WS2801 RGB LED strings (If you want to control light)
  • OPTIONAL - 5v PSU and travel router to control RGB lights from phone)

Cutting the Letters

Draw up the letters in your favorite CAD/CAM program. I used Aspires Vetric for this. Mostly its a CAM software but still has some good tools for drawings. Another alternative would be to draw it in illustrator and convert to DXF. If you plan to cut the shapes manually, you will need to come up with a template. For smaller letters this could be achieved in Microsoft word and printing the outlines. However for 1 meter tall lettering, your best off cutting on a CNC router.

Ensure the holes for the lighting are spaced evenly. I used a 150mm gap between each light, however you can extend this to not use so many lights, or bring them closer together for more lighting.

Bending and Attaching the Ply

It is actually very surprising how flexible Ply is. Especially 3mm thick ply. Obviously the smaller your lettering the tighter the corners will be. You may even have to wet your ply with water to make that bend. However with these letters I did not have to wet any of it down. The tightest angle was on the inside of the heart shape and the 5mm ply that I used just made it. I could hear some slight cracks, but nothing visual.

The ply is measured and cut to length, I tried to make the seams join at the apex of the cuts. However it does not matter too much where the ply joins as you can hide any irregularities prior to painting. Attach the ply with some overhang at the rear of the letters. This will help to hide any unsightly cabling/wiring later.

We used some black tacks to tack the wood on. Every few centimeters I tacked the ply on. This has held well to date. If you use nails, be careful not to split the MDF.

Painting (The Not so fun part!)

What I will say here is that you should really spend some time sanding. As with all wood projects, any imperfections will be seen if you do not deal with them now. However, knowing that these things are always turned in a dimly lit room may entice you to do a half job here. Also you may want to punch the tacks down below the surface of the wood and use some filler to cover it over. Ok so get painting! we used a gloss, feel free to change it up here.

OPTIONAL - The Electronics

This section is totally optional. I initially used the ‘Christmas’ like lights in the bulbs but found it to be boring. Thus I took it a bit further and installed the WS2801 RGB LED string lights. I acquired these from Aliexpress at a good price. I also used one of the many Pixelpushers I had lying about to drive the RGBs. Using the Pixelpusher for this kind of install is massively overkill however its what I had lying around. The bonus to this is that I could use the LEDlab App and control the lights from my phone. Let me know if you want more info on this setup.

LED Matrix Panel Mounts

I dare say that as I play with more and more of these LED matrix panels i’ll come up with multiple ways of mounting them together. If you have more than one panel and you are bench testing then you will know about the struggle of holding these things up whilst testing. Most of these mounts are quick nasty perspex runs, however you could easily modify them to suit your application. I’ll continue to add mounts as I make/use/design them. #Happymounting

LED Matrix Mounts

Parts designed in Solidworks 2015, also please check measurements of the LED matrix panel. There is a long list of panels coming out of China. These mounts fit the panels I have received, but may not fit yours.

32 x 32 LED Matrix setup on RPI2

After building a few LED matrices from LED strip lighting and soldering a ton of connections, I decided to give these pre-fabricated LED matrix modules a shot. After a bit of research it turns out that using only a Raspberry Pi and a fully functional Library from the Legend Henner Zeller, you can accomplish just about anything. The cheap Chinese panels that we sourced are fitted with a HUB75 connector which is easily interfaced with a breadboard and some jumper wires or using the opensource Active-3 board, again designed by Henner. His library can be found here: Rpi-RGB-LED-Matrix Library –

Bill of Materials (BOM)

  • LED Matrix: (P5 32x32 modules with Hub75 are a good starting point.)
  • A Raspberry Pi 2 or 3
  • A breadboard and T-Cobbler RPI 40 pin Breakout (Just to make life easier! You can grab these from Adafruit.)
  • Alternatively build an Active-3 adapter for easier chaining of Matrix Panels. (See hzeller github page for more details.)
  • Some Jumper Wires
  • A sense of adventure.....


Assuming you are semi-proficient with Linux and have installed Raspbian than you can follow along here. Otherwise you first need to setup your RPI and access the terminal/SSH interface. The guide here will get you up and with the “NOOBS” installation for your pi.

Install Henner Zeller’s LED Matrix library onto your Pi:

sudo wget

Unzip the Archive:

sudo unzip

Once unzip completes you should then be able to view the directory and it’s contents:

cd rpi-rgb-led-matrix-master/

You then need to compile the library by running the command:

sudo make

Once compiled, you can run the following command, this will give you an output of all the available switches:

sudo ./led-matrix

This command will output the following for your reference:

$ sudo ./led-matrix
Expected required option -D <demo>
usage: ./led-matrix <options> -D <demo-nr> [optional parameter]
        -r <rows>     : Panel rows. '16' for 16x32 (1:8 multiplexing),
                        '32' for 32x32 (1:16), '8' for 1:4 multiplexing; Default: 32
        -P <parallel> : For Plus-models or RPi2: parallel chains. 1..3. Default: 1
        -c <chained>  : Daisy-chained boards. Default: 1.
        -L            : 'Large' display, composed out of 4 times 32x32
        -p <pwm-bits> : Bits used for PWM. Something between 1..11
        -l            : Don't do luminance correction (CIE1931)
        -D <demo-nr>  : Always needs to be set
        -d            : run as daemon. Use this when starting in
                        /etc/init.d, but also when running without
                        terminal (e.g. cron).
        -t <seconds>  : Run for these number of seconds, then exit.
                        (if neither -d nor -t are supplied, waits for <RETURN>)
        -b <brightnes>: Sets brightness percent. Default: 100.
        -R <rotation> : Sets the rotation of matrix. Allowed: 0, 90, 180, 270. Default: 0.
Demos, choosen with -D
        0  - some rotating square
        1  - forward scrolling an image (-m <scroll-ms>)
        2  - backward scrolling an image (-m <scroll-ms>)
        3  - test image: a square
        4  - Pulsing color
        5  - Grayscale Block
        6  - Abelian sandpile model (-m <time-step-ms>)
        7  - Conway's game of life (-m <time-step-ms>)
        8  - Langton's ant (-m <time-step-ms>)
        9  - Volume bars (-m <time-step-ms>)
        10 - Evolution of color (-m <time-step-ms>)
        11 - Brightness pulse generator
        ./led-matrix -t 10 -D 1 runtext.ppm
Scrolls the runtext for 10 seconds

Now its time to get some output onto the panel. If you are running a singular 32×32 panel, you should be able to run the example without issue.

sudo ./led-matrix -t 10 -D 1 runtext.ppm

If your panel is connected correctly and powered up you should see a scrolling image pass through the panel. With the example above it will only last 10 seconds. You can now begin to experiment with the above switches to see what output you can achieve.


  • Output RPI GUI to Matrix Panels (Coming Soon!)
  • Output Twitter msg to Matrix Panels (Coming Soon!)
  • Use Pixelpusher Protocol on Matrix (Coming Soon!)