3 Simple Ways to
Share What You Make

With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.

PhotosPhotos

Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.

Step by StepStep-By-Step

Share your step-by-step photos with text instructions of what you made so others can do it too!

VideoVideo

Share your how-to video. You'll need your embed code from a video site such as YouTube.

Make a 8x10 L.E.D Matrix

Make a 8x10 L.E.D Matrix
«
  • IMG_0013.JPG
  • PICT0013.JPG
  • PICT0014.JPG
  • IMG_0005.JPG
UPDATE 1: I HAVE ADDED THE CODE FOR CONWAY'S GAME OF LIFE
UPDATE 2: NOW YOU CAN SAVE SOME ARDUINO PINS WITH THE HELP OF 1 SHIFT REGISTER.

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.

 
Remove these adsRemove these ads by Signing Up
 

Step 1Stuff you need

Stuff you need
«
  • PICT0002.JPG
  • PICT0004.JPG
  • IMG_0009.JPG
Tools:
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

« Previous StepDownload PDFView All StepsNext Step »
191 comments
1-40 of 191next »
Mar 6, 2012. 2:53 PMKongDan says:
First of all - great tutorial!
Might be a stupid question - how exactly do I connect the emitter pins of the transistors to the ground?
Dec 26, 2011. 6:59 AMmatt.e.jenkins says:
This is what i have so far.

Feb 22, 2012. 11:36 PMmzee233 says:
dude...is it necessary to have a separate circuit to display the time and date....??
Feb 23, 2012. 8:17 AMmatt.e.jenkins says:
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.
Feb 28, 2012. 6:07 AMmzee233 says:
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?
Feb 22, 2012. 11:35 PMmzee233 says:
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...!!
Feb 17, 2012. 7:10 PMBlaneparker says:
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
Feb 2, 2012. 10:53 AMfizzypop55 says:
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?
Jan 23, 2012. 3:26 AMzolibert00 says:
sir, what is the code to flash real time, could you post it in one of your attachments...thx
Jan 22, 2012. 1:18 AMsciguy102 says:
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
Dec 20, 2011. 1:03 PMmatt.e.jenkins says:
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?
Dec 5, 2011. 12:24 PMmatt.e.jenkins says:
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.
Nov 26, 2011. 3:40 PMsiddeshwar says:
hey thats a nice one
Nov 24, 2011. 4:19 PMbonhalt says:
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.
Nov 7, 2011. 7:40 AMmatt.e.jenkins says:
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
Oct 26, 2011. 10:32 AMasethi5 says:
newbie here......what does a shift register do and is it necessary for scrolling text??Please help!!!!!!! ANYBODY!!!
Oct 30, 2011. 8:16 AMEZELab says:

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
Oct 11, 2011. 1:53 PMEZELab says:
Attaching my ONE ( :

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

Nice Instructable ( :
Thank you
Oct 19, 2011. 6:04 PMaxeman911 says:
are the transistors really neccesary?
Oct 16, 2011. 8:56 PMaxeman911 says:
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(){
pinMode(DataPin,OUTPUT);
pinMode(ClockPin,OUTPUT);
pinMode(LatchPin,OUTPUT);
//simple stuff here
pinMode(clock,OUTPUT);
pinMode(Reset,OUTPUT);
//reseting the 4017 IC, you have to do this
digitalWrite(Reset,HIGH);
delayMicroseconds(5);
digitalWrite(Reset,LOW);
}

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);
delayMicroseconds(800);
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).
}
Oct 13, 2011. 3:26 AMNikira says:
Does it matter which Arudino model I choose? They have so many O.o
Oct 6, 2011. 3:53 PMlmacarayo says:
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
Oct 9, 2011. 8:22 AMlmacarayo says:
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..
Sep 19, 2011. 7:11 AMjbwkz says:
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...
Sep 29, 2011. 11:44 AMmmorrell-stinson says:
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!
Sep 21, 2011. 12:16 PMmatt.e.jenkins says:
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,
Matt
Sep 27, 2011. 9:44 AMmatt.e.jenkins says:
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.
Sep 6, 2011. 3:57 PMjmartinez pedrero says:
hi nice job i have a question if i not use de arduino what i use or is another way to do the animations?
Aug 30, 2011. 6:46 PMbillyboy666 says:
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...
Aug 15, 2011. 11:19 AMa_d777 says:
Hey!
Some amazing work you've done in there!
Can you release a Code Maker XLS for 8x8 LED matrix? that would be great!

Thanks :)
Aug 12, 2011. 2:31 AMcknapp2 says:
Hy
i am new with transistors and i dont know how to wire them
Aug 12, 2011. 8:06 AMcknapp2 says:
Thanks
1-40 of 191next »

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
97
Followers
4
Author:Syst3mX(Vadim)
Electronics and LEDs what can be better ?! :D