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)
4. 6 1KOhm resistors
5. 6 2N3904 transistors
6. A long Perfboard
7. Arduino
8. 3 x 74HC595 shift register

## 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(http://www.doctronics.co.uk/4017.htm)

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 :
http://led.linear1.org/1led.wiz
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.

Hi Vadim, <br>Congratulations on an excellent project, thanks for posting. Would you or anyone else that understands it be able to post the Arduino code with full explanatory comments? Or an explanation of how the code works? For the Arduino beginner the program is very hard to understand. I would like to build something like this but without understanding the program, there is not a lot of point, because like anyone my objective is to completely understand how it works.<br><br>Thank you for any help.<br>Regards<br>simon
Hi i have made the project buts instead of letters i am getting square boxes. I am not able to find the solution please someone help me. Please!!
<p>dude same here! i am getting square boxes too! if you find the problem, can you please tell me what it is?</p>
<p>What do I need to do if a wanna make 16*6 matrix?Just remove one shift register?Thank you for answer in advance!</p>
<p>Yes.</p>
<p>Why are some of the LEDs brighter than others? And not all of the LEDs are lighting up. I don't what's going on?</p>
<p>Haven't looked at the code yet, so there might be a reason for it in there, but as I build this circuit according to your schematics, I'm wondering you connect the decade counter RST pin to an arduino pin. Couldn't you just connect it to Q6 and save the arduino pin for something else? Brilliant work by the way.</p>
<p>could you help me: i can't resolve problem about l.e.d not same level bright and they're dimmer. i use a1015 transistor to scan row and ic 74hc595 to show data.</p>
<p>Could someone be of assistant to me with the writing code of this project. i wish to remodel the code and attach another component which is a gsm shield to be used as the input for the words to be displayed. I can be contacted at smythe_shawn@yahoo.com </p>
<p>*I can not add a column to be 24 more. text above the column 24 will be damaged. sketch must change to produce what I want.</p>
<p>I have a code that will control up to a 56 column display, if you wish to use it. Contact me at gplyr8@gmail.com</p>
<p>Actually sir i want to make an digital clock with 24x6 led matrix but i am not good at programming sir so u can help me to program this or u have the code of digital clock so u can send this code to :-</p><p>ag870994@gmail.com</p>
<p>send me the circuit diagram plssssssssssssssssssss</p>
<p>bro i am not getting this ....can u send me properly pls.....i am a begineer...pls help me plssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.......</p><p>i need it tomorrow...i have my science exhibition tomorrow pls send me circuit diagram on my email id:</p><p>ravianpara26@gmail.com</p><p>whatsapp no.: +919549874312</p>
<p>I want to make ir work with arduino mega ? ... what pins should I use ?</p>
<p>byte latchPin = 53; //10 (SS) -&gt; 53</p><p>byte clockPin = 52; //13 (SCK) -&gt; 52</p><p>byte dataPin = 51; //11 (MOSI) -&gt; 51</p><p>byte latchPinPORTB = 0; // 53 -&gt; PB0</p><p>byte clockPinPORTB = 1; // 52 -&gt; PB1</p><p>byte dataPinPORTB = 2; // 51 -&gt; PB2 </p>
<p>is there any hope to merge this code with a temperature sensor ?? :c</p>
<p>Sorry, not really sure how to do it, but it might be possible. </p>
<p>Im trying to compilate codes, and figure out some details, but there is a big diference in the program&acute;s configuration , but I wil keep triying, Thanks anyways man ;D</p>
<p>I made it but encountered a problem. What would cause the letters to be displayed backwards? It scrolls from left to right all rows and columns display properly but the words are backwards. Any help would be greatly appreciated.</p>
<p>It might be possible that you have your rows connected in reverse order. that is where I would start looking.</p>
<p>Thank you!!! Thats what it was i had the wrong schematic of the 4017.</p>
<p>I want to make 64x6 screen.... so I guess I'll be needing 8 shift resistors, but for that do I i have to use 8 pins of the arduino uno?</p>
Figured tat out... still 3pins is required... how stupid of me to even ask tat question<br>
<p>L&agrave;m thế n&agrave;o để biến đổi th&agrave;nh bảng mattrix 24x8 ạ..{ chủ yếu l&agrave; code}, em vẫn l&agrave; d&acirc;n nghiệp dư mới tập t&agrave;nh n&ecirc;n xin h&atilde;y gi&uacute;p đỡ em ạ<br>địa chỉ email của em đ&acirc;y ạ: cantho1995ct@gmail.com</p>
<p>Thanks Akhil, I sent you an e-mail.</p>
<p>My LEDs doesn't have brightness enough, anyone could help, I made a 11x10 matrix using the same project and components.</p>
<p>Try lowering the value of the current limiting resistors you used on the columns. He used 24, I am assuming you used 11, but lowering the value should give you more current through the LEDs and make them brighter.</p>
<p>I will try, thanks for helping =)</p>
<p>LED have two pin,</p><p>which led pin are connected to row,</p><p>and which led pin are connected to column,</p><p>please help...</p>
<p>Generally the longer pin is the Anode(+), the shorter pin is the Cathode(-). So the longer pin should go to the column, the shorter to the row. In case you hadn't already gotten an answer for that. </p>
<p>So I am looking at embedding this into a small system with custom PCBs and running it from a battery. Would anyone be able to tell me what current draw they have? I need to figure out how many mAh's I need my battery to have. Thank you.</p>
<p>excuse me. if this running text expanded to 48x6 with just adding more register is possible?</p><p>and the matrix module is needed a zener to secure led from broken?</p><p>thanks</p>
<p>I have a code that has been modified to recognize the additional shift registers for the 48 x 6 display and would be happy to share it with you, if you contact me at my email address; gplyr8@gmail.com. Also I have not found the need for the zenerk, but you will need to add some small capacitance capacitors to your ground on the shift registers, to avoid trouble. I also have an updated schematic for the display.</p>
<p>I know this is a bit old but do you still have the code for a 48 x 6 display? I'm hoping to adapt it to a 32 x 8 display that I've made. My email is: Sharon97Q@gmail.com. Thank you kindly.</p>
<p>Hi could you send me this code please - martinhinks@btinternet.com - Thank you.</p>
<p>No problem. I sent it to you.</p>
<p>thanks for the information and instruction. it's helpful. now i'm will develop it to 48x6 running text.</p><p>maybe i'm need to exploring the variation of the animating movement of text,hehe</p>
<p>actually, I'm still onworking progress on board. i made the PCB based from 24x6 with additional expansion for 24 lines. </p><p>does it will be ok?</p><p>oh, plus, the board that i will use is arduino nano. is it capable enough for the display?</p>
<p>Not sure about nano, but it should be able to handle it.</p>
hai Syst3mX, how to modify 24x6 to 128x6, if you can help me to modify the source code??<br>let me know via email: nurhadiahmad88@gmail.com, thanks and success for you
<p>Hi, did you get any code? </p>
<p>Just made this - works perfect but tried to use a 6x32 system but the last 8 digits shadow the first 8 :( - I guess its the code, does anyone know how to change this code so it can be customised for any system. Thank you.</p>
<p>have you had any trouble with the 74hc595 chips burning up? or is the manufacturer data on the low side in the max amps trough the chip.</p>
<p>hello, this is a cool project im making one on my breadboard for testing before i fix it to a pcb. i will just ask why do we need those transistors? i'm a beginner btw. thanks for your reply :)</p>
<p>The transistors amplify the output voltage from the decade counter, and also acts like a switch, when there is no current at the base, there is little to no current flowing from the collector and the emitter. Without them all you will get is a column of six LED's scrolling across the matrix, no defined characters. You can find all kinds of information on how transistors work. </p>
and by the way, is there, by any chance, a way in which I can only use a shift register? I don't know how to use the decade counter using an arduino. I mean, I know how to use it using a pwm pin but its not the same way you can control an output from a shift register.
You could use six pins on your arduino or add in a shift register and have it be on pins 1-6 on the output, then just use the first six digits of the byte to control each transistor. If I understand everything correctly.