Make a 24X6 LED Matrix





Introduction: Make a 24X6 LED Matrix

About: Electronics and LEDs what can be better ?! :D

After making a 8X10 matrix a lot of people asked me about expanding the matrix to some thing bigger, and some wanted to write stuff to the matrix via a PC, so one day I looked at a pile of LEDs that I had leftover from a LED cube projected and I decided to make a bigger matrix with all the things people wanted.

So what are you waiting for? Get those LEDs out and heat up your soldering iron because we are about to make a 24X6 LED matrix! 

Step 1: Getting All the Right Things

So you will need the basic set of tools for this project : a soldering iron, some solder wire, a cutter, a needle nosed plier,some wire, wire striper, and some desoldering tools if you need them.

For the matrix you will:
1. 144 LEDs
2. 24 resistors( The value is determent by the type of LEDs, in my case 91 ohm)
3. 4017 decade counter
4. 6 1KOhm resistors
5. 6 2N3904 transistors
6. A long Perfboard
7. Arduino
8. 3 x 74HC595 shift register
10. some pin headers

Step 2: How It Works?

The tricky behind the display is multiplexing and the idea is the same as withe the 8x10 LED matrix: It is basically a way to split information in to little peaces and send it one by one.
this way you can save a lot of pins on the Arduino and keep your program quite simple.

Now this time we have 3 shift registers which multiply the number of outputs and save lots of arduino pins.
Each shift register has 8 outputs and you only need 3 arduino pins to control almost an limited numbers of shift registers.
We also use the 4017 decade counter to scan the rows, and you can scan up to 10 rows with it because you have only 10 outputs but to control it you need only 2 pins.
The 4017 is a very useful chip and it's a good idea to know how to work with it(

Like I said the scanning is done with the 4017, by connecting one row at a time to ground and sending the right data via the shift registers to the columns.

Step 3: Schematics

The only thing I didn't specified in the schematics is the value of the current limiting resistors because they change from each type of LEDs, so you will need to calculate them by your self.

Now to calculate the value of the 24 resistors you can use this site :
You should first get some specs on your LEDs, you should know their forward voltage and forward current, you can get this info from the seller. The circuit operates on 5V so your Source voltage is 5V.

Download the original file to see the schematics better.(press the "i" icon in the top left corner of the picture)

I have added a PCB layout of the control board, and i want to thanks Willard2.0 who made this layout and let me use it so thanks a lot mate!

Step 4: Soldering the LEDs

Soldering 144 LEDs in a matrix formation can be a little tricky if you don't have a general idea how.
The last time I soldered a matrix I used lots of little wire jumpers which was a pain to solder, so this time I was a little more creative and came up with this way.

You need to bend the positive lead of the LED down towards the other ones and make a column, and snip off the leads you didn't use and try to make the connections as low as you can get, and you do this to all of the positive leads.
Now the negative leads are connected in a column and thats make soldering tricky because the positive rows are in the way, so you will need to make a 90 degrees bend with the negative lead and make a bridge over the positive row to the next negative lead, and so on to the next LEDs.

Now I will not explain how to solder the shift registers and all the parts because every one has hes own style and methods.

Step 5: Programming the Display

We are almost there, the only thing thats left is the program.
So far I wrote two programs for it that do pretty much the same thing.
I have added the program that gets a word or a sentence from the arduino IDE serial monitor and displays it on the matrix, my code is very basic and may be not the best in the world but it does the work, and you are free to write your own code and modify mine as you wish.

I have added an excel file so you can create your own symbols and characters.
The way it works is like so:
You create the symbol you want  pixel by pixel(don't worry it's very easy) and copy the output line like so - #define {OUTPUT LINE}

I will add in the future a code for animations and a nice game of snake as soon as I have more time on my hands.


Step 6: We Are Done!

Congratulations you made yourself a 24x6 matrix and now you can display anything you like on the fly.
Now try to play with it and come up with a new program and a better interface.

20 People Made This Project!


  • Oil Contest

    Oil Contest
  • Water Contest

    Water Contest
  • Clocks Contest

    Clocks Contest

858 Discussions

Does anybody know how to make the word static? Im having a hard time understanding the code. Also, Im new to programming.


Can you explain me one thing. I do not understand this schematic. Surely, there has great thing which I do not know. I try to explain choosing very easy case.

If I send command to turn on following 2 LEDs



In this case not these 2 LEDs, following 4 LEDs will be turned on





I think that, is not it ?

Thank you.

2 replies

You are holding a HIGH or a Low when you shift into the 74HC595.

After each 74HC595 shift you must shift your up word too.

It izz diffult bcuzz the ckt isway diffrnt from 6 rows..

Can you please send me the code for 56X8 matrix,I am on the verge of completing my LED matrix (KIND OF)!

Also, can you please give me suggestions on how to solder corroded LED wires,I just left the project for quiet a few months due to lack of time,but now I have started it agian. My remaining LEDs are corroded a bit and refuse to get solded.

plzz HEPL!!!

Email ID :

thank u sir... i made it and it perfectly working....

Would you like to send the same 80×8 code for me
Thank you again.

1 reply

Did they send you the updated code for the 24 X 6? I am trying to get them to send me there's but I don't know if they will or not. I have been trying to finnish mine but I need the codes for a 24 X 5 if you can.

My email is

Thank you for any help you may supply.

hai Syst3mX, how to modify 24x6 to 128x6, if you can help me to modify the source code??
let me know via email:, thanks and success for you

4 replies

Did u managed to get the matrix working? Wanna share the code?

I just found you Instructable and I am a beginner and have been trying to build one of these for a long time but I could never find a code that would work so can you please send me the updated code for this please?

I do have the matrix board built with all of the LED's but I could never find anyone who would tell me if I need a resistor on each LED? Any help would be great. Please send it to my email because I don't know if I can find this page again. Like I said I am a beginner at this. My Matrix that I made is a 24 X 5 so i will also need to know how to make the changes from the 24 x 6 to mine please. I do have a picture of mine and I am including it here.

Here is my email

Thanks again


Hi, did you get any code?

is it possible to make 40 * 40 so that 4017 ics will be connected one by one

2 replies

I am sorry I didn't reply sooner, but I know of no way using my code to be able to make it a 40 x 40 display.

Sir I am very enthusiastic in electronics i had already made this 24*6 led matrix successfully and I want to go further to make longer display 96*6. can you provide me a code for that display my mail

Hi there,

I followed all instructions but keep getting garbage on my matrix, leds will light up but no real text is visible.

Looking at the lower screen I noticed the following:

C:\Users\jager\Documents\Arduino\led_matrix_3\led_matrix_3.ino:98:23: warning: unused parameter 'loops' [-Wunused-parameter]

void display_word(int loops,byte word_print[][6],int num_patterns,int delay_langth){// this function displays your symbols


C:\Users\jager\Documents\Arduino\led_matrix_3\led_matrix_3.ino: In function 'void setupSPI()':

C:\Users\jager\Documents\Arduino\led_matrix_3\led_matrix_3.ino:298:8: warning: variable 'clr' set but not used [-Wunused-but-set-variable]

byte clr;

Can this be the cause that I am not seeing readable text? Or can it be the board I am using, Arduina Nano.


Question 4 months ago

Can someone kindly describe to me in words and at a high level the methodology used here because I find the Arduino code very hard to follow because there are so few comments.

So what I mean by this is does he shift in the first bit of the first row of the first word and then clock through all the rows etc. I.e how are the columns and rows clocked such that persistence of vision works? Or is there some similar code that I can look at that is well commented?

Thanks you


Question 5 months ago

Will this work with an arduino uno rev3?