this will work fine with 5 to 8 leds but when u have drive a display board
which may contain LEDs between 70 to 100 depending on the matrix size , using each microcontroller I/O to control each LED is impossible and !!!!!!!!
so there are ways in which we can control many leds using few i/o pins
1)using charlieplexing if we have n i/o pins we can control
n*(n-1) leds using this method and all the pattern's may not be possible in this case
more about charlieplexing can be found at charlieplexing
charlieplexing with 3 i/o pins
2)using Dot Matrix
leds a connected like this
two types common anode n common cathode type.....
u can buy this modules , they cost around Rs70(5*7 matrix)
here we send data row wise , that is activating one row at a time and through column we need to send the data which we want to see
this image might give a better idea
i have shown for two row's this repeat's in a loop for all the row ..
3) using decoder's this is the ultimate way and flickering can be seen if the microcontroller is working at slow speed's , we can control 1024 leds with 11 i/o pins two 5*32 decoder for row n column
we are not interested with this method , as modules are not available we need solder the whole LED network
Program which i have implemented
ATmega32 chip running @4mhz
compiler WINAVR
#include
#define F_CPU 4000000UL
#include
typedef unsigned char u8;
typedef unsigned int u16;
int main(void)
{
u16 data2[5]={1,2,4,8,16},y[5];
u16 i,j,k,p,t,l[5][6]={{0x7f,0x41,0x41,0x41,0x3e,0x00},{0x3e,0x41,0x41,0x41,0x3e,0x00},{0x7f,0x40,0x40,0x40,0x40,0x00},{0x7f,0x40,0x40,0x40,0x40,0x00},{0x01,0x02,0x7c,0x02,0x01,0x00}};//data to be displayed
DDRD=0X00; //control i/p for Lb and Rb
PORTD=0XFF; //internal pull ups
DDRA=0xff;//data O/p to dot matrix
DDRC=0xff; //control o/p to dot matrix
for(i=0;i<5;i++)
{
y[i]=0;
}
while(1)
{
for(i=0;i<5;i++)
{
for(p=0;p<6;p++)
{
// display data
for(j=0;j<50;j++)
{
for(k=0;k<5;k++)
{
PORTC=data2[4-k];
PORTA=y[k];
_delay_ms(1);
}
}
// next loop data
for(t=0;t<4;t++)
{
y[4-t]=y[3-t];
}
y[0]=l[i][p];//new data
}// end of p for
}// end of i for
}// end while
}
here's the vedio moving message vedio
PING PONG game on DOT matrix
No comments:
Post a Comment