Picture of Make a 8x10 L.E.D Matrix

In this instructable I will show you how to build a quite fancy 8 by 10 L.E.D matrix(with scrolling text and animations) using the Arduino and 4017 decade counter. This type of matrix is easy to make and program and it is a good way learn how to multiplex.

I have added another part to this instructable about using the 74HC595 shift register which will help to save some arduino pins for other thing you would like to do.

So now you have to ways to go from here. You can make this matrix without the shift register and that will save you some soldering work or use the shift register if you want to have more free pins to use.

Step 1: Stuff you need

Picture of Stuff you need
1. Soldering iron
2. Some solder
3. Small needle nose plier
4. A wire striper

For the matrix:
1. 80 L.E.D.s
2. 8 resistors( The value is determent by the type of L.E.D.s)
3. 4017 decade counter
4. 10 1KOhm resistors
5. 10 2N3904 transistors
6. Some single core wire
7. Perfboard
8. Arduino
optional -
9.  74HC595 shift register
10. some pin headers

ArduinoCheckMate made it!3 days ago

Thanks a lot for the author. Made it today but using 2n2222A transistors. Also wrote a little program create custom patterns. I would like to share it.

vlad.fara.1 made it!1 month ago
Hey, cool tut, I managed to adapt it to 8x8(pretty easy in fact, I just had to reset the 4017 after 8 rows :) ) .. I didn't have all the LEDs :)) hope you like it :D
vlad.fara.11 month ago

Hey :D really cool tutorial.. I am almost done, but I would like a bit of help on making this matrix a 8x8, so just reduce the 4017 steps.. but I am not very good with such complex code.. I tried but couldn't follow..Can you please help me?

Hi very nice and neat project! I am making it right now actually. I was wondering why we need the 1k ohm resistors in series with the base of the transistor. Can't we just leave them out?
Thanks Lars

mirelush4 months ago

My only need is to simulate this project and I can not find any simulator that provides a 4017 decade counter. Is it possible to replace it with another component or even not use it at all?

pitrowski6 months ago

I built the matrix without using the shift register. Is there a way of coding to light up a standing image of a letter? without scrolling? tried to figure out myself but cannot make it work. thanks!!

ryeq6 months ago

is it possible to this without the use of 4017 decade counter, or any other shift register ? just only a transistor and resistor connected to the LED

DjZ2 made it!7 months ago

megcsináltam én is a led matrix szot nagyon jó

walt.schlender made it!7 months ago

Thanks for putting together this instructable. I learned so much and it was really fun.

I did mine with wire-wrap which turned out to be really elegnt.

binush690308 months ago

i am doing 8*10 led display for my minor project. so i want to ask that whether the provided information are sufficient or not. are there anythings that u have not explained. n can anyone tell me what are the main things to present in a minor project defense. Please kindly reply soon. Its a humble request.. Please..

binush690308 months ago

i am doing 8*10 led display for my minor project. so i want to ask that whether the provided information are sufficient or not. are there anythings that u have not explained. n can anyone tell me what are the main things to present in a minor project defense. Please kindly reply soon. Its a humble request.. Please..

namila007 made it!9 months ago

made it.thanks


FedericoR11 months ago


I am working with both the 74HC595 and 4017 Decade Counter to acheive One-at-a-time lighting (without the letters going from one side to the other on the screen).

Is there any part of code that I can erase to just show the letters at once, rather than moving?

As you may imagine, I'm a newby here, so please share if possible. Thank you very much

FedericoR11 months ago


I am working with both the 74HC595 and 4017 Decade Counter to acheive One-at-a-time lighting (without the letters going from one side to the other on the screen).

Is there any part of code that I can erase to just show the letters at once, rather than moving?

As you may imagine, I'm a newby here, so please share if possible. Thank you very much

Hi, will it work with arduino substitute with same schema ??? thanks

tuberdj1 year ago

hey guys! I made a matrix (with shift register) with this nice instruction. I used exactly the code as posted above... But know after shifting a couple columns something strange happens... As a test I used a whole lighted matrix (or all B11111111), where after ALL LED's light up like they should. When this block has shifted four columns to the left in a normal way, a bug appears. In the next shifting step the whole next TWO columns aren't lighted and this remains two shifting time steps. After this the remaining two columns are shifted out like they should...
Does someone has a idea how to fix this problem? (A)

rca1231 year ago

HI... i want to make a 48x10 LED matrix for my arduino project. help me to modify the code of yours...

yusfsalim2 years ago
The Leonardo pin map
32U4PinMapping.pngpin map.png
Hi yusfsalim, it does work with Leonardo just fine, i just did it.
check the pins, it canbe very tricky. with a shift register it worked a lot better.
where can i buy the Arduino Duemilanove
yusfsalim2 years ago
Hey, I built the matrix but I used an arduino leonardo to code it.
I saw the ATmega 32U4-Arduino leonardo Pin Mapping diagram and Port manipulation is really different.
PORTD is used to control pins 0,1,2,3,4,6,12 and the tx LED. So the program that you have written is not applicable on the Leonardo. Could you help me change the code so that it is compatible with the Leonardo.
Thanks for the amazing instructable, any help would be great.
kirangowle2 years ago
I am doing the similar kind project with 8051 and 4094.
Can i use the same logic of yours.
This is what i have so far.

dude...is it necessary to have a separate circuit to display the time and date....??
I added a RTC time chip with back-up battery, a TMP36 temperature sensor, a IR detector, and an arduino from scratch embedded on the broad. I tried to see how much stuff I could fit. :-) Let me know if you want the code, though it is not yet compatible with Arduino 1.0.
thanks mate....yea...if you can..send me the code and the schematics.. :)
ohh..what should i make it to be compatible with arduino 1.0?
sorry it took so long,
I don't have schematics but the pin locations can be found within the code.
could you please PM or email me the code and schematic so i could experiment with it. blanepark@gmail.com
sorry it took so long,
The code for this can be downloaded at
NOTE: This is not yet working with Arduino 1.0
If you convert this to 1.0 compatibility, please send it back to me at geekguymj@gmail.com
I have one doubt.....When i use another shift register can extend the led matrix as a 16*10 by using same code... i mean i shows 2 letters scrolling....
jughead632 years ago
Great instuctable!! i am trying to make a 6x12 using this code without a shift regiser, I can get the 6x8 to work but not the last 4 colums. Can you help me with the code to use the 10-13 pins to controle the last 4 colums. Thanks
Any help would be greatly appreciated.
axeman9114 years ago
what is the purpose of a decade counter, adn how does it work? also what are its syntaxes in the arudino language? please help!!
Check the website he posted about the 4017 to start with it will give you the basics. http://www.doctronics.co.uk/4017.htm There isn't any Arduino 'syntax' this is just a logic IC.
Blaneparker3 years ago
is it possible to use a attiny 45/85 or 44/84 to control the shift resistors? http://hlt.media.mit.edu/?p=1706
KongDan3 years ago
First of all - great tutorial!
Might be a stupid question - how exactly do I connect the emitter pins of the transistors to the ground?
mzee2333 years ago
hi..thanks alooot sir...i made the matrix today and works great...!!
i jus wana know is it posible to scroll texts vertically..?? i'm totally noob to programming..!! can u help me..?? plz...!!
Blaneparker3 years ago
Can someone send me code for a 8 x 32 matrix. I just started with coding so I need a jump start. Email me at blanepark@gmail.com
fizzypop553 years ago
I am trying to build an LED deisplay that responds to a sound through a microphone, would this LED matrix work for something like that?
zolibert003 years ago
sir, what is the code to flash real time, could you post it in one of your attachments...thx
sciguy1023 years ago
hey my 10x8 led iz not workn well ...am using arduino 1280 mega and the pin 0-7 are not workng..........18-21 are workn only and it can only power 4 colums ....plzzzzzzzzzzzz some1 help......................................tnxxxx
Can you tell me how to change the code for The Game of Life to start again after it dies out or gets stuck in a pattern. or after so many generations to start over. I am close to figuring it out but it eventually gets stuck and freezes on one generation. Any ideas?
Can your two sketches be joined? Like scroll some words, then play a round of Game of Life, back to scrolling words. Can that be done? (with the shift register) Thanks.
siddeshwar3 years ago
hey thats a nice one
bonhalt3 years ago
that work is wonderful! i dont know much about arduino.programming it en such.where can i get materials 4 such in details,am working on ma final year project 4 my degree so i need alot of stuff on micro controllers.y arduino?as in are there other micro controllers and which language do i need to learn to program most of the common ones in the market?help me out please.
Can someone tell me how to tweak the code to make it scroll from top to bottom so i can turn it on it's side and make it a 10x8 and not a 10x8? I want the words to go lengthwise. I figure that the letter code would have to be changed too. Thanks
asethi53 years ago
newbie here......what does a shift register do and is it necessary for scrolling text??Please help!!!!!!! ANYBODY!!!
EZELab asethi53 years ago

The Shift register is a way to increase the micro controller output pins, you can find more information here http://en.wikipedia.org/wiki/Shift_register and here http://arduino.cc/en/Tutorial/ShiftOut
EZELab3 years ago
Attaching my ONE ( :

Could you give us a Code to display only a one pattern ?

Nice Instructable ( :
Thank you
Syst3mX (author)  EZELab3 years ago
Congratz on the working matrix, looking great !

Yeah I will put a code till the end of the week.
are the transistors really neccesary?
axeman9113 years ago
are the transistors really neccesary? also i edited the code to work with a 8x8 matrix but something is wrong?

int DataPin = 9;
int LatchPin = 11;
int ClockPin = 10;
int clock = 13;
int Reset = 12;
//x,y for the loop
int x;
int y;
// here the definion of all the letter(big and small) and numbers
#define A {B01111110,B01000010,B01000010,B01000010,B01111110,B01000010,B01000010,B01000010} //done
#define B {B01111000,B01000100,B01000100,B01000100,B01111000,B01000100,B01000100,B01111000} //done
#define C {B00111000,B01000100,B01000010,B01000000,B01000000,B01000010,B01000100,B00111000} //done
#define D {B01111000,B01000100,B01000010,B01000010,B01000010,B01000010,B01000100,B01111000} //done
#define E {B01111110,B01000000,B01000000,B01000000,B01111100,B01000000,B01000000,B01111110} //done
#define F {B01111110,B01000000,B01000000,B01111000,B01000000,B01000000,B01000000,B01000000} //done
#define G {B00111100,B01000010,B01000000,B01000000,B01000110,B01000010,B01000100,B00111000} //done
#define H {B01000010,B01000010,B01000010,B01000010,B01111110,B01000010,B01000010,B01000010} //done
#define I {B01111110,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000,B01111110} //done
#define J {B01111110,B00001000,B00001000,B00001000,B00001000,B01001000,B01001000,B00110000} //done
#define K {B01000100,B01001000,B01010000,B01100000,B01010000,B01001000,B01000100,B01000010} //done
#define L {B00100000,B00100000,B00100000,B00100000,B00100000,B00100000,B00100000,B00111110} //done
#define M {B01000010,B01100110,B01011010,B01011010,B01000010,B01000010,B01000010,B01000010} //done
#define N {B00000000,B01000010,B01100010,B01010010,B01001010,B01001010,B01001010,B01000110}
#define O {B00000000,B00111100,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010}
#define P {B00000000,B00111100,B01000010,B01000010,B01000010,B01111100,B01000000,B01000000}
#define Q {B00000000,B00111100,B01000010,B01000010,B01000010,B01000010,B01000010,B01000110}
#define R {B01111000,B01000100,B01000100,B01000100,B01111000,B01010000,B01001000,B01001000} //done
#define S {B00000000,B00111100,B01000010,B01000000,B01000000,B00111100,B00000010,B01000010}
#define T {B01111110,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000,B00011000} //done
#define U {B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00100100,B00011000} //done
#define V {B00000000,B01000010,B01000010,B01000010,B01000010,B01000010,B01000010,B00100100}
#define W {B00000000,B10000010,B10000010,B10000010,B10000010,B10010010,B10010010,B10101010}
#define X {B00000000,B01000010,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010}
#define Y {B00000000,B10000010,B01000100,B00101000,B00010000,B00010000,B00010000,B00010000}
#define Z {B00000000,B01111110,B00000010,B00000100,B00001000,B00010000,B00100000,B01000000}
#define lit_a {B00000000,B01111110,B00000010,B01111110,B01000010,B01000010,B01111110,B00000000} //done
#define lit_b {B00000000,B00100000,B00100000,B00100000,B00111100,B00100100,B00111100,B00000000} //done
#define lit_c {B00000000,B00000000,B00000000,B00000000,B00111100,B01000000,B01000000,B01000000}
#define lit_d {B00000000,B00000100,B00000100,B00000100,B00111100,B00100100,B00111100,B00000000} //done
#define lit_e {B00000000,B00000000,B00000000,B00111000,B01000100,B01000100,B01111000,B01000000}
#define lit_f {B00000000,B00011000,B00100100,B00100000,B00100000,B01110000,B00100000,B00100000}
#define lit_g {B00000000,B00011100,B00100010,B00100010,B00011110,B00000010,B00000010,B00010010}
#define lit_h {B00000000,B01000000,B01000000,B01000000,B01000000,B01111000,B01000100,B01000100}
#define lit_i {B00000000,B00000000,B00010000,B00000000,B00010000,B00010000,B00010000,B00010000}
#define lit_j {B00000000,B00000000,B00010000,B00000000,B00010000,B00010000,B00010000,B01010000}
#define lit_k {B00000000,B00000000,B00000000,B01001000,B01010000,B01100000,B01100000,B01010000}
#define lit_l {B00000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000,B01000000}
#define lit_m {B00000000,B00000000,B00000000,B00110100,B01001010,B01001010,B01001010,B01001010}
#define lit_n {B00000000,B01000000,B01111100,B01000100,B01000100,B01000100,B01000100,B00000000} //done
#define lit_o {B00000000,B00000000,B00000000,B00000000,B00011100,B00100010,B00100010,B00100010}
#define lit_p {B00000000,B00000000,B00000000,B00011100,B00100010,B00100010,B00111100,B00100000}
#define lit_q {B00000000,B00000000,B00000000,B00111000,B01000100,B01000100,B00111100,B00000100}
#define lit_r {B00000000,B00000000,B00000000,B00111000,B01000000,B01000000,B01000000,B01000000}
#define lit_s {B00000000,B00000000,B00111000,B01000100,B01000000,B00111000,B00000100,B01000100}
#define lit_t {B00000000,B00100000,B00100000,B00100000,B01111000,B00100000,B00100000,B00100010}
#define lit_u {B00000000,B00000000,B00000000,B00000000,B01000100,B01000100,B01000100,B01000100}
#define lit_v {B00000000,B00000000,B00000000,B01000100,B01000100,B01000100,B01000100,B00101000}
#define lit_w {B00000000,B00000000,B00000000,B00000000,B01000100,B01000100,B01010100,B01010100}
#define lit_x {B00000000,B00000000,B00000000,B00000000,B00000000,B00100100,B00011000,B00011000}
#define lit_y {B00000000,B00000000,B01000100,B01000100,B00111100,B00000100,B00000100,B00000100}
#define lit_z {B00000000,B00000000,B00000000,B00000000,B01111100,B00001000,B00010000,B00100000}
#define space {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000}
#define num_0 {B00000000,B00111100,B01000110,B01001010,B01001010,B01001010,B01010010,B01100010}
#define num_1 {B00000000,B00001000,B00011000,B00001000,B00001000,B00001000,B00001000,B00001000}
#define num_2 {B00000000,B00111100,B01000010,B00000100,B00001000,B00010000,B00100000,B01000000}
#define num_3 {B00000000,B01111110,B00000010,B00000010,B00011100,B00000010,B00000010,B01000010}
#define num_4 {B00000000,B00000100,B00001100,B00010100,B00100100,B01000100,B01111110,B00000100}
#define num_5 {B00000000,B01111110,B01000000,B01000000,B00111100,B00000010,B00000010,B00000010}
#define num_6 {B00000000,B00111100,B01000000,B01000000,B01111100,B01000010,B01000010,B01000010}
#define num_7 {B00000000,B01111110,B00000010,B00000100,B00001000,B00010000,B00010000,B00010000}
#define num_8 {B00000000,B00111100,B01000010,B01000010,B00111100,B01000010,B01000010,B01000010}
#define num_9 {B00000000,B00111100,B01000010,B01000010,B01000010,B00111110,B00000010,B00000010}
#define times {B00000000,B00000000,B01000010,B00100100,B00011000,B00011000,B00100100,B01000010}

const int numPatterns = 17;//this is the number of patterns you want to display
byte patterns[numPatterns][8]={H, A, ,P, P, Y };// the patterns order
void setup(){
//simple stuff here
//reseting the 4017 IC, you have to do this

void display_pattern(int loops)//int loop acts like a delay, it take 8 mSecands to scan all of the rows so int loops = 15 is a good time for it
for(x=0;x for (int z=0;z<8;z++){ //scrolls one bite at a time
for(int t=0;t for(y=0;y<10;y++){// loops over the array of bytes
byte temp = patterns[x][y];
byte temp_2=patterns[x+1][y];
digitalWrite(LatchPin, 0);
shiftOut(DataPin, ClockPin,MSBFIRST,((temp<>7-z)));//writes digital outputs, Z is for how much bites it need to scroll
digitalWrite(LatchPin, 1);
digitalWrite(LatchPin, 0);
shiftOut(DataPin, ClockPin,MSBFIRST,0);
digitalWrite(LatchPin, 1);
digitalWrite(clock,HIGH); digitalWrite(clock,LOW);

void loop(){
display_pattern(15);// calls for the display_pattern function and says that int loop = 15(if you do more loop the pattern whould scrrol slower).
Nikira3 years ago
Does it matter which Arudino model I choose? They have so many O.o
Syst3mX (author)  Nikira3 years ago
Nop,this project will work with any kind
lmacarayo3 years ago
hi i just want to ask if i can use one ardiuno... in 3 kind of led. coz i wanna make an interactive traffic light or just pedestrian traffic light... that would display the word GO SLOW and STOP... i really dont know how to use and make it... but i really want to know it as soon as possible... thank you very much in advance :D
Syst3mX (author)  lmacarayo3 years ago
It's possible to make but I don't recommend using a matrix for this project.
You can just pre-wire the LEDs in such way that you will have 3 control pins that light up the whole word.
hhmmnnn thank you for the reply..

but how will i pre wire in and how is the conection for a tri-color led.. i only knew one color led connection..

and what will be the size of the led..
Syst3mX (author)  lmacarayo3 years ago
So this is the idea I had in mind.
You can use RGB LEDs which are basically 3 LEDs in one.
They are pretty much the the same as normal LEDs but they have 4 pins and not 2.
They are very simple to use you have a pin for each color and one pin that is the ground.
You don't have to use the RGB kind in this project you can just put the different color LED next to each other and cover the whole display in some plastic so people wouldn't see the LEDs but only the light.
The connections are also simple you connect all the colors of the word together i.e. all off the positive pins and give power to all of them.

The size of the LEDs is up to you.
jbwkz3 years ago
hi, nice tutorial..is it possible to extend it to a 16x8 instead of a 10x8? Cause I am doing this a part of my school project and 10x8 is a bit small...
just make it a 10x14 (there are only 14 output pins on the arduino and the 10 can be attached to IC4017) and edit the code a bit... or alot!
Syst3mX (author)  jbwkz3 years ago
I have an instructable for a 24X6 matrix look at that to see how to make it bigger.
Hey, what a great project!
I am now making this with the shift register. I would like to hang it in my office. I looked at your diy clock. Do you know how can I make this scroll the time? I have a TMP36 Temp sensor and would like to add a Temperature display. What I would really like is to have it programmed so after I'm done and it's on the wall, I can push a button and change the display from scrolling a message, telling the time, the temp, and the life game. I believe I have all the parts for all this. This may be to much to ask but i would really appreciate any help. Thank you,
Can you or someone please help with the code for a TMP36 temp sensor and posabibly a DS1307 time IC? This would be a great help. Please respond if you think you can help.
hi nice job i have a question if i not use de arduino what i use or is another way to do the animations?
Syst3mX (author)  jmartinez pedrero3 years ago
The arduino is just a micro-controller, you can use any micro you like but be sure you have enough outputs.
billyboy6664 years ago
Just a tip! When creating an LED matrix, use stripboard at 90 deg to each other. Columns one way, then rows the other. Solder the anodes (or cathodes) first then align the other stripboard after cutting the soldered leads. This is not easy, but quicker than discrete wire.

I made a 'scope this way, that was a breeze...
a_d7774 years ago
Some amazing work you've done in there!
Can you release a Code Maker XLS for 8x8 LED matrix? that would be great!

Thanks :)
Syst3mX (author)  a_d7774 years ago
I can send it to your email if you want, send me a message with the email and I will send it right away.
cknapp24 years ago
i am new with transistors and i dont know how to wire them
Syst3mX (author)  cknapp24 years ago
Try this site : http://www.kpsec.freeuk.com/trancirc.htm
It will show you how to use a transistor. for our application read the part about : "Using a transistor as a switch"
cknapp2 Syst3mX4 years ago
Drewroo4 years ago
Hey I know this is old but Im new with using transistors. For the ground side they all go to a common ground right they don't connect together like every other one seems to do in the diagram.
Syst3mX (author)  Drewroo4 years ago
The part that connects to the common ground called,in this case,an emitter.
So you can say they are all connected together to the same ground.
phevtron4 years ago
ooookaaayy just a question, i looked the code many times but since im a noobie i cant understand the part that has to do with the 4017, i just need you to tell me how to pulse the 4017 with arduino...... only this .... thanks :)
Syst3mX (author)  phevtron4 years ago
In the display_pattern() funcion the last 3 commands give the 4017 a pulse.
and by changing the delay() i change how fast the lines light i think i got it , and something else void loop( )

everytime this happens we move on to the next row?
Syst3mX (author)  phevtron4 years ago
and to start again from pin 1 of the 4017 ? :/
Syst3mX (author)  phevtron4 years ago
you write this 2 lines :

This will create a short pulse on the reset pin of the 4017
i write this after the end of each scanning?
Syst3mX (author)  phevtron4 years ago
if you use all 10 rows it resets by itself so you don't need to worry about it
need only six :/
Syst3mX (author)  phevtron4 years ago
so after 6 pulses to the clock pin you give a pulse to the reset pin.
thank you :) you rooock :)
Nice work, me to doing this before without any u controller...
Hi Syst3mX,

First of many thanks for posting great articles. There are some discussions on Arduino forum where many times it has been suggested to use MAX7219/7221 instead of this 595-counter combo. If I understand right, I can select a combination of 74HC595 shift register and 4017 counter OR just pick a MAX7219/7221 IC. Am I right?

Thank you,
Syst3mX (author)  जपरीख4 years ago
yep you can choose what is best for you. but keep in mind that the counter limits you to only 10 rows.
arbita24 years ago
ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok ok
iniobong4 years ago
pls ,can i get the full circuit diagram of 8x10 led matrix
Syst3mX (author)  iniobong4 years ago
It's pretty full the only thing missing is the arduino itself but I don't see the point for it.
hey, just working on your instrucion and need help with the code, I'm just a noobie with programming :( could you help me writing the code for just display patterns please?
Syst3mX (author)  Knut_der_Raecher4 years ago
yeah sure contact me via email : systemx16@gmail.com
deko644 years ago
This is my first time to do the led light so i need someone to help me do it and with the diagram so that i can do it
Syst3mX (author)  deko644 years ago
ok ask me if you need something
deko64 Syst3mX4 years ago
yes i need your help so that i can build the LED for myself and i can teach and l`m good in building some of thing like this so i need your help and the diagram.
Syst3mX (author)  deko644 years ago
press the "i" symbol in the top left of the picture to get the original file, that way you will see the digram a lot better.
berniech4 years ago
Nice project, it works nicely in 8 x 10 matrix and I try to extend it in a 15 x 10 matrix, daisy chaining 2 shift registers, but it doesn' work! could you help me, showing your way of connection?
Thank you
Syst3mX (author)  berniech4 years ago
You should check out my instructable on making a 24X6 matrix.
The matrix uses 3 shift registers daisy chained so you can make out the connections there.

Good luck and congratz on your LED matrix.
Many thanks for your answer! II'll try according to your 24x6
what if i used source boost IDE for the programming? how can i program it? what codes should i use?
please reply.. i need your help :))
Syst3mX (author)  dreadnought124 years ago
Never heard about that IDE but the big problem is that the Arduino IDE uses a different language(well not really it's C but it wouldn't work on any other system).
You will need to rewrite the my code to fit the IDE you are using.
miamashi4 years ago
Is the circuit for less leds the same as shown?
Could you send me another instruction?
Adi M4 years ago
hey, nice matrix!
please could you email me the schematic for the matrix with only the 4017 and transistor and the code. i couldnt find the shift registers and instructables does not let me view the other pictures....
Syst3mX (author)  Adi M4 years ago
ok will do
lonjim24 years ago
Sorry to sound like such a total n00b, but how/could one go about making this an 8x20 matrix? Could this be done without a shift register? Perhaps I'm dreaming...
I think I understand how this works, but I was wondering how I can make this into a 10 x 10 array?

Also, are the LEDs being lit up a few at a time, but at high speeds, to form the image, so that there is no conflict between the LEDs that should stay off?
Syst3mX (author)  coolsciencetech4 years ago
Yep you got the idea.
Making a 10X10 matrix will only need a change in the code, if you want I can help you out with the code if you send me your email.
Somebody, make a 2560x1600 display NOW! XD
those big signs in new york are leds
i watched them make one
skyxin4 years ago
could tell me the relationship of Game Of Life.txt and Scrolling text.txt
9ale74 years ago
nice :)
Puzzel294 years ago
sir, i'm new in programming i just want to asked what language you used.? thank you sir.
Syst3mX (author)  Puzzel294 years ago
It's mostly C
turbo c?. thank u sir
Syst3mX (author)  Puzzel294 years ago
turbo C is a program if i am not mistaken, and i use the arduino IDE.
you can visit the site and see how it looks www.arduino.cc
thank u sir, keep sharing.c:
the code that you gave me where would i put it in the main code for the sign
Syst3mX (author)  devicemodder5 years ago
you need to put "setupSPI();" in the void setup. and put all of this code outside the void loop and void setup, because they are functions : void latchOn(){ bitSet(PORTB,latchPinPORTB); } void latchOff(){ bitClear(PORTB,latchPinPORTB); } // The main function that does all the tricky stuff void setupSPI(){ byte clr; SPCR |= ( (1<
still dont understand
Syst3mX (author)  devicemodder5 years ago
I will send you a email with a simple example.
would i copy it 5 times for 5 registers
how would i adapt this to work with an 8x40 led matrix and shift registers and 4017. that is 5 8x8's in a row
Syst3mX (author)  devicemodder5 years ago
I have a ready answer for that, because a lot of people asked me for it. So just give me you email and I will send you all the info you will need for this.
i will pm you with email
BigShoe5 years ago
WSP Vadim?! Look, I enjoyed reading your instructable.. I think I will build now some matrix board.. But when I saw your schematics, I asked myself why you work with such big mounts of transistors when you can use a simple octal buffer/line driver. Anyway, nice work and I'm very impressed.. like all the time.. Keep doing nice projects. Ami.
KcPower5 years ago
is there a way to make it bigger? (like 20x15)
Syst3mX (author)  KcPower5 years ago
There is a way but you will need to change a lot of things to make it work.
I think you will have to use only shift registers for this type of a matrix.
5 register should do it (3 for row control and 2 for scanning).
I can give you a better shift out function to will send data faster to the registers.

Dandeman3215 years ago
When you hook up that 4017 to the LED matrix, why are the rows of LEDs hooked up to random pins of the 4017. For example, the top row of LEDs is hooked up to pin 3. Why isn't it hooked up to pin 1?
Syst3mX (author)  Dandeman3215 years ago
 This is because the pinout of the 4017 is very random.
See the datasheet
Ah ok, Thanks! I may build this! I have an 8x10 LED matrix built from an old project that I could just adapt.
hey mate, great instructable!
its gave me enough easy steps to create this sort of thing i would like to build. however im not sure how the arduino works because ive never worked with the programming. im wondering how easy is to create the binary for the led's i want to light up? is there any other links that tell you simply how to enter the binaries into thr arduino? 
Syst3mX (author)  Applecore8075 years ago
Ahh well there is a site for the arduino platform where you can find all the information you will need. www.arduino.cc

Now for creating the binaries for the LEDs, I have added a simple exel sheet that will help you create the binary word

megg5 years ago
what a great instructable, thanks!  i was able to build this and get it running with not too much electronics experience.  i thought you might like to see my setup - it's pretty ghetto right now, but works for testing.  the second photo shows my "forest of LEDs".  if you don't have any perfboard, you can solder the matrix this way. first i soldered each row of positive legs together.  then i bent the negative legs down and under at right angles to the positive ones and soldered them together.  the result is a kind of cage with the positive legs on the top level and the negative legs underneath.

Syst3mX (author)  megg5 years ago
 Thank you very much I am very happy to hear that it's working.
And i really liked the way you made you LED matrix looks very cool and I think it haves some transparency effect to it.

Great Work!
megg Syst3mX5 years ago
hey Syst3mX,
i'm trying to display some stuff on my matrix that's not animated and i'm kinda stuck in the code.  how would i turn on every LED in the matrix, for example?  and what about every second LED?
if you have time to help me, i'd really appreciate it!
hey, i have a similar problem to johann because i want to make my matrix 5x25 so it can show a longer message but i cant see how im supposed to wire this. if you have any spare time, i would apreciate it you could help. thanks =)
Syst3mX (author)  qwertyuiop54335 years ago
 Sure I have time to help you. Just give me your email and i will send you instructions on how to wire every thing up
josu86 Syst3mX5 years ago
Hey, could you also send the instructions to me ;)..thanks a lot 
Syst3mX (author)  josu865 years ago
No problems just give me your email
jwflammer5 years ago
yeah I'm direct driving my led matrix how would i set it up to scroll with out the decade counters ?? but on the other hand very cool very cool indeed :P now its time for large scale make a wall like a hole 7' x 6' wall lol.
Syst3mX (author)  jwflammer5 years ago
 Well the decade counter have nothing to do with the scrolling effect it's just for the scaning.
You can use my code for scrolling text and kust change the code a little bit to go from row to row without the decade counter.
how ?? im lost in your code
Syst3mX (author)  jwflammer5 years ago
Send my your email and i will help you to do this
ndinitz5 years ago

so i buit the matrix on the computer using multisim(circuit design software) and the led stuff will only light one at a time or in either, vertical, or horizontal groups(a row of leds but only some of them are lit. like below
0 0 0 0 0 0 0 0
0 1 1 1 0 1 0 0
0 0 0 0 0 0 0 0
0 1 1 1 0 1 0 0
0 1 1 1 0 1 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 1 1 0 1 0 0

this is what the matrix looked like when rows(from the top) 2,4,5,8 were powered, and columns(from the left) 2,3,4,7 were connected to ground, all with resistors.

what do i do now, its getting a little confusing?
Syst3mX (author)  ndinitz5 years ago
Well multisim isn't the best way to test this and one of the resonance is that it's slow.
If you want to do this matrix on multisim it will just fail because you will se just a slow scan .
ndinitz Syst3mX5 years ago
 what do you suggest i use?
Syst3mX (author)  ndinitz5 years ago
Well the only way to test it is to make it.
Build one thing at a time and test it if it works.
ndinitz Syst3mX5 years ago
 i meant software wise. instead of using multisim, what should i use?
Syst3mX (author)  ndinitz5 years ago
To be honest I don't really know, I only have multisim.
pickle_645 years ago
Hi, i'm currently building your instructable and hats off to you, it's very detailed and easy to understand.

If i wanted to make it portable, how could it be programmed and run with arduino constantly there?

is this possible for batteries, etc...
Syst3mX (author)  pickle_645 years ago
Sure this is very easy, if you want to use the arduino board just upload your program( no need for a different program)  and connect a 9V battery to the DC jack.
how could i do this without the arduino? i have one, i'm just considering puting it into a card for a special someone...
Syst3mX (author)  pickle_645 years ago
You need leave just the ATMega chip and follow this instructaions:
johannesgj5 years ago
 i know its long time since somebody wrote on this subject but anyway :-)
i have a project looking to be at least 10x10 leds maybe 16x16 leds.
i have read you instructions carefully but i cant seem to understand how i would go about this.
i hope to be only using one arduino. so i need some sort of multiplexer or register between the register s and the arduino else i am low on output pins.
so my question is really:
how complicated would it be?
how many registers and multiplexers?
is one arduino too little?
if youve got a lot of sparetime i would of course ask if you would try and draw me a picture but then again i am too humble to ask for such a favor :-)
if i didnt say it i admire the teachers skills by which you tell the guide. its really easy to understand!
Syst3mX (author)  johannesgj5 years ago
First of all the arduino can handle this kind of "abuse" without any problems.
And if you want give me your email and I will send you the big picture on how to go about this thing.
For a 16x16 matrix you will need only 4 shift registers that will use 3 arduino pins :D
 hehe it sounds so easy :-)
well my email is johannesgj tobefoundat gmail.com
 hey if i make the 16x16 matrix and i have success with it maybe it could be my first instructable of course with regards to you. 

Syst3mX (author)  johannesgj5 years ago
LOL good to know.
And luck with your project
here's mine

Syst3mX (author)  devicemodder5 years ago
Nice matrix man , looks really clean and nice.
Good job!
the little circuit in the lower left corner is an arduino circuit
soon to add serial programming and all my wiring is on the back
would there be any way to code this to work as an ocilliscope

Syst3mX (author)  devicemodder5 years ago
I think you can do this but how practical it will be I am not so sure.
I saw an instructable some where on how to do this.
would there be any way to code this to work as an ocilliscope
i made one and it works great!!!!!! :-) i also added the arduino circuit to the board. one question how would i take it to the next step and enter text with a computer keyboard?
Syst3mX (author)  devicemodder5 years ago
First of all I am very happy to hear that it works(good work!).
Now if you made the LED matrix without a shift register you will need to add one to free the 0 and 1 pins which are used for communication between the arduino and your PC.
I didn't try to make it work with a keyboard so I can't tell you for sure how to do this, I recommend visiting the arduino forum and asking for help, there are a lot of really bright guys there that will surely help you with writing the code.

Good luck
Teslaling5 years ago
Could you please give me the code without the scrolling effect, I'm a beginner.

Syst3mX (author)  Teslaling5 years ago
Send me your email and I will give you the code with documentation
Thank you very much.
crosserhenk5 years ago
I can't make the code could you maybe make a code and comment in the code what I should do to get the scrolling effect away. Oh I have anoter question can I do scolling and not scrolling also in the same code
thanks crosserhenk.
Syst3mX (author)  crosserhenk5 years ago
Yes sure you can do that just send me me a privet massage with your email and I will give you the code with all the comments
crosserhenk5 years ago

I have finished mine and I think its very cool but can you rotate the scrolling effect or delete it so you can fikker the light so its like a disco light or make like a raining effect. 

ps I don't have much experience thats why I ask so much 

Syst3mX (author)  crosserhenk5 years ago
First of all I am happy to hear the it works, great work!

And yes you can do all of the things you wanted to do.
If you having problems with writing the code you can give me your email and I will give you the code
crosserhenk5 years ago

I have another question.
How to make the code can I use just the scrolling text you posted and put my own caracters an letters in it?

Syst3mX (author)  crosserhenk5 years ago
Yes just replace the characters. 
Just don't forget to write it like so : " H,E,L,L,O,{space},W,O,R,L,D" and for the small characters like so : " lit_h,lit_o ....."
crosserhenk5 years ago
sorry for my bad Englisch thats couse I am dutch.
but I can't sea the image you posted is very blurred. And maybey you could upload a picture of the whole backside of the matrix that would help alot. 
crosserhenk5 years ago
Hello I have a Question

I think this is a very cool project and I am planning to make one myself but where can I find instructions about how to realy make one myself. Especialy where to attach the 4017 and the transistors.
Syst3mX (author)  crosserhenk5 years ago
Well I don't really know of any other instructable but I can give you a schematic of how to connect the 4017 and the transistors.
kingkorosh5 years ago
hi there, i made a 8x8 led matrix and i wish to run a tetris game demo(simple animation-non inter active) on it,is it possible connect the matrix to arduino without using shift registers,i have no idea how to calculate resistors aplying on a matrix! can i use the value for single row of 8 led's or it's more complicated?
i shall be highly obliged if you be kind enough to make a comment about this.
Syst3mX (author)  kingkorosh5 years ago
Sure you can!
You can find how in this link : http://www.arduino.cc/playground/Main/DirectDriveLEDMatrix

About the resistor, you need to calculate the value like you do with just one LED with one resistor, just one resistor for one row.
how would i do it for a 5x7 display i dont know any programming ANY help would be apprecieated
and how would i wire it to the 4017
Syst3mX (author)  devicemodder5 years ago
Well if you are using the arduino then you don't need the 4017 for this kind of matrix, but if you want to use my program without  making a lot of changes you just need to add 3-4 lines of code.
If you need help with the code give me your email and I will send you the code.
the type of 5x7 display that i have is the one in this schematic where i would only need 5 transistors

Syst3mX (author)  devicemodder5 years ago
So you have 7 rows of positive pins and 5 columns of negative ones.
That means you can still use the code I gave you(with 7 transistors) but you will need to change the zeros to ones and ones to zeros. Now about the connecting of the transistors: you need to connect all the collectors to 5V and the emitters to the positive rows.

If you want to use only 5 transistors you would have to change the code, and scrolling text would be harder to do.
zidakano5 years ago
looks like a neat build. I'm looking to get into messing with the arduino and have been looking at different projects and what not. I was wondering if the 4017 does not sink current could you not switch the orientation of the anode and cathode removing the need for the 1k resistor and the transistors then change your predefined arrays for characters so that it would still output the way it does now. And using the arduino to sink the current.

dunno just an observation from someone who knows nothing. :)
Mdob5 years ago
Would there possibly be a way to add an auto reset function to the game of life for when it gets stuck?
Syst3mX (author)  Mdob5 years ago
Sure you can, you just need to find away to see when it gets stuck or repeats it self,you basically need to compare 3 generations.
Mdob Syst3mX5 years ago
Ok thanks. This matrix works great btw and the code functions well also.
Syst3mX (author)  Mdob5 years ago
Happy to hear that.
dsveen5 years ago
I have a question about the 4017 Multiplexor. I am trying to do a matrix of 5x16 and i have two of these 4017 multiplexors. How would i put those together to perform the same type of operation. Any help would be greatly appreciated.
Syst3mX (author)  dsveen5 years ago
Mm you can't use them both, there is a problem with this chip because the first output is on when you power up the chip(you can't make all of the outputs low). I will recommend you to use 2 74HC595 shift registers, they are very cheap and easy to use and will be perfect for your project because every 74HC595 has 8 outputs.
zoltzerino5 years ago
I have come across the game of life before, but never fully undestood it. Could someone please explain the concept to me?
Syst3mX (author)  zoltzerino5 years ago
The "game" is a zero-player game, meaning that its evolution is determined by its initial state, requiring no further input from humans. One interacts with the Game of Life by creating an initial configuration and observing how it evolves. There are 4 basic rules in the game: 1. Any live cell with fewer than two live neighbours dies, as if caused by underpopulation. 2. Any live cell with more than three live neighbours dies, as if by overcrowding. 3. Any live cell with two or three live neighbours lives on to the next generation. 4. Any dead cell with exactly three live neighbours becomes a live cell. There are more info on wiki if you want
That is great thankyou. :-)
Just wanted to say I've got the parts and am in the process of soldering this project together. Combine the facts that I got 3mm leds and have very little experience soldering it is taking me a very long time. Still, I'm enjoying it and hope to get it up and running when ever I finally finish it.
I think you should cover the soldering of the negative leads in depth. At first I tried to emulate how you did it your pictures, but with my lack of skill and tiny led's it just wasn't working. Instead of making little loops I'm just soldering a single piece of wire straight up that I can deal with later. It makes soldering way easier, I accidentally burned a friend of mine who was trying to help me before I switched to this new technique. It won't fit as well in the case I got and it won't look quite as nice, but only needing to solder a single thing to each negative lead will make it a lot easier for me in the end.
Syst3mX (author)  fleshBasedProcessor5 years ago
Looking back I could have done this part in a better way (I will try to cover this part when I would have the time) but we should learn from our mistakes and find the technique the is more suitable for us. In the end the best way to learn is from trial and error (but it isn't fun XD)
Syst3mX (author)  fleshBasedProcessor5 years ago
good luck with the project! I would like to see some pictures of it when it works :)
cthulu136 years ago
Check out how I do it here -http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1250398823
Basically I made 8x1 arrays stored in eeprom that have a byte per row. Each mem block in eeprom is a byte in size, so I subtract 65 from each character and do that+7 rows of reading in the eeprom. That gives me the character/sprite, and I can flash it static or scroll it. You predefine your strings with this example (and store them in flash to save ram) but the function just takes a string, could be user input.
Syst3mX (author)  cthulu136 years ago
thats great man, this will give me a chance to work with the eeprom for once.
jeff-o6 years ago
Would there be a way to code this, so that I could tell the arduino to print "Test" (as an example) by calling a routine with the text "Test" as the variable? I suppose it would need to parse the string and build the output based on a table as you've already defined...
Syst3mX (author)  jeff-o6 years ago
The only way I see it possible is to predefine the the "TEST" text or to create a byte array with the test code. I am not an expert in programming and I think that there are another ways of doing that and you should ask for pointers on the arduino forum.
jeff-o Syst3mX6 years ago
Hmmm, okay, I will keep looking then. :)
Couldn't you use 2 4017's and free up some pins on the arduino for other functions?
Syst3mX (author)  InfamousKirch6 years ago
Mmm I don't think you can, because the 4017 starts with the first output on HIGH,
you can use a shift registers and that will free up a lot of pins, every shift register gives you 8 more output and takes just 3 arduino pins, you can wire up 20 shift registers and still only use 3 arduino pins.
heres a link for shift registers if you want : http://www.arduino.cc/en/Tutorial/ShiftOut
MultiViews6 years ago
Hi, i'm a noobie in this section but the transistors have 3 pins. How are they connected and where is "Reset", "Clock", "Clock inhibit" & "Carry out" connected from the 4017 () I don't know if they have the right name but i hope you understand :)
Methinks the best way to explain the way the transistors are working in this is that they are being used as a switch, when a voltage is applied to the BASE it's allows current to flow from the COLLECTOR to the EMITTER, when the voltage is removed from BASE, the COLLECTOR and EMITTER disconnect.
Syst3mX (author)  MultiViews6 years ago
OK about the transistors,Now you should go this PDF : http://www.fairchildsemi.com/ds/2N%2F2N3904.pdf
there you will see what every pin does. The middle pin is the base you need to connect it with a resistor to the output pin of the 4017. The left one is Collector you need to connect it to the negative pin of the LED's, and the right pin on the transistor is the Emitter and you should connect it to ground.
About the 4017, I have added (in step 3) a link to a good site to learn about it.
And here is a picture with the pins functions : http://www.instructables.com/file/FGHGATNFWMO2YYQ/

Hope I helped you.
VHawk6 years ago
You could save a lot of time and money by getting a led matrix/grid sample from SunLed USA
Syst3mX (author)  VHawk6 years ago
you're right but where is the fun in that( I had a lot of LEDs so I need to use them), and I couldn't find a 8*10 matrix.
hg3416 years ago
thats cool i might do this when i get some more money