Make a 24X6 LED Matrix
Intro: Make a 24X6 LED Matrix
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!
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
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(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.
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!
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.
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.
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.
Now try to play with it and come up with a new program and a better interface.
850 Comments
johnny555 1 year ago
Really grateful of your help.
Many thanks,
Jonathan
Naveen Chandran 1 year ago
cameronkkk 1 year ago
progressive tech 2 years ago
akinropoamos 3 years ago
And the arduino code to run it
og_one 3 years ago
RoHHHaN 4 years ago
ronorono251@gmail.com ye mera mail id hain
shashikumar.tmr 3 years ago
shashikumar.tmr 3 years ago
what does v+ mean in arduino board
it is vin or 5v
Renato França 3 years ago
Tks, friend!
Carlos_Marcelino 4 years ago
Rahul2332 4 years ago
For wireless printing the text
richitomoreno2006 4 years ago
Jonathan shallom 4 years ago
my email is Bizimungujonathan5@gmail.com
Sanda1996 4 years ago
Sanda1996 4 years ago
DianaK53 5 years ago
Sandeep V Menon 5 years ago
The long answer is - the transistors act as a switch that gets triggered by the input of the decade counter. The decade counter's out put is a positive pulse. As it can be seen, the LED matrix is composed of Coumns made up of anodes and Rows made up of cathodes if the LEDs, connecting the rows ( even via resistor) will damage the IC (due to currents flowing beyond permissible range). Also there would be no persistence of vision as any one of the row may light up or entire matrix not lighting up at all.
DianaK53 4 years ago
I am trying to fully understand the process here. The decade timer is what allows the message to move across the LEDs, correct? If scrolling wasn't necessary, the decade timer doesn't seem necessary as well.
Additionally, I'm wondering how people know how to design these types of things. Before reading this article I didn't know these components existed and if I decided to make my own device of some kind (not this in particular, though it is really cool) I wouldn't know how to look up the components I'd like. I would have no idea what to call a shift register, for example. Any suggestions?
Sandeep V Menon 4 years ago
Consider a 5x5 LED matrix, it would have 25 LEDs. Let us assume that the anodes (+ve terminals) of all the LEDs are connected to rows and the cathodes (-ve terminals) are connected to columns via switches to a battery (as illustrated in image).
> Now, if say LED L13 needs to be lit. We press switch SW3 and SW8. If we hold SW3 while pressing sequentially SW6 to SW10, we will see that L11 to L15 lights up as the switches are pressed (and turns OFF as soon as the switch is released)
> If we were to somehow repeatedly press the switches SW6 to SW10 at, say, 120 times a minute, our eyes will perceive that the line remains lit.
> Now, continuing as in the previous step, we press the switches SW1 to SW5 one-by-one. We will be able to see/perceive that LEDs L1 to L5 lights up when SW1 is pressed, L6 to L10 lights up when SW2 is pressed and so on.
>If we need to light up the entire matrix in the above mentioned way, we need to press switches on both the row and column in the same manner as we were pressing SW6 to SW10.
>An alphabet is displayed in this manner. Let us consider displaying the alphabet 'A' in our 5x5 LED matrix. We can see that we need to light up L3, followed by L7 and L9, then L11 and L15, L16 to L20 and finally both L21 and L25. If this light up occurs at very fast rate, we will perceive the letter 'A' on the matrix.
This switching without errors is not physically possible. To make error free and precise switching, we use the switching circuits(example - Decade Counter with transistors). To display a word, such ON-OFF patterns (from above example) are required. If we represent ON state by 1 and OFF state 0, for the above example we get a pattern as below :
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
1 1 1 1 1
1 0 0 0 1
Such patterns are called Bit Patterns. Each letters (upper or lower case) symbols are created in this way.
PS:- I could not clearly understand your requirement in second half of the comment, hence I'm replying from my understanding of it. I hope this helps.
>> The components are named based on the functions, technology with which they are built and so on. For example, and IC AtMEGA328 (which is a microcontroller) is named so due to following reasons - the IC is a microcontroller of the "MEGA" series, from the manufacturer named ATmel Corporation. It has a 32KB flash memory and and 8 bit CPU/ALU