TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: korpaztk en 03 de Febrero de 2011, 17:57:25

Título: Mi nueva matriz de led
Publicado por: korpaztk en 03 de Febrero de 2011, 17:57:25
Bueno... por donde comenzar...
el año pasado, empece con este asunto de las matrices de led basicamente con una pequeña de 8 x 8, de la cual habia visto en la pagina de ucontrol, estuve meses dando vuelta para construirla (ya que en programacion en la escuela dabamos muy poco por distintos motivos), el costo aqui en mi zona por los led era demasiado caro lo q me llevo a pedirlos a otro lado, lo cual empece a seguir dando vueltas y buscando mucha informacion en internet, al principio me costo muchisimo entender como se formaba una letra ( ahora no jeje)
[(http://img821.imageshack.us/img821/3199/matriz8x8.th.jpg) (http://img821.imageshack.us/i/matriz8x8.jpg/)
este fue el primero que hice, con imagenes ya precargadas, ya q tampoco sabia utilizar el puerto serie.

ahora estoy en mi nueva matriz que tiene 36 columnas y 7 filas.

el chip esta programado en lenguaje c, pero no esta hecho por mi sino por

http://www.todopic.com.ar/foros/index.php?topic=28409.20

que la verdad muy bueno el codigo yo lo habia montado en el pic que puso en su programa (uno prestado) y me funciono perfecto, luego al codigo le hice unas pequeñas modifiaciones ya que el pic que utilizo yo es otro, nada mas ni nada menos que el conocido pic16f877a ( el disponible aqui en la zona tambien),

todavia no alcance a terminarlo, porque estoy viendo que tengo algunos problemitas, (porque el micro tiene ya algunos problemas en algunas patitas de sus puertos asiq tuve q arreglar temporariamente el programa del micro para q funcione...
pero ahi es donde llego mi nuevo problema, no me muestra bien los caracteres.
EJ:

Letra A:

00100                        00100
01010                        01010
10001                        01001
10001    Y me sale ==> 10001
11111                        11011
10001                        10001
10001                        10000

nose puede apreciar bien, pero los muestra a veces con led encendidos de mas,
pero buenooo ya con mi nuevo pic y volviendo el programa al estado anterior creeria que se solucionara.

aqui unas imagenes de como va el proyecto
(http://img6.imageshack.us/img6/9937/sdc10092n.th.jpg) (http://img6.imageshack.us/i/sdc10092n.jpg/)

y aqui otra
(http://img16.imageshack.us/img16/9841/sdc10091sr.th.jpg) (http://img16.imageshack.us/i/sdc10091sr.jpg/)

algunas ya muestro cuando esta funcionando con una parte nomas del cartel, ya que las placa las consegui de 20 x 10 solamente para poder armar 7 filas por 18 columnas,
(http://img196.imageshack.us/img196/3618/sdc10459a.th.jpg) (http://img196.imageshack.us/i/sdc10459a.jpg/)
(http://img703.imageshack.us/img703/7868/sdc10460f.th.jpg) (http://img703.imageshack.us/i/sdc10460f.jpg/)
(http://img153.imageshack.us/img153/6311/sdc10461w.th.jpg) (http://img153.imageshack.us/i/sdc10461w.jpg/)
(http://img227.imageshack.us/img227/8262/sdc10462j.th.jpg) (http://img227.imageshack.us/i/sdc10462j.jpg/)

mas adelante cuando apenas consiga el nuevo pic procedere a continuarlo y poder terminarlo
mientras tanto continuare posteando mis avance...

por ahora me despido, y muchas gracias a todos los que me han ayudado y a los que no tambien, porque he aprendido que no todo viene de arriba.-


Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 03 de Febrero de 2011, 19:15:32
la verdad que me esta llevando meses hacerlo, no por tema de tiempos sino por $$$, y bue tengo recien 19 y el año pasado me recibi de tecnico electronico, y ya tengo muchas ideas en mente pero buee, como muchos de aqui de este foro dicen, lo agrego en mi lista, y ojala los pueda ahcer a la gran mayoria, y obviamente dejarlos acentados aqui para q muchos lo puedan ver y hacer.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Febrero de 2011, 12:41:54


el video que prometi  :-/


bueno lo dejo asi con el enlace porque no se como hacer para que el video aparezca en el foro :( si despues alguien me da una mano para se vea le agradezco un monton =)
Título: Re: Mi nueva matriz de led
Publicado por: Miquel_S en 12 de Febrero de 2011, 12:55:39
Hola korpaztk, el enlace no funca.

Saludos.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Febrero de 2011, 13:29:35
gracias por avisar, ni me habia dado cuenta, ahora si funciona =)
Título: Re: Mi nueva matriz de led
Publicado por: stk500 en 12 de Febrero de 2011, 13:36:52
En Hora buenas Korpaytk , da alegria  ver acabado tu proyecto.

Saludos
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Febrero de 2011, 13:45:18
ya mas adelante cuando tnga un poco mas de $$ jeje comprare un gabinete para hacerlo quedar mas elegante, ahora es la hora de empezar a insertarle efectos que es dond viene la parte dificil jeje, como hacer q aparezcan de arriba o q aparezcan mitad y mitad de las palabras por los costados y se peguen y demas pero buee...
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Febrero de 2011, 13:46:29
Código: [Seleccionar]
//***************E N C A B E Z A D O  P R I N C I P A L
#include <16f877A.h>
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte t1con = 0x0fcd
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#priority rda,timer1
//******************************************************************
#define uno PIN_B0
#define dos PIN_D2
//V A R I A B L E S
int1 ban_recibir;
int1 ban_tmr1;
int1 ban_espacio;
int con_recibir;
int con_columnas;
int fin_columnas;
int con_caracter;
int con_espacio;
char cadena[96];
int columnas[36];
int mof=0x00;
int yu;
int fijo1;

//******************************

//S U B R U T I N A S************
void display(void);
void display_1(void);
void display_2 (void);
void rotar_mensaje(void);
//void rotar_mensaje_1(void);
//void rotar_columnas(void);
//void rotar_columnas_1(void);
//*******************************


//V A R I A B L E S  D E  C A R A C T E R E S

int const tab_espacio[] = {
0b00000000,
0b00000000,
0b00000000,
};

int const tab_admiracion[] = {
0b11110110,
0b11110110,
};

int const tab_comilla[] = {
0b11100000,
0b11100000,
0b00000000,
0b11100000,
0b11100000,
};

int const tab_numero[] = {
0b00101000,
0b11111110,
0b00101000,
0b11111110,
0b00101000,
};

int const tab_moneda[] = {
0b00100100,
0b01010100,
0b11111110,
0b01010100,
0b01001000,
};

int const tab_porcentaje[] = {
0b01100100,//0x32
0b01101000,//0x34
0b00010000,//0x08
0b00101100,//0x16
0b01001100,//0x26
};

int const tab_and[] = {
0b01101100,
0b11111110,
0b10010010,
0b10101010,
0b01000110,
0b00111010,
};

int const tab_apostrofo[] = {
0b11010000,
0b11100000,
};

int const tab_parent_a[] = {
0b00111000,
0b01000100,
0b10000010,
};

int const tab_parent_b[] = {
0b10000010,
0b01000100,
0b00111000,
};

int const tab_asterisco[] = {
0b00101000,
0b00010000,
0b01111100,
0b00010000,
0b00101000,
};

int const tab_mas[] = {
0b00010000,
0b00010000,
0b01111100,
0b00010000,
0b00010000,
};

int const tab_coma[] = {
0b00011010,
0b00011100,
};

int const tab_menos[] = {
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
};

int const tab_punto[] = {
0b00000110,
0b00000110,
};

int const tab_slash[] = {
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
};

int const tab_0[] = {
0b01111100,
0b11111110,
0b10010010,
0b10100010,
0b01111100,
};

int const tab_1[] = {
0b01000010,
0b11111110,
0b11111110,
0b00000010,
};

int const tab_2[] = {
0b01100110,
0b10001110,
0b10011010,
0b11110010,
0b01100010,
};

int const tab_3[] = {
0b11000100,
0b10010010,
0b10110010,
0b11111110,
0b11001100,
};

int const tab_4[] = {
0b00011000,
0b00101000,
0b01001000,
0b11111110,
0b11111110,
0b00001000,
};

int const tab_5[] = {
0b11100100,
0b11100010,
0b10100010,
0b10111110,
0b10011100,
};

int const tab_6[] = {
0b01111100,
0b11111110,
0b10100010,
0b10100010,
0b00011100,
};

int const tab_7[] = {
0b11000110,
0b10001110,
0b10011000,
0b11110000,
0b11100000,
};

int const tab_8[] = {
0b01101100,
0b11111110,
0b10010010,
0b10010010,
0b01101100,
};

int const tab_9[] = {
0b01110000,
0b10001010,
0b10001010,
0b11111110,
0b01111100,
};

int const tab_dos_puntos[] = {
0b01101100,
0b01101100,
};

int const tab_punto_coma[] = {
0b01101010,
0b01101100,
};

int const tab_menor[] = {
0b00010000,
0b00101000,
0b01000100,
0b10000010,
};

int const tab_igual[] = {
0b00101000,
0b00101000,
0b00101000,
0b00101000,
};

int const tab_mayor[] = {
0b10000010,
0b01000100,
0b00101000,
0b00010000,
};

int const tab_interrogante[] = {
0b01000000,
0b10001010,
0b10011010,
0b11110000,
0b01100000,
};

int const tab_arroba[] = {
0b01001100,
0b10010010,
0b10011110,
0b10000010,
0b01111100,
};
//////////////////////////////////////////////////////////////
int const tab_A[] = {
0b01111110,
0b11111110,
0b10001000,
0b10001000,
0b01111110,
};

int const tab_B[] = {
0b11111110,
0b11111110,
0b10010010,
0b10010010,
0b01101100,
};

int const tab_C[] = {
0b01111100,
0b11111110,
0b10000010,
0b10000010,
0b01000100,
};

int const tab_D[] = {
0b11111110,
0b11111110,
0b10000010,
0b10000010,
0b01111100,
};

int const tab_E[] = {
0b11111110,
0b11111110,
0b10010010,
0b10010010,
0b10000010,
};

int const tab_F[] = {
0b11111110,
0b11111110,
0b10010000,
0b10010000,
0b10000000,
};

int const tab_G[] = {
0b01111100,
0b11111110,
0b10010010,
0b10010010,
0b10011110,
};
////////////////////////////////////////////////////////
int const tab_H[] = {
0b11111110,
0b11111110,
0b00010000,
0b00010000,
0b11111110,
};

int const tab_I[] = {
0b10000010,
0b11111110,
0b11111110,
0b10000010,
};

int const tab_J[] = {
0b00001100,
0b10000010,
0b11111110,
0b11111100,
0b10000000,
};

int const tab_K[] = {
0b11111110,
0b11111110,
0b00110000,
0b01001000,
0b10000110,
};

int const tab_L[] = {
0b11111110,
0b11111110,
0b00000110,
0b00000110,
0b00000110,
};

int const tab_M[] = {
0b11111110,
0b11111110,
0b01000000,
0b00100000,
0b01000000,
0b11111110,
};

int const tab_N[] = {
0b11111110,
0b11111110,
0b00010000,
0b00001000,
0b11111110,
};

int const tab_enie_1 [] = {
0b00111110,
0b10111110,
0b01001000,
0b10000100,
0b10111110,
};

int const tab_O[] = {
0b01111100,
0b11111110,
0b10000010,
0b10000010,
0b01111100,
};

int const tab_P[] = {
0b11111110,
0b11111110,
0b10010000,
0b10010000,
0b01100000,
};

int const tab_Q[] = {
0b01111100,
0b11111110,
0b10000010,
0b10000110,
0b01111110,
};

int const tab_R[] = {
0b11111110,
0b11111110,
0b10010000,
0b10011000,
0b01100110,
};

int const tab_S[] = {
0b01100100,
0b11110010,
0b10010010,
0b10011110,
0b01001100,
};

int const tab_T[] = {
0b10000000,
0b11111110,
0b11111110,
0b10000000,
};

int const tab_U[] = {
0b11111100,
0b11111110,
0b00000010,
0b00000010,
0b11111100,
};

int const tab_V[] = {
0b11111000,
0b11111100,
0b00000010,
0b00000100,
0b11111000,
};

int const tab_W[] = {
0b11111100,
0b11111110,
0b00000100,
0b00001000,
0b00000100,
0b11111110,
};

int const tab_X[] = {
0b11000110,
0b11101000,
0b00010000,
0b00101110,
0b11001110,
};

int const tab_Y[] = {
0b11000000,
0b00100010,
0b00111110,
0b00111100,
0b11000000,
};

int const tab_Z[] = {
0b10001110,
0b10011110,
0b10110010,
0b11100010,
0b11000010,
};

int const tab_lla_a[] = {
0b11111110,
0b10000010,
0b10000010,
};

int const tab_sim1[] = {
0b1010100,
0b0110100,
0b0011111,
0b0110100,
0b1010100,
};

int const tab_lla_b[] = {
0b10000010,
0b10000010,
0b11111110,
};

int const tab_sim2[] = {
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
};

int const tab_ul[] = {
0b00000010,
0b00000010,
0b00000010,
0b00000010,
0b00000010,
};


int const tab_dia[] = {
0b10000000,
0b01000000,
0b00100000,
};

int const tab_aa[] = {
0b00000100,
0b00101010,
0b00101010,
0b00111110,
0b00011110,
};

int const tab_bb[] = {
0b11111110,
0b11111110,
0b00100010,
0b00100010,
0b00011100,
};

int const tab_cc[] = {
0b00011100,
0b00111110,
0b00100010,
0b00100010,
0b00000100,
};

int const tab_dd[] = {
0b00011100,
0b00100010,
0b00100010,
0b11111110,
0b11111110,
};

int const tab_ee[] = {
0b00011100,
0b00111110,
0b00101010,
0b00101010,
0b00010000,
};

int const tab_ff[] = {
0b00010000,
0b01111110,
0b11111110,
0b10010000,
0b01000000,
};

int const tab_gg[] = {
0b00110010,
0b01001010,
0b01111110,
0b00111100,
};

int const tab_hh[] = {
0b11111110,
0b11111110,
0b00100000,
0b00100000,
0b00011110,
};

int const tab_ii[] = {
0b00100010,
0b10111110,
0b10111110,
0b00000010,
};

int const tab_jj[] = {
0b00000100,
0b00100010,
0b10111110,
0b10111100,
};

int const tab_kk[] = {
0b11111110,
0b01111110,
0b00001000,
0b00010100,
0b00100010,
};

int const tab_ll[] = {
0b00000010,
0b11111110,
0b11111110,
0b10000010,
};

int const tab_mm[] = {
0b00111110,
0b00011110,
0b00100000,
0b00011110,
0b00100000,
0b00011110,
};

int const tab_nn[] = {
0b00111110,
0b00011110,
0b00100000,
0b00100000,
0b00011110,
};

int const tab_enie_2[] = {
0b10111110,
0b00011110,
0b00100000,
0b10100000,
0b10011110,
};

int const tab_oo[] = {
0b00011100,
0b00111110,
0b00100010,
0b00100010,
0b00011100,
};

int const tab_pp[] = {
0b01111110,
0b01111110,
0b01001000,
0b01001000,
0b00110000,
};

int const tab_qq[] = {
0b00110000,
0b01001000,
0b01001000,
0b01111110,
0b01111110,
};

int const tab_rr[] = {
0b00111110,
0b00011110,
0b00100000,
0b00100000,
0b00010000,
};

int const tab_ss[] = {
0b00010010,
0b00111010,
0b00101110,
0b00100100,
};

int const tab_tt[] = {
0b00100000,
0b11111100,
0b11111110,
0b00100010,
0b00000100,
};

int const tab_uu[] = {
0b00111100,
0b00000010,
0b00000010,
0b00111100,
0b00111110,
};

int const tab_vv[] = {
0b00111000,
0b00111100,
0b00000010,
0b00000100,
0b00111000,
};

int const tab_ww[] = {
0b00111110,
0b00111100,
0b00000010,
0b00001100,
0b00000010,
0b00111100,
};

int const tab_xx[] = {
0b00100010,
0b00010100,
0b00001000,
0b00010100,
0b00100010,
};

int const tab_yy[] = {
0b00110000,
0b00001010,
0b00001010,
0b00111110,
0b00111100,
};

int const tab_zz[] = {
0b00100010,
0b00100110,
0b00101110,
0b00111010,
0b00110010,
};

int const tab_cor1[] = {
0b00010000,
0b01101100,
0b10000010,
0b10000010,
};

int const tab_sim3[] = {
0b11111110,
};

int const tab_cor2[] = {
0b10000010,
0b10000010,
0b01101100,
0b00010000,
};

int const tab_fle1[] = {
0b00010000,
0b00010000,
0b01010100,
0b00111000,
0b00010000,
};

int const tab_fle2[] = {
0b00010000,
0b00111000,
0b01010100,
0b00010000,
0b00010000,
};

///////////////////////////////////////////////////////////////////////////////
#int_timer1 //Vector de interrupcion por desbordamiento del
//timer 1
void interrupcion_tmr1(void)
{
delay_us(2); //tiempo de 250 ms
set_timer1(3048);
ban_tmr1 = 0x01;
}

///////////////////////////////////////////////////////////////////////////////
#int_rda     //Vector de interrupcion de la recepcion de datos
void interrupcion_rx(void) //por el usart
{
char respaldo;

respaldo = getc(); //Se lee el dato recibido con el código 13 (enter) se da inicio a la
//escritura de datos en la matriz y con el código 27 (escape) se finaliza
//la recepcion de datos
if(ban_recibir == 0x01)
{
cadena[con_recibir] = respaldo;
delay_us(10);
con_recibir++;
delay_us(10);
putc(respaldo);
delay_us(10);


}

if(respaldo == 0x0D)
{
ban_recibir = 0x01;
delay_us(10);
con_recibir = 0x00;
delay_us(10);
memset(columnas,0,sizeof(columnas));
delay_us(2);
mof = 0x01;
delay_us(10);
fijo1=0x00;
}



if(respaldo == 0x1B)
{
ban_recibir = 0x00;
delay_us(10);
con_caracter = 0x00;
delay_us(10);
con_columnas = 0x00;
delay_us(10);
yu=0x00;
}

}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

#zero_ram //Borrado de la memoria ram

void main(void) //Rutina principal
{
set_tris_a(0X00);
set_tris_b(0X00);
set_tris_c(0X80);
set_tris_d(0X00);
port_b_pullups(false);
setup_timer_1(t1_internal | t1_div_by_4);
setup_adc_ports(no_analogs);
set_timer1(0);


//se carga en la matriz todos los caracteres ascii

for(con_recibir = 32; con_recibir <=128; con_recibir++)
{
cadena[con_recibir-32] = con_recibir;
}

cadena[95] = 27;

enable_interrupts(global); //habilitación de todas las interrupciones
enable_interrupts(int_rda); //habilitación de la interrupción de la recepcion de datos
enable_interrupts(int_timer1); //habilitación de la interrupción del Tmr1
disable_interrupts(int_ext);
disable_interrupts(int_rtcc);
disable_interrupts(int_timer2);
disable_interrupts(int_rb);
mof=0x00;
portb=0;
portd=0;
while(true)
{
///////////////////////////////////////////////////////////////////////////////
while(mof == 0x00) //Rutina general
{
mof=0x00;
delay_us(10);
display();

if(ban_tmr1 == 0x01)
{
ban_tmr1 = 0x00;
delay_us(10);
rotar_mensaje();
mof=0x00;
}
}
///////////////////////////////////////////////////////////////////////////////
while(mof == 0x01)
{
char key=0x00;
disable_interrupts(global);
PUTS("Presione 1 para texto fijo");
delay_ms(100);
PUTS("Presione 2 para texto movil");
delay_ms(100);
PUTS("Presione 3 para texto movil (acelerado)");
delay_ms(100);
do
{
key=getc();

}while (key != 49 && key != 50 && key != 51);

 
if(key == 49)
{
mof= 0x02;
PUTS("Ingrese su texto acontinuacion (Permitido Solo 5 Caracteres)");
delay_ms(2000);
PUTS("\f");
enable_interrupts(global);
mof=0x02;
delay_us(20);
ban_recibir = 0x01;
delay_us(10);
con_recibir = 0x00;
delay_us(10);
}
if(key == 50)
{
mof=0x00;
PUTS("Ingrese su texto acontinuacion");
delay_ms(2000);
PUTS("\f");
enable_interrupts(global);
mof=0x00;
ban_recibir = 0x01;
delay_us(10);
con_recibir = 0x00;
delay_us(10);

}

if(key == 51)
{
mof=0x03;
PUTS("Ingrese su texto acontinuacion");
delay_ms(2000);
PUTS("\f");
enable_interrupts(global);
mof=0x03;
ban_recibir = 0x01;
delay_us(10);
con_recibir = 0x00;
delay_us(10);

}


}

///////////////////////////////////////////////////////////////////////////////
while(mof == 0x02)

{

int fijo;
fijo=yu;
delay_us(10);
display_1();
if(ban_recibir == 0x00)
{
if(fijo <= 0x24)
{
if(ban_tmr1 == 0x01)
{
ban_tmr1 = 0x00;
delay_us(10);

rotar_mensaje();
mof=0x02;
fijo = fijo+0x01;
fijo1=fijo1+0x01;
}
yu = fijo;
}
}




///////////////////////////////////////////////////////////////////////////////////



}
while(mof == 0x03) //Rutina general
{
mof=0x03;
delay_us(10);
display_2();
rotar_mensaje();
if(ban_tmr1 == 0x01)
{
ban_tmr1 = 0x00;
delay_us(10);
rotar_mensaje();
mof=0x03;
}

}

}
}
///////////////////////////////////////////////////////////////////////////////

void display(void) //rutina general que refresca las columnas de la matriz
{

int i;
mof=0x00;
output_low(PIN_D0); //Desactivo Registro
delay_us(2);
output_high(PIN_D0); //Activo Registro
delay_us(2);
output_high(PIN_D1); //Dato en uno
delay_us(2);


for(i=0;i<36;i++)
{
portb = 0;
delay_us(2);
output_high(PIN_C3); //Activo el clock
delay_us(2);
output_low(PIN_C3); //Desactivo el clock
delay_us(2);
portb = columnas[i]; //Cargo en el puerto b el valor que alla en la cadena COLUMNAS
delay_us(500);
output_low(PIN_D1); //Dato en cero
delay_us(2);

}


}


void display_1(void)
{
int i;
mof=0x02;
output_low(PIN_D0); //Desactivo Registro
delay_us(2);
output_high(PIN_D0); //Activo Registro
delay_us(2);
output_high(PIN_D1); //Dato en uno
delay_us(2);

for(i=0;i<36;i++)
{
portb = 0;
delay_us(2);
output_high(PIN_C3); //Activo el clock
delay_us(2);
output_low(PIN_C3); //Desactivo el clock
delay_us(2);
portb = columnas[i];     //Cargo en el puerto b el valor que alla en la cadena COLUMNAS
delay_us(450);
output_low(PIN_D1); //Dato en cero
delay_us(2);

}
}
////////////////////////////////////////////////////////////////////////////////
void display_2(void) //rutina general que refresca las columnas de la matriz
{

int i;
mof=0x03;
output_low(PIN_D0); //Desactivo Registro
delay_us(2);
output_high(PIN_D0); //Activo Registro
delay_us(2);
output_high(PIN_D1); //Dato en uno
delay_us(2);

for(i=0;i<36;i++)
{
portb = 0;
delay_us(2);
output_high(PIN_C3); //Activo el clock
delay_us(2);
output_low(PIN_C3); //Desactivo el clock
delay_us(2);
portb = columnas[i];     //Cargo en el puerto b el valor que alla en la cadena COLUMNAS
delay_us(100);
output_low(PIN_D1); //Dato en cero
delay_us(2);

}


}


///////////////////////////////////////////////////////////////////////////////
void rotar_mensaje(void) //rutina general que recorre la matriz cadena y descompone los carateres
{ //en columnas
int respaldo;
int i;
if(ban_recibir == 0x01) //Consulta si se presiono Enter
{
return;
}

if(ban_espacio == 0x01)
{

for(i=0x27; i>0x00; i--)
{
columnas[i] = columnas[i-1];
}

columnas[0] = 0x00;
con_espacio++;

if(con_espacio == 0x02)
{
ban_espacio = 0x00;
con_espacio = 0x00;
}
return;


}
///////////////////////////////////////////////////////////////////////////////////
//cuando encuatra el codigo 27 (escape) reinicia el mensaje
if(cadena[con_caracter] == 27)
{
con_caracter = 0;
con_columnas = 0;
return;
}
///////////////////////////////////////////////////////////////////////////////////


switch(cadena[con_caracter])
{
case 32: respaldo = tab_espacio[con_columnas]; fin_columnas = sizeof(tab_espacio); break;
case 33: respaldo = tab_admiracion[con_columnas]; fin_columnas = sizeof(tab_admiracion); break;
case 34: respaldo = tab_comilla[con_columnas]; fin_columnas = sizeof(tab_comilla); break;
case 35: respaldo = tab_numero[con_columnas]; fin_columnas = sizeof(tab_numero); break;
case 36: respaldo = tab_moneda[con_columnas]; fin_columnas = sizeof(tab_moneda); break;
case 37: respaldo = tab_porcentaje[con_columnas]; fin_columnas = sizeof(tab_porcentaje); break;
case 38: respaldo = tab_and[con_columnas]; fin_columnas = sizeof(tab_and); break;
case 39: respaldo = tab_apostrofo[con_columnas]; fin_columnas = sizeof(tab_apostrofo); break;
case 40: respaldo = tab_parent_a[con_columnas]; fin_columnas = sizeof(tab_parent_a); break;
case 41: respaldo = tab_parent_b[con_columnas]; fin_columnas = sizeof(tab_parent_b); break;
case 42: respaldo = tab_asterisco[con_columnas]; fin_columnas = sizeof(tab_asterisco); break;
case 43: respaldo = tab_mas[con_columnas]; fin_columnas = sizeof(tab_mas); break;
case 44: respaldo = tab_coma[con_columnas]; fin_columnas = sizeof(tab_coma); break;
case 45: respaldo = tab_menos[con_columnas]; fin_columnas = sizeof(tab_menos); break;
case 46: respaldo = tab_punto[con_columnas]; fin_columnas = sizeof(tab_punto); break;
case 47: respaldo = tab_slash[con_columnas]; fin_columnas = sizeof(tab_slash); break;

case 48: respaldo = tab_0[con_columnas]; fin_columnas = sizeof(tab_0); break;
case 49: respaldo = tab_1[con_columnas]; fin_columnas = sizeof(tab_1); break;
case 50: respaldo = tab_2[con_columnas]; fin_columnas = sizeof(tab_2); break;
case 51: respaldo = tab_3[con_columnas]; fin_columnas = sizeof(tab_3); break;
case 52: respaldo = tab_4[con_columnas]; fin_columnas = sizeof(tab_4); break;
case 53: respaldo = tab_5[con_columnas]; fin_columnas = sizeof(tab_5); break;
case 54: respaldo = tab_6[con_columnas]; fin_columnas = sizeof(tab_6); break;
case 55: respaldo = tab_7[con_columnas]; fin_columnas = sizeof(tab_7); break;
case 56: respaldo = tab_8[con_columnas]; fin_columnas = sizeof(tab_8); break;
case 57: respaldo = tab_9[con_columnas]; fin_columnas = sizeof(tab_9); break;
case 58: respaldo = tab_dos_puntos[con_columnas]; fin_columnas = sizeof(tab_dos_puntos); break;
case 59: respaldo = tab_punto_coma[con_columnas]; fin_columnas = sizeof(tab_punto_coma); break;
case 60: respaldo = tab_menor[con_columnas]; fin_columnas = sizeof(tab_menor); break;
case 61: respaldo = tab_igual[con_columnas]; fin_columnas = sizeof(tab_igual); break;
case 62: respaldo = tab_mayor[con_columnas]; fin_columnas = sizeof(tab_mayor); break;
case 63: respaldo = tab_interrogante[con_columnas]; fin_columnas = sizeof(tab_interrogante); break;

case 64: respaldo = tab_arroba[con_columnas]; fin_columnas = sizeof(tab_arroba); break;
case 65: respaldo = tab_A[con_columnas]; fin_columnas = sizeof(tab_A); break;
case 66: respaldo = tab_B[con_columnas]; fin_columnas = sizeof(tab_B); break;
case 67: respaldo = tab_C[con_columnas]; fin_columnas = sizeof(tab_C); break;
case 68: respaldo = tab_D[con_columnas]; fin_columnas = sizeof(tab_D); break;
case 69: respaldo = tab_E[con_columnas]; fin_columnas = sizeof(tab_E); break;
case 70: respaldo = tab_F[con_columnas]; fin_columnas = sizeof(tab_F); break;
case 71: respaldo = tab_G[con_columnas]; fin_columnas = sizeof(tab_G); break;
case 72: respaldo = tab_H[con_columnas]; fin_columnas = sizeof(tab_H); break;
case 73: respaldo = tab_I[con_columnas]; fin_columnas = sizeof(tab_I); break;
case 74: respaldo = tab_J[con_columnas]; fin_columnas = sizeof(tab_J); break;
case 75: respaldo = tab_K[con_columnas]; fin_columnas = sizeof(tab_K); break;
case 76: respaldo = tab_L[con_columnas]; fin_columnas = sizeof(tab_L); break;
case 77: respaldo = tab_M[con_columnas]; fin_columnas = sizeof(tab_M); break;
case 78: respaldo = tab_N[con_columnas]; fin_columnas = sizeof(tab_N); break;
case 209: respaldo = tab_enie_1[con_columnas]; fin_columnas = sizeof(tab_enie_1); break;
case 79: respaldo = tab_O[con_columnas]; fin_columnas = sizeof(tab_O); break;
case 80: respaldo = tab_P[con_columnas]; fin_columnas = sizeof(tab_P); break;
case 81: respaldo = tab_Q[con_columnas]; fin_columnas = sizeof(tab_Q); break;
case 82: respaldo = tab_R[con_columnas]; fin_columnas = sizeof(tab_R); break;
case 83: respaldo = tab_S[con_columnas]; fin_columnas = sizeof(tab_S); break;
case 84: respaldo = tab_T[con_columnas]; fin_columnas = sizeof(tab_T); break;
case 85: respaldo = tab_U[con_columnas]; fin_columnas = sizeof(tab_U); break;
case 86: respaldo = tab_V[con_columnas]; fin_columnas = sizeof(tab_V); break;
case 87: respaldo = tab_W[con_columnas]; fin_columnas = sizeof(tab_W); break;
case 88: respaldo = tab_X[con_columnas]; fin_columnas = sizeof(tab_X); break;
case 89: respaldo = tab_Y[con_columnas]; fin_columnas = sizeof(tab_Y); break;
case 90: respaldo = tab_Z[con_columnas]; fin_columnas = sizeof(tab_Z); break;

case 91: respaldo = tab_lla_a[con_columnas]; fin_columnas = sizeof(tab_lla_a); break;
case 92: respaldo = tab_sim1[con_columnas]; fin_columnas = sizeof(tab_sim1); break;
case 93: respaldo = tab_lla_b[con_columnas]; fin_columnas = sizeof(tab_lla_b); break;
case 94: respaldo = tab_sim2[con_columnas]; fin_columnas = sizeof(tab_sim2); break;
case 95: respaldo = tab_ul[con_columnas]; fin_columnas = sizeof(tab_ul); break;
case 96: respaldo = tab_dia[con_columnas]; fin_columnas = sizeof(tab_dia); break;

case 97: respaldo = tab_aa[con_columnas]; fin_columnas = sizeof(tab_aa); break;
case 98: respaldo = tab_bb[con_columnas]; fin_columnas = sizeof(tab_bb); break;
case 99: respaldo = tab_cc[con_columnas]; fin_columnas = sizeof(tab_cc); break;
case 100: respaldo = tab_dd[con_columnas]; fin_columnas = sizeof(tab_dd); break;
case 101: respaldo = tab_ee[con_columnas]; fin_columnas = sizeof(tab_ee); break;
case 102: respaldo = tab_ff[con_columnas]; fin_columnas = sizeof(tab_ff); break;
case 103: respaldo = tab_gg[con_columnas]; fin_columnas = sizeof(tab_gg); break;
case 104: respaldo = tab_hh[con_columnas]; fin_columnas = sizeof(tab_hh); break;
case 105: respaldo = tab_ii[con_columnas]; fin_columnas = sizeof(tab_ii); break;
case 106: respaldo = tab_jj[con_columnas]; fin_columnas = sizeof(tab_jj); break;
case 107: respaldo = tab_kk[con_columnas]; fin_columnas = sizeof(tab_kk); break;
case 108: respaldo = tab_ll[con_columnas]; fin_columnas = sizeof(tab_ll); break;
case 109: respaldo = tab_mm[con_columnas]; fin_columnas = sizeof(tab_mm); break;
case 110: respaldo = tab_nn[con_columnas]; fin_columnas = sizeof(tab_nn); break;
case 241: respaldo = tab_enie_2[con_columnas]; fin_columnas = sizeof(tab_enie_2); break;
case 111: respaldo = tab_oo[con_columnas]; fin_columnas = sizeof(tab_oo); break;
case 112: respaldo = tab_pp[con_columnas]; fin_columnas = sizeof(tab_pp); break;
case 113: respaldo = tab_qq[con_columnas]; fin_columnas = sizeof(tab_qq); break;
case 114: respaldo = tab_rr[con_columnas]; fin_columnas = sizeof(tab_rr); break;
case 115: respaldo = tab_ss[con_columnas]; fin_columnas = sizeof(tab_ss); break;
case 116: respaldo = tab_tt[con_columnas]; fin_columnas = sizeof(tab_tt); break;
case 117: respaldo = tab_uu[con_columnas]; fin_columnas = sizeof(tab_uu); break;
case 118: respaldo = tab_vv[con_columnas]; fin_columnas = sizeof(tab_vv); break;
case 119: respaldo = tab_ww[con_columnas]; fin_columnas = sizeof(tab_ww); break;
case 120: respaldo = tab_xx[con_columnas]; fin_columnas = sizeof(tab_xx); break;
case 121: respaldo = tab_yy[con_columnas]; fin_columnas = sizeof(tab_yy); break;
case 122: respaldo = tab_zz[con_columnas]; fin_columnas = sizeof(tab_zz); break;

case 123: respaldo = tab_cor1[con_columnas]; fin_columnas = sizeof(tab_cor1); break;
case 124: respaldo = tab_sim3[con_columnas]; fin_columnas = sizeof(tab_sim3); break;
case 125: respaldo = tab_cor2[con_columnas]; fin_columnas = sizeof(tab_cor2); break;
case 126: respaldo = tab_fle1[con_columnas]; fin_columnas = sizeof(tab_fle1); break;
case 127: respaldo = tab_fle2[con_columnas]; fin_columnas = sizeof(tab_fle2); break;
}

///////////////////
con_columnas++;

if(con_columnas == fin_columnas)
{
con_columnas = 0x00;
con_caracter++;
ban_espacio = 0x01;
}




for(i=0x27; i>0x00; i--)
{
columnas[i] = columnas[i-1];
}

columnas[0] = respaldo;
}
///////////////////////////////////////////////////////////////////////////////




aqui dejo el codigoo para q lo vean, y si quieren hacer criticas pueden hacerlas (mientras sean constructivas), y si hay alguna sugerencia mejora o ayuda para mis letras bienvenidos sean.

gracias
Título: Re: Mi nueva matriz de led
Publicado por: CarloS_32 en 12 de Febrero de 2011, 18:02:20
Hola..te ha quedado de lujo  :-/..me gustaria ver mejor la parte de atras de las placas para ver como soldaste..gracias por compartir el código me serivá para iniciarme en el tema..cuanta plata mas o menos haz gastado para tener una idea

PD: De casualidad tenemos el mismo tester y el mismo programador JDM..jeje casualidades
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Febrero de 2011, 23:05:23
estuve horas y horas soldando, ya que son las placas paso integrado (todas agujereadas) e hice todas sus pistas de apoco con estaño jeje ( un laburo de horasssss)

aqui cargo lo que me pediste..

si no entendes mucho de como va, decime y yo explico un poco haber si lo agarran.
(http://img121.imageshack.us/img121/5545/sdc10468n.jpg)

(http://img19.imageshack.us/img19/7074/sdc10467i.jpg)

(http://img585.imageshack.us/img585/8547/sdc10466.jpg)


cualquier cosa subo mas fotos, hay miles y miles jejeje ya que me emocione cuando termine de armarlo jaja  :-/ :-/ :-/ :-/ :-/ :-/
Título: Re: Mi nueva matriz de led
Publicado por: CarloS_32 en 13 de Febrero de 2011, 12:19:24
estuve horas y horas soldando, ya que son las placas paso integrado (todas agujereadas) e hice todas sus pistas de apoco con estaño jeje ( un laburo de horasssss)

aqui cargo lo que me pediste..

si no entendes mucho de como va, decime y yo explico un poco haber si lo agarran.

Hola si que laburito jeje..pero no me da verguenza decirte que no lo entiendo me podrias explicar un poco como hiciste las conexiones en la placa? quiero saber eso nada mas por ahora por que ahora estoy en otro tema..si tienes un esquema del circuito mejor..usaste leds comunes o de alto brillo..se nota que no se nada del tema jeje
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 13 de Febrero de 2011, 12:33:05
(http://img121.imageshack.us/img121/5545/sdc10468n.jpg)

si podes observar
(http://img823.imageshack.us/img823/3807/iuygft.jpg)

las columnas estan conectados los katodos de los led (-), luego se ve como una ¨L¨ hecha atras tambien, eso es para conectar los anodos de los led en filas, pero como no podia conectarlos directamente con estaño como hice con los katodos, tuve q hacer puentes con lo que me sobraban de las patillas de los led,

(http://img121.imageshack.us/img121/5545/sdc10468n.jpg/img]
[/quote]

entonces hacia el puente entre un anodo y otro de los led (conectados en filas)...
[img]http://img33.imageshack.us/img33/3536/asdasdqwe.jpg)
creo que no hice una buena explicación, si hay dudas consulta de vuelta jeje
Título: Re: Mi nueva matriz de led
Publicado por: darck_khronos en 13 de Febrero de 2011, 12:36:07
Jeje bien se dice que cada quien programa a como entiende, yo te recomendaria que todas tus letras las metieras un una matriz de nxn asi tambien podrias buscarlas mas rapido
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 13 de Febrero de 2011, 12:39:12
Jeje bien se dice que cada quien programa a como entiende, yo te recomendaria que todas tus letras las metieras un una matriz de nxn asi tambien podrias buscarlas mas rapido

disculpa darck_khronos, no entendí tu sugerencia, como es eso de matriz de nxn, recuerda que el código no lo hice yo, lo único que hice fue hacerle unas modificas pequeñas, para adaptarla a mi matriz, pero si puedes explicarte con eso que has dicho te agradecería
Título: Re: Mi nueva matriz de led
Publicado por: darck_khronos en 13 de Febrero de 2011, 14:17:06
Te dejo un ejemplo ahorita aqui aun me faltan algunas del ascii pero puedes darte una idea.

aqui facilito la mayoria de los simbolos

Código: C
  1. char const  letras [127][8]={ /*       */{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  2. /*carita */{0xE,0x11,0x1B,0x11,0x1B,0x15,0x11,0xE},
  3. /*bcarita*/{0x11,0xE,0x4,0xE,0x4,0xA,0xE,0x11},
  4. /*corazon*/{0x00,0x00,0xA,0x15,0x11,0x11,0xA,0x4},
  5. /*diamante*/{0x00,0x4,0xE,0x1F,0xE,0x4,0x00,0x00},
  6. /*trebol*/{0x00,0x4,0xE,0x1B,0x1B,0xE,0x4,0xE},
  7. /*espada*/{0x00,0x4,0xA,0x11,0x15,0xE,0x4,0xE},
  8. /*bola*/{0x00,0x00,0x4,0xE,0x4,0x00,0x00,0x00},
  9. /*bbola*/{0x1F,0x1F,0x1B,0x11,0x1B,0x1F,0x1F,0x1F},
  10. /*bolita*/{0x00,0x4,0xA,0x11,0xA,0x4,0x00,0x00},
  11. /*bbolita*/{0x1F,0x1B,0x15,0xE,0x15,0x1B,0x1F,0x1F},
  12. /*mujer*/{0x1C,0x18,0x14,0xE,0x11,0x11,0x11,0xE},
  13. /*hombre*/{0xE,0x11,0x11,0x11,0xE,0x4,0xE,0x4},
  14. /*nota*/{0x8,0x18,0x8,0x8,0x8,0xA,0x7,0x2},
  15. /*acorde*/{0x1C,0x1F,0x1F,0x17,0x12,0x1A,0x1B,0x3},
  16. /*sol*/{0x4,0x15,0x4,0x1B,0x4,0x15,0x4,0x00},
  17. /*Flecha D*/{0x1,0x3,0x7,0xF,0xF,0x7,0x3,0x1},
  18. /*Flecha I*/{0x10,0x18,0x1C,0x1E,0x1E,0x1C,0x8,0x10},
  19. /*Flecha-A-A*/{0x4,0xE,0x1F,0xE,0xE,0x1F,0xE,0x4},
  20. /*!!*/{0xA,0xA,0xA,0xA,0xA,0xA,0x00,0xA},
  21. /*P-rara*/{0x1E,0x15,0x15,0x16,0x14,0x14,0x14,0x14},
  22. /*doble-s*/{0x00,0xE,0x1,0xE,0x11,0xE,0x10,0xE},
  23. /*guion*/{0x00,0x00,0x00,0x1F,0x1F,0x00,0x00,0x00},
  24. /*Flecha-a-a_*/{0x4,0xE,0x1F,0x4,0x1F,0xE,0x4,0x1F},
  25. /*Flecha Arriba*/{0x4,0xE,0x1F,0xE,0xE,0xE,0xE,0xE},
  26. /*Flecha Abajo*/{0xE,0xE,0xE,0xE,0xE,0x1F,0xE,0x4},
  27. /*Derecha*/{0x00,0x00,0x4,0x8,0x1F,0x8,0x4,0x00},
  28. /*Izquierda*/{0x00,0x00,0x4,0x2,0x1F,0x2,0x4,0x00},
  29. /*Eskina*/{0x00,0x00,0x00,0x1,0x1,0x1F,0x00,0x00},
  30. /*Flechita*/{0x00,0x00,0x00,0xA,0x1F,0xA,0x00,0x00},
  31. /*Arriba*/{0x00,0x4,0xE,0x1F,0x1F,0x00,0x00,0x00},
  32. /*Abajo*/{0x00,0x00,0x1F,0x1F,0xE,0x4,0x00,0x00},
  33. /*   ¡   */{0x4,0x00,0x4,0x4,0x4,0xE,0xE,0x4},
  34. /*   !   */{0x4,0xE,0xE,0x4,0x4,0x4,0x00,0x4},
  35. /*   "   */{0x1B,0x1B,0x9,0x00,0x00,0x00,0x00,0x00},
  36. /*   #   */{0x00,0xA,0x2,0x1F,0xA,0x1F,0xA,0xA},
  37. /*   $   */{0x00,0x4,0xE,0x5,0xE,0x14,0xE,0x4},
  38. /*   %   */{0x00,0x3,0x13,0x8,0x4,0x2,0x19,0x18},
  39. /*   &   */{0x00,0x6,0x9,0x9,0x6,0x16,0x9,0x16},
  40. /*   '   */{0x8,0x8,0x8,0x00,0x00,0x00,0x00,0x00},
  41. /*   (   */{0xC,0x2,0x1,0x1,0x1,0x2,0xC,0x00},
  42. /*   )   */{0x6,0x8,0x10,0x10,0x10,0x8,0x6,0x00},
  43. /*   *   */{0x00,0x4,0x15,0xE,0x1F,0xE,0x15,0x4},
  44. /*   +   */{0x00,0x00,0x4,0x4,0x1F,0x4,0x4,0x00},
  45. /*   ,   */{0x00,0x00,0x00,0x00,0x00,0x6,0x4,0x2},
  46. /*   -   */{0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00},
  47. /*   .   */{0x00,0x00,0x00,0x00,0x00,0x00,0x3,0x3},
  48. /*   /   */{0x00,0x00,0x10,0x8,0x4,0x2,0x1,0x00},
  49. /*   0   */{0x00,0xE,0x11,0x19,0x15,0x13,0x11,0xE},
  50. /*   1   */{0x00,0x4,0x6,0x5,0x4,0x4,0x4,0x1F},
  51. /*   2   */{0x00,0xE,0x11,0x11,0x8,0x4,0x2,0x1F},
  52. /*   3   */{0x00,0x1F,0x10,0x8,0x4,0x8,0x11,0xE},
  53. /*   4   */{0x00,0x8,0xC,0xA,0x1F,0x8,0x8,0x8},
  54. /*   5   */{0x00,0x1F,0x1,0x1,0xF,0x10,0x11,0xE},
  55. /*   6   */{0x00,0xE,0x11,0x1,0xF,0x11,0x11,0xE},
  56. /*   7   */{0x00,0x1F,0x10,0x10,0x8,0x4,0x4,0x4},
  57. /*   8   */{0x00,0xE,0x11,0x11,0xE,0x11,0x11,0xE},
  58. /*   9   */{0x00,0xE,0x11,0x11,0x1E,0x10,0x11,0xE},
  59. /*   :   */{0xE,0xE,0xE,0x00,0xE,0xE,0xE,0x00},
  60. /*   ;   */{0xE,0xE,0xE,0x00,0xE,0xE,0xE,0x3},
  61. /*   <   */{0x00,0x8,0x4,0x2,0x1,0x2,0x4,0x8},
  62. /*   =   */{0x00,0x00,0x00,0x1F,0x00,0x1F,0x00,0x00},
  63. /*   >   */{0x00,0x1,0x2,0x4,0x8,0x4,0x2,0x1},
  64. /*   ?   */{0xE,0x11,0x11,0x10,0x8,0x4,0x00,0x4},
  65. /*   @   */{0x00,0xE,0x11,0x15,0x1B,0x5,0x11,0xE},
Título: Re: Mi nueva matriz de led
Publicado por: CarloS_32 en 13 de Febrero de 2011, 15:19:34
Mas o menos no veo muy nítido..pero ya me voy dando una idea tienes tantos cables como filas y columnas no? o sea q para encender un led debes sacar un 0 por su columna y un 1 por su fila o como lo haces?..Te habras gastado 500 pesos o estoy lejos?..gracias por tu molestia...ahh no me parece importante que no entiendas el código lo importante que te hayas lanzado a hacerlo lo demas vendrá..saludos y suerte cuando sepa más del tema te sigo preguntando
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 13 de Febrero de 2011, 15:35:04
Mas o menos no veo muy nítido..pero ya me voy dando una idea tienes tantos cables como filas y columnas no? o sea q para encender un led debes sacar un 0 por su columna y un 1 por su fila o como lo haces?..Te habras gastado 500 pesos o estoy lejos?..gracias por tu molestia...ahh no me parece importante que no entiendas el código lo importante que te hayas lanzado a hacerlo lo demas vendrá..saludos y suerte cuando sepa más del tema te sigo preguntando

exactamente carlos_32, primero pongo un 0 en una columna y luego coloco los unos necesarios para encender los led de esa columna,al hacerlo muy rapido el mismo procedimiento por todas las columnas se forman las palabras dibujos etc, para cada columna se saca un cable , y para las filas solo se necesitan 7 que son la cantidad de filas que hay en total de la matriz.
y en el tema economico debe andar mas o menos por ahi el gasto mio, aunq todavia falta mas porque quiero hacerle el gabinete y hacerlo bien presentable  :P, pero como fui armandolo de apoco el gasto economico no se hizo tan importante, ahora si tengo que armar otro ahi si  :lol:

no hay problema, si necesitas mas informacion tratare de informar.
Saludos
Título: Re: Mi nueva matriz de led ( Consulta)....
Publicado por: korpaztk en 20 de Febrero de 2011, 17:41:34
Ahora, que mi matriz esta funcionando bien, sin ningún tipo de errores como me sucedía al principio ( fue un error humano jajaja)...
mi consulta es abierta al que quiera, y es la siguiente, yo deseo ahora, mejorar un poco mas, y pensaba en estas posibilidades...

1)Hacer la conexión entre la PC y la matriz a través de RF (o algún otro tipo de conexión inalámbrica), y todo eso para hacer con puerto serie.

2)Hacerlo con conexión Usb (para eso me mudare de micro también, no creo que sea tanto problema) y si hay posibilidad de coneccion inalambrica...

3)En vez de conexión directa con la pc, eliminaría la pc para conectar un teclado, usando un ejemplo de programación de la pagina http://picmania.garcia-cuervo.net/ que muy amable dejo el ejemplo para conectar el teclado al pic y de ahi a la computadora, pero eliminaría la parte de enviar los datos a la computadora para ya directamente interactuar con el pic.

escucho sugerencias... y criticas constructivas...

la verdad es un proyecto que me gustaría terminarlo ya... pero por distintos factores ($$$, tiempo) jeje no lo puedo hacer


Saludos.
:-/(= Técnico Electronico =) :-/
Título: Mi nueva matriz de led (Mas Adelantos)
Publicado por: korpaztk en 06 de Marzo de 2011, 18:19:28
bueno como no vi respuestas... sobre que tipo de coneccion hacerles, opte por tomar la que ya estaba hecha en dicho programa a travez del puerto serie...

subo fotos de como esta quedando...
(http://img231.imageshack.us/img231/1629/sdc10031y.jpg)
(http://img853.imageshack.us/img853/6673/sdc10030.jpg)
(http://img856.imageshack.us/img856/4981/sdc10029.jpg)
(http://img101.imageshack.us/img101/2784/sdc10028ao.jpg)
(http://img225.imageshack.us/img225/3271/sdc10027e.jpg)
(http://img718.imageshack.us/img718/8838/sdc10026tq.jpg)
(http://img84.imageshack.us/img84/8144/sdc10025e.jpg)

la mayoria de mis colegas dicen que estoy un pokito loco :mrgreen: por que hice todas las pistas en estaño con esas placas experimentales...
pero la emocion mia es enorme porque mas o menos esta quedando bien, voy a ver si en esta semana voy a comprar el acrilico y ver como armarle un gabinete...
alguien da alguna sugerencia??

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: vdiazg en 07 de Marzo de 2011, 21:01:29
Hola korpaztk, excelente proyecto y excelentes fotos, una duda, y esos slaps con dedos que salen en las fotos? el proyecto tengo que armarlo asi para que funcione?  :oops:
Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 07 de Marzo de 2011, 22:02:59
Excelente trabajo amigo, eso es puro amor por la electrónica.

Saludos.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 07 de Marzo de 2011, 22:08:23
gracias a vos diego e. me has facilitado la parte de comunicacion sobre rs232 para la matriz, yo hacia 4 meses atras estaba luchando para que me pueda comunicar con el cartel y no entendia, porque, pero bueno, de apoco se le van haciendo modificaciones para hacerlo mas vistoso.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: falflores en 08 de Marzo de 2011, 04:08:30
Hola amigo Korpaztk, te felicito por todo el entusiasmo que le estas imprimiendo a tu proyecto, de verdad que te está quedando barbaro!, solo te recomendaría que diseñaras tus circuitos en PCB's con pistas, asi te ahorras muuuuuucho tiempo, te quedan más prolijos, ahorras $ en soldadura y eliminas posibles errores en el hardware; de allí en fuera todo está excelente!

Sabes como funciona el programa?, estuve viendo el código y vi que en la función que pide los caracteres al usuario dice (máx 5 letras), pero en el video observo que despliegas más, hasta cuantas letras se pueden mostrar?.

Te comento que yo estoy diseñando una matriz tambien, hace ya un tiempo que la ando haciendo, la había dejado en pausa, pero quiero retomarla, solo que necesito optimizar mi código, por que la última vez solo podía mostrar "bienvenido" en scroll y se me acababá la memoria, estaba usando un 16F628A.

También te quería decir que yo ya he usado el teclado conectado al PIC directamente, con ayuda de un código que me encontre (la verdad no recuerdo donde jejeje), pero funciona de perlas!, y es muy útil en estos casos, si lo quieres, te lo paso ya funcionando con el 16F877A.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Marzo de 2011, 11:02:13
capaz, que el del teclado es el que yo hice mension es 2 o 3 post mas atras, de como conectar el teclado ps/2 a un pic, lo intente hacer, pero me quedaban muchas dudas, entonces lo había dejado en conexión serie, (pero mas adelante si alguien me ayuda se puede hacer en VB y con puerto Usb.
Sabes como funciona el programa?, estuve viendo el código y vi que en la función que pide los caracteres al usuario dice (máx 5 letras), pero en el video observo que despliegas más, hasta cuantas letras se pueden mostrar?.
saber como funciona si, al 100%... donde dices tu sobre los caracteres es asi...

cuando uno en el terminal virtual presiona enter da 3 opciones (que de los cuales la 3 tengo que cambiar cosas porque no va mas acelerado que el numero 2)
la que decís vos es la opción 1 que es donde dice máximo 5 letras que es únicamente para dejar, un texto fijo en la matriz, osea si quieres mostrar la palabra B A R lo dejas fijos con esa opción, ahora estoy tratando de agregarle nuevos efectos, pero no tengo todavía mucha noción de como hacerlos, así que estoy investigando un poco, pero la lastima de esos 5 caracteres es que a veces pueden ser 4, porque si uno revisa la tabla de caracteres hay algunos que son mas anchos que otros :S

Hola amigo Korpaztk, te felicito por todo el entusiasmo que le estas imprimiendo a tu proyecto, de verdad que te está quedando barbaro!, solo te recomendaría que diseñaras tus circuitos en PCB's con pistas, asi te ahorras muuuuuucho tiempo, te quedan más prolijos, ahorras $ en soldadura y eliminas posibles errores en el hardware; de allí en fuera todo está excelente!

si, la verdad que era bastante obvio la parte del PCB, no se de donde eres tu, pero yo soy de santa fe, argentina y yo por experiencia personal soy muy malo haciendo los pcb (mi pulso es malisimo), he probado con impresora láser, pero 2 o 3 veces nomas (cuando iba a la escuela) porque acá en mi casa no tengo, y mandarlas a hacer las placas, tuviera que revisar el circuito y ver si le tengo que agregar cosas para seguridad y demás, mi intensión es esa, la de armar bien el esquema y mandarla a hacer, así me ahorro espacio (aunque la primera vez duele pagar los pcb) después ya salen mucho mas barato si haces la copia.

También te quería decir que yo ya he usado el teclado conectado al PIC directamente, con ayuda de un código que me encontre (la verdad no recuerdo donde jejeje), pero funciona de perlas!, y es muy útil en estos casos, si lo quieres, te lo paso ya funcionando con el 16F877A.

dale si puedes compartirlo bienvenido sea, pero creo ques del siguiente link el codigo
http://picmania.garcia-cuervo.net/proyectos_teclado_ps2.htm
de un grande dentro y fuera del foro (son solo alabanzas por sus proyectos, no lo conozco personalmente)



Saludos.-

Título: Re: Mi nueva matriz de led
Publicado por: falflores en 08 de Marzo de 2011, 15:28:16
capaz, que el del teclado es el que yo hice mension es 2 o 3 post mas atras, de como conectar el teclado ps/2 a un pic, lo intente hacer, pero me quedaban muchas dudas, entonces lo había dejado en conexión serie, (pero mas adelante si alguien me ayuda se puede hacer en VB y con puerto Usb.

si, la verdad que era bastante obvio la parte del PCB, no se de donde eres tu, pero yo soy de santa fe, argentina y yo por experiencia personal soy muy malo haciendo los pcb (mi pulso es malisimo), he probado con impresora láser, pero 2 o 3 veces nomas (cuando iba a la escuela) porque acá en mi casa no tengo, y mandarlas a hacer las placas, tuviera que revisar el circuito y ver si le tengo que agregar cosas para seguridad y demás, mi intensión es esa, la de armar bien el esquema y mandarla a hacer, así me ahorro espacio (aunque la primera vez duele pagar los pcb) después ya salen mucho mas barato si haces la copia.

dale si puedes compartirlo bienvenido sea, pero creo ques del siguiente link el codigo
http://picmania.garcia-cuervo.net/proyectos_teclado_ps2.htm
de un grande dentro y fuera del foro (son solo alabanzas por sus proyectos, no lo conozco personalmente)


Jajaja, efectivamente es el mismo  :D

Deja te comento que yo me hago todas mis PCBs, y obviamente al principio no quedan de lujo, pero conforme va haciendo uno más tarjetas le agarras el truco.

Yo utilizo la técnica de la impresión en toner, pero sobre la página de una revista, esas de espectalucos sirven muy bien, y con esa misma técnica le hago la impresión de los componentes. No es necesario que las mandes a hacer.

Y con respecto al código, de todas formas lo posteo, por que recuerdo haberle camibado un par de cosas por que no me funcionaba, y ya esta corriendo en un 16F877A con el pin de datos en B3 y el clock en B0

Saludos!

Código: [Seleccionar]
// Title:         KEYBOARD_PC_To_RS232.c
// Description:   Interfase entre un teclado convencional tipo AT y un puerto RS232C
// Date:          Abr-2005
// Ver.Rev.:      V01
// Author:        XP8100 (xp8100@gmail.com)
//
//                #Based on the AN AVR313: Interfacing the PC AT Keyboard from ATMEL#
//                #Adaptado para 16F628A por Redraven
//
//-----------------------------------------------------------------------------
//
// init_kb()      Inicializa rutina y contadores
// decode (char)  Decodifica la pulsación realizada, convirtiendola a un caracter de la tabla
// int_ext_isr    Rutina de gestión de interrupciones. Captura los diferentes bit"s
//-----------------------------------------------------------------------------
// RB0 - Señal de reloj
// RB3 - Tren de impulsos (11 bit) Start+10101010+Paridad+Stop
//-----------------------------------------------------------------------------
// Commment   : Permite conectar un teclado convencional de PC a un entorno
//              gestionado por un PIC 16F877.
//              El actual sistema se define como un primer prototipo, en el que no se realizan
//              acciones concretas asociadas a teclas establecidas.
//              Tampoco se actua sobre los indicadores luminosos del teclado, repetición de teclas, ...
//
// THIS DOCUMENT IS PROVIDED TO THE USER "AS IS"
//-----------------------------------------------------------------------------
#include <16F877A.h>
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock=20MHz)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,bits=8,parity=N) // Definición del RS232
#zero_ram
//#include <LCD.h>
#include <LCD420.h>
//-----------------------------------------------------------------------------
// Definiciones globales
//-----------------------------------------------------------------------------
unsigned char bitcount;
char got_interrupt;
char interrupt_count;
char status_b3;
#bit INTF_BIT = 0x0B.1 // INTCON BIT 1 = INTF RB0/INT External Interrupt Flag Bit
//-------- Tabla de caracteres correspondientes a la pulsación de la tecla
//-------- en modalidad normal (sin pulsar SHIFT)
unsigned char const unshifted[68][2] =
{
0x0d,9,
0x0e,'º', 0x15,'q', 0x16,'1', 0x1a,'z', 0x1b,'s', 0x1c,'a', 0x1d,'w',
0x1e,'2', 0x21,'c', 0x22,'x', 0x23,'d', 0x24,'e', 0x25,'4', 0x26,'3',
0x29,' ', 0x2a,'v', 0x2b,'f', 0x2c,'t', 0x2d,'r', 0x2e,'5', 0x31,'n',
0x32,'b', 0x33,'h', 0x34,'g', 0x35,'y', 0x36,'6', 0x39,',', 0x3a,'m',
0x3b,'j', 0x3c,'u', 0x3d,'7', 0x3e,'8', 0x41,',', 0x42,'k', 0x43,'i',
0x44,'o', 0x45,'0', 0x46,'9', 0x49,'.', 0x4a,'-', 0x4b,'l', 0x4c,'ñ',
0x4d,'p', 0x4e,'"', 0x52,'´', 0x54,'`', 0x55,'¡', 0x5a,13,  0x5b,'+',
0x5d,'ç', 0x61,'<', 0x66,8,   0x69,'1', 0x6b,'4', 0x6c,'7', 0x70,'0',
0x71,'.', 0x72,'2', 0x73,'5', 0x74,'6', 0x75,'8', 0x79,'+', 0x7a,'3',
0x7b,'-', 0x7c,'*', 0x7d,'9',
0,0
};
//-------- Tabla de caracteres correspondientes a la pulsación de la tecla
//-------- en modalidad desplazamiento (pulsando SHIFT)
unsigned char const shifted[68][2] = {
0x0d,9,
0x0e,'ª', 0x15,'Q', 0x16,'!', 0x1a,'Z', 0x1b,'S', 0x1c,'A', 0x1d,'W',
0x1e,'"', 0x21,'C', 0x22,'X', 0x23,'D', 0x24,'E', 0x25,'$', 0x26,'·',
0x29,' ', 0x2a,'V', 0x2b,'F', 0x2c,'T', 0x2d,'R', 0x2e,'%', 0x31,'N',
0x32,'B', 0x33,'H', 0x34,'G', 0x35,'Y', 0x36,'&', 0x39,'L', 0x3a,'M',
0x3b,'J', 0x3c,'U', 0x3d,'/', 0x3e,'(', 0x41,';', 0x42,'K', 0x43,'I',
0x44,'O', 0x45,'=', 0x46,')', 0x49,':', 0x4a,'_', 0x4b,'L', 0x4c,'Ñ',
0x4d,'P', 0x4e,'?', 0x52,'¨', 0x54,'^', 0x55,'¿', 0x5a,13,  0x5b,'*',
0x5d,'Ç', 0x61,'>', 0x66,8,   0x69,'1', 0x6b,'4', 0x6c,'7', 0x70,'0',
0x71,'.', 0x72,'2', 0x73,'5', 0x74,'6', 0x75,'8', 0x79,'+', 0x7a,'3',
0x7b,'-', 0x7c,'*', 0x7d,'9',
0,0
};
//-----------------------------------------------------------------------------
// Definición de protipos
//-----------------------------------------------------------------------------
void init_kb(void);
void decode(unsigned char sc);

//-----------------------------------------------------------------------------
// Rutina de gestión de interrupciones
//-----------------------------------------------------------------------------
#int_ext
void int_ext_isr(void)
{
unsigned char data;
//-------- Los bit 3 a 10 se considerran datos. Paridad, start y stop
//-------- son ignorados
if(bitcount<11&&bitcount>2)
{
data=(data>>1);
status_b3=input(PIN_B3);
if((status_b3)==1) data=data|0x80;
}
//-------- Todos los bits se han recibido
if(--bitcount==0)
{
decode(data);
data=0;
bitcount=11;
got_interrupt=TRUE;
}
got_interrupt=TRUE;
interrupt_count++;
disable_interrupts(INT_EXT);
}

//-----------------------------------------------------------------------------
// Main
//-----------------------------------------------------------------------------
void main(void)
{
delay_ms(100);
//-------- se inicializa el LCD
lcd_init();
init_kb();
//-------- Los pins indicados (B0 y B3) son configurados como entradas.
output_float(PIN_B0);
output_float(PIN_B3);
//-------- Activa pullups sobre todos los pins del puerto B.
port_b_pullups(TRUE);
//-------- Espera a que se activen.
delay_us(5);
//-------- Inicializa las variables usadas por la rutina de interrupción
//-------- antes de activar las interrupciones
interrupt_count = 0;
got_interrupt=FALSE;
status_b3=0;
//-------- Desde que se activó el modo PULLUPS del puerto B, el estado
//-------- normal del pin B0 es ALTO. La gestión de la interrupción externa
//-------- se gestiona cuando se produce un cambio de nivel ALTO a BAJO.
ext_int_edge(H_TO_L);
//-------- Asegurarse de que el el bit de flag de la interrupción externa
//-------- es borrado antes de activar la gestión de dicha interrupción
//-------- externa.
INTF_BIT=0;
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
//-------- Bucle principal.
//-------- Chequear si se produce alguna interrupción (got_interrupt). Si es así, contar, borrar
//-------- el flag y esperar 50 ms, reactivando la gestión de las interrupciones
while(TRUE)
{
//-------- Chequear si se produce alguna interrupción (got_interrupt).
if(got_interrupt == TRUE)
{
//-------- Borrar el flag global que se inicio en la rutina de servicio
//-------- de interrupciones externas.
got_interrupt = FALSE;
//-------- Esperar 50 ms para evitar rebotes en los contactos de las teclas.
//delay_ms(50);
//-------- Borrar cualquier interrupción producida durante el periodo de espera.
INTF_BIT = 0;
//-------- Reactivar interrupciones
enable_interrupts(INT_EXT);
}
}
}

//-----------------------------------------------------------------------------
// Funciones
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Inicialización de teclado.
//-----------------------------------------------------------------------------
void init_kb(void)
{
//-------- Longitud de la trama para cada pulsación y mensaje de bienvenida
bitcount = 11;
printf("PC AT Keyboard Interface Ver 1.0 by XP8100");
printf("Adpapted for 16F628A by Redpic");
printf("Decoder and Monitoring for 16F628A connected ..." );
lcd_putc("\fInterfaz teclado PS2\n");
lcd_putc("   con mayusculas\n");
lcd_putc("y minusculas usando\n");
lcd_putc("  la funcion SHIFT");
delay_ms(2000);
lcd_putc("\f");
}
//-----------------------------------------------------------------------------
// Decodificación de pulsaciones
//-----------------------------------------------------------------------------
void decode(unsigned char sc)
{
static unsigned char is_up=0, shift=0;
unsigned char i;
//printf("[%c]",sc); // Monitor de código de rastreo
//printf(lcd_putc,"%c",sc);
//-------- El último dato recibido fue el identificador de Up-Key
if(!is_up)
{
switch (sc)
{
//-------- Identificador de Up-Key
case 0xF0 : is_up=1; break;
//-------- SHIFT Izquierdo
case 0x12 : shift=1; break;
//-------- SHIFT Derecho
case 0x59 : shift=1; break;
//-------- ENTER
case 0x5A : shift=0; printf(" "); lcd_putc(" "); break;
//-------- Si no es ninguno de los identificadores especiales, procesar
//-------- pulsación, localizando caracter en tabla de caracteres.
default:
//-------- Pulsación normal
if(!shift)
{
for(i=0;unshifted[i][0]!=sc&&unshifted[i][0];i++);
if(unshifted[i][0]==sc)
{
printf("%c",unshifted[i][1]);
printf(lcd_putc,"%c",unshifted[i][1]);
}
}
else
//-------- Pulsación + SHIFT presionado
                        {
for(i=0;shifted[i][0]!=sc&&shifted[i][0];i++);
if(shifted[i][0]==sc)
{
printf("%c",shifted[i][1]);
printf(lcd_putc,"%c",shifted[i][1]);
}
                        }
break;
} // --- End Switch
}
else
{
//-------- No se permiten 2 0xF0 en una fila
is_up=0;
switch (sc)
{
//-------- SHIFT Izquierdo
case 0x12 :
shift=0;
break;
//-------- SHIFT Derecho
case 0x59 :
shift=0;
break;
} // --- End Switch
}
}
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Marzo de 2011, 16:11:21
la idea mia antes de pedir sugerencias, fue en hacerle como una pequeña llave en el cartel, para seleccionar si lo iba a programar desde pc o desde teclado, tengo un programa mas o menos hecho, pero no se como hacer para agregar el tema de la llave por un lado, y no entiendo bien el código todavía del teclado ese, no se bien en que variable se guarda definitivamente el carácter que se presionó, capaz que la respuesta es muy obvia, la verdad siempre lo he visto de afuera al código nunca me senté a verlo detallado, osea en sintensis agarre y pegue los dos programas juntos jejeje, por suerte tiene suficiente memoria para guardar los dos jaja.

aunque sigo sosteniendo que mas adelante quisiera aprender algo de VisualBasic para dejarlo un poco(pero un poco nomas)mas elegante o profesional.

pero bue esas tipos de ideas las publicare mas adelante con detalles jejej.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: todopic en 09 de Marzo de 2011, 20:07:20
Hola Korpaztk (uhh que dificil de escribir je je)  te felicito por el empeño puesto en tu trabajo!
El acrilico (supongo para el frente) puedes usar rojo translucido, y el pegamento empleado es cloroformo (que ahora en casi todos los lugares esta prohibido)  :5]

Saludos!

Norberto
Título: Re: Mi nueva matriz de led
Publicado por: bmb en 09 de Marzo de 2011, 20:49:32
Hola Korpaztk (uhh que dificil de escribir je je)  te felicito por el empeño puesto en tu trabajo!
El acrilico (supongo para el frente) puedes usar rojo translucido, y el pegamento empleado es cloroformo (que ahora en casi todos los lugares esta prohibido)  :5]

Saludos!

Norberto

Hola, si no te venden el cloroformo (aquí si que está prohibida la venta de muchos productos químicos) puedes usar cloruro de metileno (aquí te lo venden con restricciones de cantidad).

Felicitaciones por tu trabajo korpaztk!

Saludos!
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 10 de Marzo de 2011, 09:58:47
Sii, la verdad no se ahora si lo voy a hacer rojo, estuve viendo este video http://www.youtube.com/watch?v=9uZZjuBiZLA&feature=related (http://www.youtube.com/watch?v=9uZZjuBiZLA&feature=related)
y me enamore de las cosas que hacia (de la matriz para mal entendidos jajaja)

Por otro lado...
                    Cloroformo o cloruro de metileno para pegar un acrilico?? yo lo iba a hacer con la gotita o pulpito  :D
se que esto no debo preguntarlo en el hilo, pero alguien sabe algun link sobre videotutoriales en VisualBasic o algun lenguaje para hacer algun pequeño programa para el cartel?, porque no me gusta mucho que halla que programar la matriz a travez del hiperterminal :-/

Este es mi segundo proyecto digamos grande, el primero fue hacer 2 tipos de artefactos a energia solar para un concurso =)




Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 10 de Marzo de 2011, 13:29:47
Hola amigo, prueba con esta interfase de visual Interfase (http://www.todopic.com.ar/foros/index.php?topic=28409.msg285119#msg285119)

Saludos.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 10 de Marzo de 2011, 14:07:52
me podrias decir como has hecho el codigo para el programa?? va no se si es con codigo, nunca vi como se hacen esas pequeñas aplicaciones (tampoco me he puesto mucho) una vez me dijeron que podia hacerlo en borland c, pero fue hace mucho jeje...

probe recien tu programa, pero no me funciona con el cartel, osea apreto uno de los botones y se apaga el cartel y despues cuando escribo y presiono de vuelta no pasa nada  :(
Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 10 de Marzo de 2011, 14:35:35
Hola, esa aplicación está hecha en Viscual basic, es un lenguaje un tanto fácil de aprender más cuando se tienen nociones de programación, si tu cartel te funcionaba con hyperterminal debe funcionar con este,

No se si hayas variado mucho el código, pero el pic debe estar configurado para comunicarse a 19200 bps
Código: [Seleccionar]
#use rs232(baud=19200, xmit=pin_c6,rcv=pin_c7)El PIC inicia la recepción de datos con caracter 13, mensaje, caracter 27, esta debe ser la trama

Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 10 de Marzo de 2011, 14:50:44
osea, me pasa lo siguiente...
enciendo mi cartel y ahi empiezan a mostrarse los codigos, abro tu programa, hago click en el boton inferioir izquierdo (el que muestra un botton con una pc y un puerto serie) y mi cartel se apaga, y de ahi nose, escribo en el cuadro de texto y apreto todo (como un niño que tiene juguete nuevo y prueba) jeje pero no ocurre nada...

yo tengo configurado asi el puerto serie.

Código: [Seleccionar]
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
habrá alguna diferencia??
Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 10 de Marzo de 2011, 15:18:55
Mira amigo:
1- Conectas tu cartel al PC
2- Abres el aplicativo, no debe aparecer errores (por defecto inicia en COM1)
3- Escribes el mensaje
4- Presionas el botón (icono computador), de esta forma envías el mensaje al PIC

Debes tener en cuenta:
1- El aplicativo conforma la trama de la siguiente manera; Caracter 13 + mensaje + Caracter 27
2- Se comunica a una velocidad de 19200 bps
3- Tu programa en el PIC debe estar diseñado para recibir esta trama, osea, que el caracter de inicio 13 y el de final 27 no te afecte

Saludos.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 10 de Marzo de 2011, 16:25:54
tenes razon  :-/, anda barbaro hace un rato cai (como 10 minutos jeje), esta bien tu programa envia el 13 luego el mensaje y el 27 pero que pasa, yo habia programado al micro para que reciba el 13 y luego tenia que presionarse 1, 2 o 3 que eran las opciones para desplazamiento o texto fijo, luego el mensaje y luego el 27, por eso siempre se me apagaba el display, ahora voy a tratar de leer un poco de visual basic, porque tengo uno y veo que la parte grafica es sencilla, pero no se como programarla, tienes algun link interesante para ver algun tutorial sobre eso?? desde ya te agradezco mucho tu colaboracion ( y paciencia por sobre todo jeje)  :D
Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 10 de Marzo de 2011, 17:27:08
Revisa este Tutorial (http://www.megaupload.com/?d=M1AGQIE9), a mi me sirvió muchísimo, hay uno de Visual6 (muy sencillo) y otro Visual 2005.

Saludos.
Título: Re: Mi nueva matriz de led
Publicado por: jukinch en 10 de Marzo de 2011, 20:27:35
Hola korpaztk:
           Te recomiendo los tutoriales de MSDN. A mi me han servido mucho.

http://msdn.microsoft.com/library/90h82b3x.aspx

http://msdn.microsoft.com/es-es/library/a08t4ke7%28v=VS.90%29.aspx

                 Saludos.
                         Jukinch
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 11 de Marzo de 2011, 16:14:37
gracias por los link y por los apuntes, tanto jukinch como Diego E., yo el unico lenguaje de programacion con el cual me defiendo es C (assembler en algunas cositas nomas, he visto poco y nada digamos jeje), pero bueno ya me estuve leyendo bastante y no es complicado, el problema es que no lo capto bien todavia jaja...

de todas formas como dije recién gracias por sus aportes.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 11 de Marzo de 2011, 17:00:26
la verdad que hasta ahora lo unico que hice bien, fue hacer los cuadritos para el cartel jejej

(http://img546.imageshack.us/img546/9847/97088802.png)

y esta foto no tiene nada que ver, pero la queria compartir cuando hicimos con mi escuela una pequeña cocina solar (el nombre es pequeña pero no lo es jajaja)
(http://img819.imageshack.us/img819/9602/concursolp.jpg)


volviendo al tema, si alguien puede ser un poco mas sincero en la programacion lo agradeceria mucho, por ahora sigo leyendo e investigando, algo mas o menos entendi de como enviar lo que yo escribo en la caja, pero no se como enviar los caracteres 13 y 27 :S

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 11 de Marzo de 2011, 18:16:37
Amigo veo que eres inquieto por aprender, acá te pongo el código de visual para que sigas avanzando

Saludos.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Marzo de 2011, 12:57:34
gracias, por tu apoyo Diego E.  voy a tratar de tranquilizarme y leer mas despacito, porque por la emocion que tengo con el cartel me llevo a desesperarme jeje...
pero bueno, yo habia avanzado bastante con un codigo, y habia logrado conectar un pic y enviarle unos datos con visual, aunque me costo bastante renegue una o dos horitas, luego empece a buscar algunos tutoriales en internet y explicaban medio asi nomas los codigos que hacian, me faltaba como enviarla los caracteres antes de los datos, que lo mas seguro lo habre salteado por alto y no me habre dado cuenta, cuando ya tenga mas o menos el codigo lo posteo asi lo ven ustedes.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 16 de Marzo de 2011, 15:18:47
hago el aporte, gracias a Diego E. para el programa en VB.
aqui una imagen
(http://img121.imageshack.us/img121/1441/carnc.png)

ahora se me ocurre una sugerencia pero voy a tratar de digerirla sobre el programa de la matriz

yo hago el barrido de la matriz por columnas...
osea:

        tengo 36 columnas
esta es la sub-rutina donde hago el muestreo.
Código: [Seleccionar]
void display(void) //rutina general que refresca las columnas de la matriz
{

int i;
mof=0x00;
output_low(PIN_D0); //Desactivo Registro
delay_us(2);
output_high(PIN_D0); //Activo Registro
delay_us(2);
output_high(PIN_D1); //Dato en uno
delay_us(2);


for(i=0;i<36;i++)
{
portb = 0;
delay_us(2);
output_high(PIN_C3); //Activo el clock
delay_us(2);
output_low(PIN_C3); //Desactivo el clock
delay_us(2);
portb = columnas[i]; //Cargo en el puerto b el valor que alla en la cadena COLUMNAS
delay_us(500);
output_low(PIN_D1); //Dato en cero
delay_us(2);

}


}

demoro en hacer esto... aproximadamente: 19ms de los cuales se soluciona el parpadeo si disminuyo los 500 ms del penúltimo delay, ahora mi intención seria hacer el barrida pero por filas, ya que leí en algunos otros post, que aumenta el brillo del led y lo hago en menos tiempo... ahora esa es la cuestión...
ahora estoy solo, asi que puedo analizar tranquilo la situación, ya en un rato subo mas detalles :)

Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 18 de Marzo de 2011, 15:55:49
bueno, anteayer al final no pude terminar con lo que queria...
porque se me presento un pequeño problema con la parte fisica de la matriz

yo para los led tengo el siguiente circuito...

(http://img156.imageshack.us/img156/421/satl.png)

y no se si sera porque no alcanzo a saturar el transistor o que embrollo, que calientan tanto los transistores como las resistencias que tengo en serie con el led (aclaro que las resistencias son de metal film de 2W)...

alguien podría darme alguna sugerencia??

saludos y gracias de antemano.-
Título: Re: Mi nueva matriz de led
Publicado por: cristian_elect en 19 de Marzo de 2011, 01:17:09
Deben ser led potentes para poner  150 ohm en serie a 12V. Los leds utra-brillantes normales de 5mm se le pone 820 ohm aproximadamente para 12V.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 19 de Marzo de 2011, 09:31:29
Deben ser led potentes para poner  150 ohm en serie a 12V. Los leds utra-brillantes normales de 5mm se le pone 820 ohm aproximadamente para 12V.
con 820 veo muy poca corriente :S
(12v-2,2v)/(820) = 12mA

(9,8 x 0,012) = 0,117 [w]

si le subo el valor de R baja la luminosidad bastante, osea por mis cálculos y por lo que entiendo la corriente seria
2,2v (aproximadamente la tensión del led)
(12v-2,2v)/(150ohm) = 65mA. es un poquito mucho para darle de pico y se los dos cada 18 ms cada pico de tensión, pero si seguimos la formula, por la resistencia deben caer 9,8V y deben pasar 65mA.

Entonces:
             9,8 x 0,065 = 0,640 [W]
por ende si mis resistencias son de 2 w, no deberia ni entibiarse y los tip si tomarian temperatura tuviera que ser muy poca, ya que soportan 3 A continuo y 5 de pico :S
si algun calculo le pifio háganme saber...

puede ser que tengas razon, no te lo voy a negar.

sigo escuchando sugerencias, de todas formas gracias cristian_elect por tu apoyo

Saludos.-


Título: Re: Mi nueva matriz de led
Publicado por: pocher en 19 de Marzo de 2011, 15:51:39
A simple vista parece que lo tengas bien, si donde pone PIN ULN hay realmente 0V.

¿Qué ULN es y como lo tienes conectado físicamente? ¿El transistor TIP está bien conectado físicamente?

¿Has medido físicamente con un tester las tensiones en los puntos de salida?
Título: Re: Mi nueva matriz de led
Publicado por: stk500 en 19 de Marzo de 2011, 16:47:17
Hola Korpa!
aqui te pongo un link donde se calcular el valor de la resistencia de acuerdo al LED que use, cuidado con los LED, siempre debe saber cual es su voltage y consumos claro.
http://personal.telefonica.terra.es/web/mamelytote/CalculaRes/calcula.html
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 19 de Marzo de 2011, 17:11:32
A simple vista parece que lo tengas bien, si donde pone PIN ULN hay realmente 0V.

¿Qué ULN es y como lo tienes conectado físicamente? ¿El transistor TIP está bien conectado físicamente?

los transistores estan bien conectados (como he puesto en el dibujo anterior) he repasado las soldaduras por si las moscas y aparenta estar todo bien. voy a comprobar el tema de los uln haber si me tiran a masa correctamente.

utilizo dos uln 4 son uln2003, y otro uln2803, utilizo asi, ya que los 2003 tienen 7 salidas y el 2803 tiene 8 entonces me da justo las 36 salidas para los led.
y todos los uln estan conectados asi:

de la salida de los registros de desplazamiento estan conectados directamente a las entradas de los uln, y las salidas de los uln estan directos con los catados del led, todos tienen su pata puesta a gnd y a vcc en los uln.


Hola Korpa!
aqui te pongo un link donde se calcular el valor de la resistencia de acuerdo al LED que use, cuidado con los LED, siempre debe saber cual es su voltage y consumos claro.
http://personal.telefonica.terra.es/web/mamelytote/CalculaRes/calcula.html

con respecto al link, pude entrar, pero la pagina no me realiza el calculo cuando hago click... e intentado actualizar y escribir también datos erróneos haber si tiraba algún error pero nada... :(




modificado:
               yo uso dos reguladores integrados uno es el LM7805 y el otro es LM7812
recién conecte mi osciloscopio, y vi que a la entrada del 7812 esta bastante continua la señal pero a la salida se logra ver un ruido raro (pensaba que era del instrumento) pero no, tendrá algo que ver ese ruido a la salida del 7812, aclaro lo único que hace ese integrado(lm7812) es proporcionar los 12V al tip para alimentar los led.

Muchas gracias por su tiempo y atencion.-

Sigo escuchando sugerencias... y criticas constructivas tambien =)


Saludos.-


Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 19 de Marzo de 2011, 17:21:08
ahora comprobé lo que me dijiste pocher
A simple vista parece que lo tengas bien, si donde pone PIN ULN hay realmente 0V.

si coloco mi osciloscopio, la punta negra en el negativo y la otra punta en la salida de los uln, veo que oscila una señal (es lógico el porque) pero sus valores nunca llegan a 0, siempre se mantienen entre 1 y 3 V, eso me estará indicando alguna falla?

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: MLO__ en 20 de Marzo de 2011, 01:02:53
Hola.

No se mucho de electrónica, pero creo que esa resistencia de 10k que viene de los 12v no va a la base del TIP, si no al colector del BC548 ....
Título: Re: Mi nueva matriz de led
Publicado por: cristian_elect en 20 de Marzo de 2011, 01:21:11
Con 60mA se calienta los led si con R=220 y 5V de alimentación el led se pone a calentar. Con 330ohm es lo máximo que le pongo para que no caliente y su brillo es intenso lo digo por que probé varios LEDs  blancos de 15000mcd según su hoja de datos su corriente máxima es 20mA pero probando no llega a eso al menos que le suba el voltaje hasta que se caliente y eso es una perdida de energía y su brillo no aumenta significativamente. Una corriente promedio seria 15mA para una eficiencia buena.
Los leds se alteran si se le da mucha corriente consumen mas y brillan menos.
Título: Re: Mi nueva matriz de led
Publicado por: pocher en 20 de Marzo de 2011, 04:45:30
El circuito que has puesto trabaja entre corte y saturación, cuando PIN ULN=0 y PINOUT_PIC varia entre 0 y 1 (¡está bien!).

No he visto el dibujo global de todo el circuito.

Una pregunta. ¿Usas el conjunto de los dos transistores con las resistencias para cada diodo LED?

Con el PIC controlando los registros de desplazamiento y luego estos atacando directamente a los ULN cuyas salidas estarian conectadas a los LEDs ¿no seria suficiente? ¿Cual es la misión del conjunto transistores-resistencias? ... no lo veo.

PD. El link de stk500 funciona bien y realiza bien el cálculo (conforme a tus valores)
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 20 de Marzo de 2011, 12:04:50
PD. El link de stk500 funciona bien y realiza bien el cálculo (conforme a tus valores)
ahi lo comprobe esta mañana y ahora me funciona el link.

Una pregunta. ¿Usas el conjunto de los dos transistores con las resistencias para cada diodo LED?

Con el PIC controlando los registros de desplazamiento y luego estos atacando directamente a los ULN cuyas salidas estarian conectadas a los LEDs ¿no seria suficiente? ¿Cual es la misión del conjunto transistores-resistencias? ... no lo veo.
ese conjunto es para manejar los led de las filas, osea tengo hecho 7 pares de transistores con sus resistencias, pero de todas formas es como que cada conjunto esta suministrando corriente para un solo led, y como con los 5 v no obtenia suficiente brillo aun cambiandole la resistencia opte por acoplarle otro tip y usar el bc548 como driver para manejarlo entonces de ahi le suministraba los 12v digamos que con su debida resistencia.
dicen que debo sacar el tip32 y dejar el bc548?

Saludos y gracias por las sugerencias y apoyo.
 :-/  :-/
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 20 de Marzo de 2011, 13:28:37
hice una nueva prueba, ahora ya que pude ingresar al sitio web que me recomendó stk500, puse me hizo los calculos, me dio para colocar una r= 560, como no tengo a mano de esas y no puedo comprar (porque es domingo) opte por una de r=470, y vi que el brillo de los led es mucho (pero muchisimo) menor que el que tenia con 150 ohms cuando le coloque el acrilico (que si puedo ya voy a comprarlo en esta semana) no quiero saber como quedara con ese bajo brillo :S
disculpen mi ignorancia pero eso de los 15000mcd que habla cristian_elect, es de la cantidad de brillo del led, porque yo busque a donde lo habia comprado y en la (digamos caja que me enviaron) decia lo siguiente:

Rojo: Ángulo 20°, Longitud de onda: 625-625nm, IV(mcd) 3000¬4000, 3,0-3,2V

modificacion: ah y tambien entontre en el packete del led que decia, Quantily 1000 pcs pero no se que significa eso :S

modificado:
                lo de quality es mi ignorancia al ingles y no sabia lo que significaba, ahora entendi que los mcd son creo que microcandela, y claro a 15000mcd brillarian barbaro pero mis led son de 4000 mcd, por eso su bajo brillo, la verdad que aca en argentina no conozco un buen lugar donde vendan por cantidad y de muchos mcd.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 22 de Marzo de 2011, 14:39:07
bueno sigo avanzando en el tema, aquí les dejo un nuevo avance de como va quedando el cartel, tuve tiempo y me compre un acrílico rojo que no esta fijo en el cartel pero se ve en el video cuando lo pongo a mano, jejeje

.

para mi desagrado encuentro el siguiente inconveniente, cuando muestra una letra, por ejemplo la B o el $ se ve que en donde debe mostrar la letra enciende los led, pero a los costados se ve como que apenas se encienden tambien algunos.
al principio supuse que era porque como eran transparentes los led se reflejaba por la iluminacion del que esta al lado, pero luego de poner entre medio un objeto oscuro y grande para tapar digamos los espacio entre columna y columna, descubri que lo sigue haciendo igual, he visto en otros posteos en este foro, no me acuerdo bien cual que le agregaba una resistencia de la siguiente forma:

(http://img194.imageshack.us/img194/2880/nuevoul.png)

para cuando el tip este en corte la energía que quede almacenada en los led se valla directo a masa, de lo cual me he dispuesto a hacerlo, y he probado con distinto valores de resistencias y no he tenido ningún resultado positivo (pero ni siquiera uno), capaz que le estoy errando en algo, no lo se...

como dije siempre, escucho criticas y sugerencias.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: cristian_elect en 23 de Marzo de 2011, 00:10:45
Cuando le alimentaste con una R=150ohm  ya esos leds ya están alterados ya su brillo bajo aun cuando le pones su resistencia correcta por que internamente disminuyo su impedancia.
Yo tengo varios alterados por querer aumentar mas su brillo, su resistencia interna normal de los leds son de varios mega ohm
y los alterados tienen 1.5K o menos o un poco mas, ya esa resistencia consume corriente y actuá como divisor de tensión.

Título: Re: Mi nueva matriz de led
Publicado por: Diego E. en 23 de Marzo de 2011, 10:43:35
Hola amigo, la intensidad de los led en esta aplicación creo que depende más del los tiempos de barrido que de la corriente misma de los led, hay que actualizar 37 columnas, permanecen mucho tiempo apagadas, yo te recomiendo dividir la matriz en dos de 18, las columnas van en paralelo y las filas se dividen en dos puertos del PIC, así, el primer puerto entrega los datos de las primeras 18 columnas y el puerto 2 entrega el dato de las siguientes, esto lo hice alguna vez y me solucionó el problema.

Saludos.

(http://img217.imageshack.us/img217/2107/matrizled2puertos.jpg)


Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 23 de Marzo de 2011, 11:28:59
Cuando le alimentaste con una R=150ohm  ya esos leds ya están alterados ya su brillo bajo aun cuando le pones su resistencia correcta por que internamente disminuyo su impedancia.
Yo tengo varios alterados por querer aumentar mas su brillo, su resistencia interna normal de los leds son de varios mega ohm
y los alterados tienen 1.5K o menos o un poco mas, ya esa resistencia consume corriente y actuá como divisor de tensión.

por suerte me a quedado todavia la bolsa de caramelos sin comer (la de led ) :D y anteriormente antes de postear el tema de los brillos he probado con resistencias de valor a los cuales me han ofrecidos pero increiblemente el brillo se mantiene en lo mismo, mi idea es ahora conseguir, va mejor dicho para el proximo cartel porque voy a ser sincero no tengo ganas de volver a desoldar 250 led y volver a soldar nuevos jeje, entonces para el proximo cartel comprare primero led de mas mcd, y capaz que los ponga verde ya que encuentro con mas brillo en ese color.

gracias por tu aporte cristian_elect  :)


Hola amigo, la intensidad de los led en esta aplicación creo que depende más del los tiempos de barrido que de la corriente misma de los led, hay que actualizar 37 columnas, permanecen mucho tiempo apagadas, yo te recomiendo dividir la matriz en dos de 18, las columnas van en paralelo y las filas se dividen en dos puertos del PIC, así, el primer puerto entrega los datos de las primeras 18 columnas y el puerto 2 entrega el dato de las siguientes, esto lo hice alguna vez y me solucionó el problema.

la vedad que tambien es cierto lo que dices, mas o menos estuve observando en mi programa y aproximadamente la columna permanece encendida 80 us y se enciende a intervalos de 18 ms de vuelta.
he leido en el foro, vuelvo a retomar una idea que puse en post anteriores, es de hacer el barrido por filas, pero es solo una idea y hasta lo puedo hacer mas rapido y puedo lograr que este encendido mas tiempo.

ojo no es por contradecir tu opinion Diego E. la verdad que me parece muy buena y lo voy a tener en cuenta para mi proxima matriz, pero no se si sera lindo poner otra placa mas, ya que en las actuales no entra nada por todas las pistas de estaño que tuve que hacer...

por ahora me voy conformando con lo que estoy haciendo jaja :-/, para mi es un juguete nuevo  :D

sigo con mi proyecto haber si puedo adelantar algo...

mis oidos siguen abiertos

Gracias

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: KALLITOS en 23 de Marzo de 2011, 11:34:40
hola korpaztk, hace tiempo hice una matriz como la tuya, los leds que se ven encendidos fuera del caracter se deben a que haces cambio en el barrido si apagar todos los leds, mejor dicho apaga las columnas y filas y haz el cambio, eso elimino esa columna que se encendia con baja intensidad.

saludos.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 23 de Marzo de 2011, 12:56:19
hola korpaztk, hace tiempo hice una matriz como la tuya, los leds que se ven encendidos fuera del caracter se deben a que haces cambio en el barrido si apagar todos los leds, mejor dicho apaga las columnas y filas y haz el cambio, eso elimino esa columna que se encendia con baja intensidad.
saludos.

lo que tu dices KALLITOS esta hecho en el programa, digamos que tiene la siguiente forma

habilito la columna => cargo filas => hago pausa => apago filas => habilito columna siguiente

esa seguidilla esta, el problema debe ser que al poner el transistor en corte, por la velocidad no debe llegar a apagarlo enseguida.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 23 de Marzo de 2011, 13:05:28
volviendo a mi comentario
vuelvo a retomar una idea que puse en post anteriores, es de hacer el barrido por filas, pero es solo una idea y hasta lo puedo hacer mas rapido y puedo lograr que este encendido mas tiempo.

me he propuesto hacer lo siguiente...

esta era la parte donde ya cargaba los datos en el display...
Código: [Seleccionar]
void display(void) //rutina general que refresca las columnas de la matriz
{

int i;                                                              //inicio variable local
char columna;                                                 //otra variable local
mof=0x00;                                                     //es para que despues vuelva a la rutina anterior
output_high(PIN_D0);                                      //habilito el registro
     
for(xcol=1;xcol<8;xcol++)                                        //bucle para seleccionar el bit que quiero cargar
{
  for (i=37;i>0;i--)                                          //bucle para seleccionar la fila que quiero cargar
      {                         
         Columna=Columnas[i-1];                                 //tomo el valor de la fila y lo cargo en columna
         Registro(bit_test (Columna, xcol));                   //chequeo que estado tiene el bit xcol y lo envio
      }
     
switch(xcol)                                                 //depende de la fila que este luego habilito el pin
{
case 1: output_high(PIN_B1);delay_ms(1);output_low(PIN_B1);delay_us(1);break;
case 2: output_high(PIN_B2);delay_ms(1);output_low(PIN_B2);delay_us(1);break;
case 3: output_high(PIN_B3);delay_ms(1);output_low(PIN_B3);delay_us(1);break;
case 4: output_high(PIN_B4);delay_ms(1);output_low(PIN_B4);delay_us(1);break;
case 5: output_high(PIN_B5);delay_ms(1);output_low(PIN_B5);delay_us(1);break;
case 6: output_high(PIN_B6);delay_ms(1);output_low(PIN_B6);delay_us(1);break;
case 7: output_high(PIN_B7);delay_ms(1);output_low(PIN_B7);delay_us(1);break;
}

  }
}

y esta la sub-rutina que se encarga de ingresar los datos en el registro de desplazamiento

Código: [Seleccionar]
void Registro(int1 bt)

{
   if (bt==0)                                     //si el bit es 0   
      output_low(PIN_D1);                   //cargo 0 al registro
   else                                            //si el bit es 1
      output_high(PIN_D1);                 //cargo 1 al registro
   
   delay_us(1);                               //espero
   output_low(PIN_C3);                    //cargo dato al registro
   delay_us(1);                              //espero
   output_high(PIN_C3);                  //dejo a la espera el registro para cargar nuevo dato
   delay_us(1);                              //espero
}


es mas o menos esa la idea, si alguien tiene alguna sugerencia las oigo...
ah digo sugerencia porque lamentablemente y no se el porque asi como esta escrito el codigo dura aproximadamente 23 ms en hacer todo el recorrido :S


Saludos
Título: Re: Mi nueva matriz de led
Publicado por: Chipcon en 23 de Marzo de 2011, 19:08:58
Hola korpaz excelente proyecto espero poder ayudarte con los pequeños detalles que tienes.

1.- En el caso del brillo la razón de que no obtengas la intensidad deseada como bien sabes es por que el tiempo que permanece activo, la formula para determinar la corriente no esta mal pero debes tener en cuenta el periodo de tiempo la formula es mas compleja, pero puedes aumentar el brillo si aumentas el voltaje veras los leds tiene 2 parámetros el primero es la Imax. continua por ejemplo 20mA y en segunda la Imax Peak o pulso donde algunos soportan 100mA en un periodo de tiempo determinado por el fabricante.

Entonces si aumentas el voltaje en el mismo periodo de tiempo activo la corriente suministrada por la fuente es mayor
Prueba aumentado el voltaje de la fuente digamos 1/4 mas es decir 15v. y notaras la diferencia.

2.- El problema de la sombra se resuelve  de la siguiente forma se carga el dato y después se prende el transistor,termina el tiempo de encendido y se apaga y nuevamente el ciclo
Si el problema es por hardware para llevar a corte el transistor se debe colocar la resistencia pero directo a GND en el diagrama que subes lo conectas al pin del ULN
pero recuerda que el ULN es un arreglo darlintong nunca llega a corte siempre existe un VCE como minimo .6V

Como no demanda mucha corriente con resistencias de 220R a 1/4w no debes tener problemas y con eso deberá solucionarse el problema de la sombra incluso verifica con osciloscopio y debes ver el transistor en corte.

Bueno espero que tengas buenos resultados
Saludos
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 23 de Marzo de 2011, 21:02:50
primero te agradezco Chipcon por tu sugerencia, ahora el tema de esa ¨sombra¨ lo solucione, pero ahora mi programa corre de otra manera, ahora el barrido no lo hace por columnas sino por filas y lo que logro ahí, es que los led estén mas tiempo encendidos, antes cuando tenia hecho por columnas los led se encendían 500us y luego de 18 ms se volvían a encender, ahora es distintos ya que permanecen prendidos 2ms y luego de 16ms se vuelven a encender, asi que logre remontar un poco mas de brillo con una resistencia de led de 470ohm...
todo feliz hasta ahí nomas jaja, yo siempre tengo algún problema jaja...
y es el siguiente....


como verán:

Primer problema: apenas conecto todas los led están encendidos, luego aparece toda una fila encendida y luego se apaga

Segundo: cuando empieza a mostrar ¨/¨ se enciende la fila superior de todo.

Tercero: en la ¨q¨ también pasa lo mismo

Cuarto: en la ¨y¨ se encienden pero ahora dos filas que son las superiores también

es algo bastante raro, ya que en la simulación ( a pesar de que se ve lento) jeje no me lo hace
observación: ahora a mi programa le cambie el cristal ya no trabajo mas con 4 mhz ahora trabajo con 20mhz.

mientras tanto veré si puedo solucionar mi problema, si alguien se le ocurre algo bienvenido sea


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 28 de Marzo de 2011, 12:53:13
bueno la verdad, que ahora comprendí de el por que calentaban los transistores, me deberían sacar el título de la escuela pero bueno  :D un error lo puede cometer cualquiera, pero 7 errores iguales no  :?, paso a comentar el problema, yo siempre en la escuela cuando dimos teoría de transistores siempre dimos los del tipo bipolar y npn, pnp nunca hemos desarrollado nada, claro entonces cuando yo conecte los transistores tip a los led los hice de la forma numero 1, claro lo conecte como si fuera un npn (ya por la costumbre de años) y ahora lo arregle y cambie los transistores por las dudas y lo deje como el numero 2

(http://img812.imageshack.us/img812/2411/malh.png)

así que voy a necesitar un poco de ayuda capaz, estuve mirando en el osciloscopio, y he viste que el transistor en su base no cae a 0 en ningún momento (hablo del tip42)
digamos que cuando te tiene que saturar caen 2 volt como mucho en la base (en vez de 12 a 10 o 9) y debo pensar que ahi esta el problema de las filas que se me encienden de la nada, como se pudo observar en el ultimo video que subí.

sugerencias y criticas bienvenido sea.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: pocher en 30 de Marzo de 2011, 12:03:20
Los dibujos de la pagina anterior estaban bien, pero se vé que a la hora del montaje físico intercambiaste colector por emisor y viceversa.

Me alegro que detectaras la falla.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 30 de Marzo de 2011, 12:17:35
la verdad que por suerte pude solucionar esa parte, pero todavía me falta la mas complicada (porque es la parte que uno ve) y es el porque se me encienden esas filas indeseadas, he probado si era ruido y no lo es, he probado agregar resistencias para tirar niveles logicos 0 o 1, y nada no consigo respuesta aun, bue ya estoy demorando mucho con esto, voy a ver si en esta semana lo digiero bastante porque no quiero seguir perdiendo tiempo en esto :S es un proyecto demasiado hermoso, pero ya es mucho la cantidad de meses que estoy para esto... cualquier novedad subo...


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: MLO__ en 30 de Marzo de 2011, 16:45:56
Hola.

Yo creo que el problema es de código. De pronto se activa el transistor antes de tiempo por el mal uso o inicialización de una variable .....

Saludos
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 31 de Marzo de 2011, 11:46:55
sigo con mis avances, revise el código detalladamente lo simule y en la vida real verifique con mi osciloscopio, y las señales era correctas, no aparecía ningún tipo de ruido extraño y no había anomalía alguna.
para mi desgracia, observe con total claridad que mi problema era las tensiones que yo manejaba en el uln y los transistores, observe lo siguiente.

saque el pic, y manejaba los pines de salida a los transistores y los registros manualmente y observaba que ingresando 12 v a los transistores, aunque pusiera los pines de los uln en estado alto los led encendía tranquilamente, y en cambio si los transistores los dejo en 5v se apagan de lo mas bien, hice una prueba y obtuve dos resultados.

por un lado menor brillo (que era bastante lógico), y por otro lado eliminar el encendido de esas filas molestas, ahora voy a bajar el valor de resistencia haber si consigo el brillo grande otra vez.

luego subo mas detalles de experiencia  :D

 :-/Saludos.- :-/
Título: Re: Mi nueva matriz de led
Publicado por: MLO__ en 31 de Marzo de 2011, 16:43:02
Bueno, entonces al menos ya sabes que es en el hard ...  ;-)

Lo importante es que lo soluciones.

Saludos
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 01 de Abril de 2011, 22:22:02
bueno la verdad que esto esta casi llegando a su fin, ya lo tengo bastante cocido a la matriz, pude solucionarle los errores gráficos que tenía, ya dentro de poco vuelvo a subir imágenes y video del proyecto, obviamente con sus debidos archivos en proteus mas código y programa en visual basic para comunicación.

pues es claro que el que quiera copiarlo va a ser mas vivo que yo y lo va a hacer en pcb y no la chorrada que hice, pero bueno la intención esta, me salio algo prolijo (aunque los cables no me gustan mucho) pero le di mi tiempo, y ya casi se cumplen 7 meses que de apoco apoquito lo estoy haciendo y construyendo.

Saludos.-
Título: Re: Mi nueva matriz de led(consulta)
Publicado por: korpaztk en 05 de Abril de 2011, 11:46:14
ahora me surge una pequeña duda, los led los tengo en 5 v con una resistencia de 150 ohms, podre bajarle el valor de resistencia para que circule mas corriente no? porque pensaba bajarsela a unos 100 ohms o un poco menos.
la otra es que quiero hacer otra matriz, pero para poder pasar un mensaje en un exterior, y este que arme no se ve casi nada desde la calle, que me recomiendan para que se pueda ver desde afuera??
yo pensaba en comprar led de 20.000 o 25.000 mcd rojos, pero no se si eso va a funcionar bien con el exterior, alguna sugerencia??
y volviendo al tema de la matriz que estuve armando hasta ahora, en esta semana creo que ya me van a hacer el gabinete... pero como dije recién ´´creo´´  :D

criticas y sugerencias acepto.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 07 de Abril de 2011, 11:35:21
Hola amigo, la intensidad de los led en esta aplicación creo que depende más del los tiempos de barrido que de la corriente misma de los led, hay que actualizar 37 columnas, permanecen mucho tiempo apagadas, yo te recomiendo dividir la matriz en dos de 18, las columnas van en paralelo y las filas se dividen en dos puertos del PIC, así, el primer puerto entrega los datos de las primeras 18 columnas y el puerto 2 entrega el dato de las siguientes, esto lo hice alguna vez y me solucionó el problema.

recién ahora me puse a masticar lo tullo, a pesar de que en ese momento te conteste:

¨la vedad que tambien es cierto lo que dices, mas o menos estuve observando en mi programa y aproximadamente la columna permanece encendida 80 us y se enciende a intervalos de 18 ms de vuelta.
he leido en el foro, vuelvo a retomar una idea que puse en post anteriores, es de hacer el barrido por filas, pero es solo una idea y hasta lo puedo hacer mas rapido y puedo lograr que este encendido mas tiempo.¨


me preguntaba yo mismo, que si quisiera tener el máximo de brillo en los led, debería controlarlos individualmente a cada uno, y me preguntaba si se podía hacer lo siguiente. se utiliza un registro de desplazamiento con lach como por ej. un 74hc595, entonces conecto un registro por columna y a las patas de los registros (data) van otros registros que estan conectados en cadena (como en mi matriz actual) entonces mientras los led se encienden yo voy cargando los nuevos datos en los lach entonces nunca habría un parpadeo en los led, no se si me entienden mi idea, capaz que es muy exagerada pero si uno hace un cartel de una buena longitud capaz que sirve.

alguien que me de su punto de vista??

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: stk500 en 07 de Abril de 2011, 12:17:05
Si quiere que los led tenga mas brillos y poder verse a pleno sol deberia buscar Led brilloso, recuerdo que un  forero hizo un Tablero de Led para un Estadio de Baloncesto, y usaba Led brilloso, por eso te aconsejo que ante de comprar led lea la caracteristica de ellos, ya que no todos los led se ponen brilloso por su voltage.
si usara el buscador del foro buscando panel de led vera que hay muchas informacion, pero muchisima.
Título: Re: Mi nueva matriz de led
Publicado por: jukinch en 07 de Abril de 2011, 12:33:08
korpaztk:
            Podés ver distintos tipos de leds de alta potencia y luminosidad en la siguiente página: www.dled.com.ar
            Y en su caso consultarles por mail de acuerdo a tus necesidades para que te informes bien antes de comprar. 
            Hay también un hilo donde podés consultar las distintas casas de electrónica para que antes de comprar te informes bien sobre los costos etc., etc.

http://www.todopic.com.ar/foros/index.php?topic=18644.20

                   Saludos.
                        Jukinch
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 07 de Abril de 2011, 14:52:42
me he contactado con la gente de Dled y he hecho algunas consultas, de los cuales resumo que: para este cartel el tipo de led esta casi bien, ellos recomendaron de 8000 mcd, pero bueno eso por un lado por el otro como el barrido hace que los tiempos sean cortos por ende reduce considerablemente el brillo, por eso mi propuesta de hacerlo lacheable, y para mi proximo cartel que es de 1 mt de longitud aproximadamente, me recomiendan led de alto brillo y 10mm pero ahi con mas razon lo quiero hacer lach, porque sino la velocidad de refresco va a ser pobre, aunque separe columnas con puertos :S. pero bueno cuando comience con ese cartel abrire un nuevo hilo. por ahora continuare con este pequeño, que esta casi terminado a pesar del inconveniente con los led.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jukinch en 07 de Abril de 2011, 15:37:53
Lo importante de este pequeño gran proyecto es que no le has dado el brazo a torcer y pronto podrás decir sueño realizado!!!!
Saludos.
       Jukinch
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Abril de 2011, 10:16:55
me siguen surgiendo dudas... como la siguiente
como sabrán tengo conectadas los ánodos a las filas y cátodos a las columnas.
las filas están conectadas en con una resistencia de 150ohm, y por unos cálculos básicos seria algo asi

Corriente = (Tension Fuente - Caida del Led) / Resistencia

Corriente = ( 5v - 2.2v ) / 150

Corriente =aprox. 18 mA

pero cuando conecto mi miliamperimetro, y mido la corriente en una fila me da un valor de 2mA, entonces llegue a colocar una resistencia de 8,2 ohm de 1/8 W y ni calientan  y recien veo que fluyen 17 a 18 mA.

mis cálculos están bien? o me estoy olvidando de algún factor importante? con esa resistencia baja los led prenden bien y no se nota sobre-consumo... pero bueno mejor también escuchar la opinión de otros hace bien...

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: stk500 en 08 de Abril de 2011, 10:48:34
pero es que tu hace el calculo de uno solo LED y si estan en paralelo el voltage/amperio seran menos, deberia mejor hacer el calculo con la resistencia en paralelo y por cantidades aqui te pongo la pagina que yo uso para mi calculo
http://led.linear1.org/led.wiz, y como te decia ante deberia saber exacto la caracteristica de los led que usa.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Abril de 2011, 10:54:25
pero es que tu hace el calculo de uno solo LED y si estan en paralelo el voltage/amperio seran menos, deberia mejor hacer el calculo con la resistencia en paralelo y por cantidades aqui te pongo la pagina que yo uso para mi calculo
http://led.linear1.org/led.wiz, y como te decia ante deberia saber exacto la caracteristica de los led que usa.

claro por ende al aumentar los led en paralelo la corriente disminuye, eso lo entiendo...
mi duda era si: coloco una resistencia baja, cuando prenden varios led la corriente se disminuye por cada led, pero si enciende uno solo, va a pasar toda la corriente por ese led solo y debería encender mas... no se si me doy a entender  :(
fíjate que la resistencia las conecto en las columnas osea uso 7 nomas, ahora tengo que conectar una resistencia por columna?? no voy a tener problemas,¿ pero debo hacerlo??...

Saludos.-


Modificacion 1: muy bueno el link de todas formas :-/


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Abril de 2011, 12:16:05
nuevo avance:  :lol:
ahora e cambiado las resistencias de 150 ohm por unas de 20 y logro ahora un brillo bueno, y un consumo razonable entre 15 y 19 mA por filas.

pero (siempre hay un pero) :D... no se que sucede, que al encenderlo comienzan a pasar el mensaje y de la nada se resetea :S que podra ser??
Código: [Seleccionar]
//***************E N C A B E Z A D O  P R I N C I P A L
#include <16f877.h>
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte t1con = 0x0fcd
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#priority rda,timer1

//V A R I A B L E S
int1 ban_recibir;
int1 ban_tmr1;
int1 ban_espacio;
int con_recibir;
int con_columnas;
int fin_columnas;
int con_caracter;
int con_espacio;
char cadena[96];
int columnas[36];
int mof=0x00;
int yu;
int fijo1;
int xcol=0;
int1 guarda=0x00;
int1 guarda1=0X00;
int1 ok=0x00;
int1 ver=0x00;
int act=0x00;
//******************************

//S U B R U T I N A S************
void display(void);
void display_1(void);
void rotar_mensaje(void);
//*******************************


//V A R I A B L E S  D E  C A R A C T E R E S

int const tab_espacio[] = {
0b00000000,
0b00000000,
0b00000000,
};

int const tab_admiracion[] = {
0b11110110,
0b11110110,
};

int const tab_comilla[] = {
0b11100000,
0b11100000,
0b00000000,
0b11100000,
0b11100000,
};

int const tab_numero[] = {
0b00101000,
0b11111110,
0b00101000,
0b11111110,
0b00101000,
};

int const tab_moneda[] = {
0b00100100,
0b01010100,
0b11111110,
0b01010100,
0b01001000,
};

int const tab_porcentaje[] = {
0b01100100,//0x32
0b01101000,//0x34
0b00010000,//0x08
0b00101100,//0x16
0b01001100,//0x26
};

int const tab_and[] = {
0b01101100,
0b11111110,
0b10010010,
0b10101010,
0b01000110,
0b00111010,
};

int const tab_apostrofo[] = {
0b11010000,
0b11100000,
};

int const tab_parent_a[] = {
0b00111000,
0b01000100,
0b10000010,
};

int const tab_parent_b[] = {
0b10000010,
0b01000100,
0b00111000,
};

int const tab_asterisco[] = {
0b00101000,
0b00010000,
0b01111100,
0b00010000,
0b00101000,
};

int const tab_mas[] = {
0b00010000,
0b00010000,
0b01111100,
0b00010000,
0b00010000,
};

int const tab_coma[] = {
0b00011010,
0b00011100,
};

int const tab_menos[] = {
0b00010000,
0b00010000,
0b00010000,
0b00010000,
0b00010000,
};

int const tab_punto[] = {
0b00000110,
0b00000110,
};

int const tab_slash[] = {
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
};

int const tab_0[] = {
0b01111100,
0b11111110,
0b10010010,
0b10100010,
0b01111100,
};

int const tab_1[] = {
0b01000010,
0b11111110,
0b11111110,
0b00000010,
};

int const tab_2[] = {
0b01100110,
0b10001110,
0b10011010,
0b11110010,
0b01100010,
};

int const tab_3[] = {
0b11000100,
0b10010010,
0b10110010,
0b11111110,
0b11001100,
};

int const tab_4[] = {
0b00011000,
0b00101000,
0b01001000,
0b11111110,
0b11111110,
0b00001000,
};

int const tab_5[] = {
0b11100100,
0b11100010,
0b10100010,
0b10111110,
0b10011100,
};

int const tab_6[] = {
0b01111100,
0b11111110,
0b10100010,
0b10100010,
0b00011100,
};

int const tab_7[] = {
0b11000110,
0b10001110,
0b10011000,
0b11110000,
0b11100000,
};

int const tab_8[] = {
0b01101100,
0b11111110,
0b10010010,
0b10010010,
0b01101100,
};

int const tab_9[] = {
0b01110000,
0b10001010,
0b10001010,
0b11111110,
0b01111100,
};

int const tab_dos_puntos[] = {
0b01101100,
0b01101100,
};

int const tab_punto_coma[] = {
0b01101010,
0b01101100,
};

int const tab_menor[] = {
0b00010000,
0b00101000,
0b01000100,
0b10000010,
};

int const tab_igual[] = {
0b00101000,
0b00101000,
0b00101000,
0b00101000,
};

int const tab_mayor[] = {
0b10000010,
0b01000100,
0b00101000,
0b00010000,
};

int const tab_interrogante[] = {
0b01000000,
0b10001010,
0b10011010,
0b11110000,
0b01100000,
};

int const tab_arroba[] = {
0b01001100,
0b10010010,
0b10011110,
0b10000010,
0b01111100,
};
//////////////////////////////////////////////////////////////
int const tab_A[] = {
0b01111110,
0b11111110,
0b10001000,
0b10001000,
0b01111110,
};

int const tab_B[] = {
0b11111110,
0b11111110,
0b10010010,
0b10010010,
0b01101100,
};

int const tab_C[] = {
0b01111100,
0b11111110,
0b10000010,
0b10000010,
0b01000100,
};

int const tab_D[] = {
0b11111110,
0b11111110,
0b10000010,
0b10000010,
0b01111100,
};

int const tab_E[] = {
0b11111110,
0b11111110,
0b10010010,
0b10010010,
0b10000010,
};

int const tab_F[] = {
0b11111110,
0b11111110,
0b10010000,
0b10010000,
0b10000000,
};

int const tab_G[] = {
0b01111100,
0b11111110,
0b10010010,
0b10010010,
0b10011110,
};
////////////////////////////////////////////////////////
int const tab_H[] = {
0b11111110,
0b11111110,
0b00010000,
0b00010000,
0b11111110,
};

int const tab_I[] = {
0b10000010,
0b11111110,
0b11111110,
0b10000010,
};

int const tab_J[] = {
0b00001100,
0b10000010,
0b11111110,
0b11111100,
0b10000000,
};

int const tab_K[] = {
0b11111110,
0b11111110,
0b00110000,
0b01001000,
0b10000110,
};

int const tab_L[] = {
0b11111110,
0b11111110,
0b00000110,
0b00000110,
0b00000110,
};

int const tab_M[] = {
0b11111110,
0b11111110,
0b01000000,
0b00100000,
0b01000000,
0b11111110,
};

int const tab_N[] = {
0b11111110,
0b11111110,
0b00010000,
0b00001000,
0b11111110,
};

int const tab_enie_1 [] = {
0b00111110,
0b10111110,
0b01001000,
0b10000100,
0b10111110,
};

int const tab_O[] = {
0b01111100,
0b11111110,
0b10000010,
0b10000010,
0b01111100,
};

int const tab_P[] = {
0b11111110,
0b11111110,
0b10010000,
0b10010000,
0b01100000,
};

int const tab_Q[] = {
0b01111100,
0b11111110,
0b10000010,
0b10000110,
0b01111110,
};

int const tab_R[] = {
0b11111110,
0b11111110,
0b10010000,
0b10011000,
0b01100110,
};

int const tab_S[] = {
0b01100100,
0b11110010,
0b10010010,
0b10011110,
0b01001100,
};

int const tab_T[] = {
0b10000000,
0b11111110,
0b11111110,
0b10000000,
};

int const tab_U[] = {
0b11111100,
0b11111110,
0b00000010,
0b00000010,
0b11111100,
};

int const tab_V[] = {
0b11111000,
0b11111100,
0b00000010,
0b00000100,
0b11111000,
};

int const tab_W[] = {
0b11111100,
0b11111110,
0b00000100,
0b00001000,
0b00000100,
0b11111110,
};

int const tab_X[] = {
0b11000110,
0b11101000,
0b00010000,
0b00101110,
0b11001110,
};

int const tab_Y[] = {
0b11000000,
0b00100010,
0b00111110,
0b00111100,
0b11000000,
};

int const tab_Z[] = {
0b10001110,
0b10011110,
0b10110010,
0b11100010,
0b11000010,
};

int const tab_lla_a[] = {
0b11111110,
0b10000010,
0b10000010,
};

int const tab_sim1[] = {
0b1010100,
0b0110100,
0b0011111,
0b0110100,
0b1010100,
};

int const tab_lla_b[] = {
0b10000010,
0b10000010,
0b11111110,
};

int const tab_sim2[] = {
0b00100000,
0b01000000,
0b10000000,
0b01000000,
0b00100000,
};

int const tab_ul[] = {
0b00000010,
0b00000010,
0b00000010,
0b00000010,
0b00000010,
};


int const tab_dia[] = {
0b10000000,
0b01000000,
0b00100000,
};

int const tab_aa[] = {
0b00000100,
0b00101010,
0b00101010,
0b00111110,
0b00011110,
};

int const tab_bb[] = {
0b11111110,
0b11111110,
0b00100010,
0b00100010,
0b00011100,
};

int const tab_cc[] = {
0b00011100,
0b00111110,
0b00100010,
0b00100010,
0b00000100,
};

int const tab_dd[] = {
0b00011100,
0b00100010,
0b00100010,
0b11111110,
0b11111110,
};

int const tab_ee[] = {
0b00011100,
0b00111110,
0b00101010,
0b00101010,
0b00010000,
};

int const tab_ff[] = {
0b00010000,
0b01111110,
0b11111110,
0b10010000,
0b01000000,
};

int const tab_gg[] = {
0b00110010,
0b01001010,
0b01111110,
0b00111100,
};

int const tab_hh[] = {
0b11111110,
0b11111110,
0b00100000,
0b00100000,
0b00011110,
};

int const tab_ii[] = {
0b00100010,
0b10111110,
0b10111110,
0b00000010,
};

int const tab_jj[] = {
0b00000100,
0b00100010,
0b10111110,
0b10111100,
};

int const tab_kk[] = {
0b11111110,
0b01111110,
0b00001000,
0b00010100,
0b00100010,
};

int const tab_ll[] = {
0b00000010,
0b11111110,
0b11111110,
0b10000010,
};

int const tab_mm[] = {
0b00111110,
0b00011110,
0b00100000,
0b00011110,
0b00100000,
0b00011110,
};

int const tab_nn[] = {
0b00111110,
0b00011110,
0b00100000,
0b00100000,
0b00011110,
};

int const tab_enie_2[] = {
0b10111110,
0b00011110,
0b00100000,
0b10100000,
0b10011110,
};

int const tab_oo[] = {
0b00011100,
0b00111110,
0b00100010,
0b00100010,
0b00011100,
};

int const tab_pp[] = {
0b01111110,
0b01111110,
0b01001000,
0b01001000,
0b00110000,
};

int const tab_qq[] = {
0b00110000,
0b01001000,
0b01001000,
0b01111110,
0b01111110,
};

int const tab_rr[] = {
0b00111110,
0b00011110,
0b00100000,
0b00100000,
0b00010000,
};

int const tab_ss[] = {
0b00010010,
0b00111010,
0b00101110,
0b00100100,
};

int const tab_tt[] = {
0b00100000,
0b11111100,
0b11111110,
0b00100010,
0b00000100,
};

int const tab_uu[] = {
0b00111100,
0b00000010,
0b00000010,
0b00111100,
0b00111110,
};

int const tab_vv[] = {
0b00111000,
0b00111100,
0b00000010,
0b00000100,
0b00111000,
};

int const tab_ww[] = {
0b00111110,
0b00111100,
0b00000010,
0b00001100,
0b00000010,
0b00111100,
};

int const tab_xx[] = {
0b00100010,
0b00010100,
0b00001000,
0b00010100,
0b00100010,
};

int const tab_yy[] = {
0b00110000,
0b00001010,
0b00001010,
0b00111110,
0b00111100,
};

int const tab_zz[] = {
0b00100010,
0b00100110,
0b00101110,
0b00111010,
0b00110010,
};

int const tab_cor1[] = {
0b00010000,
0b01101100,
0b10000010,
0b10000010,
};

int const tab_sim3[] = {
0b11111110,
};

int const tab_cor2[] = {
0b10000010,
0b10000010,
0b01101100,
0b00010000,
};

int const tab_fle1[] = {
0b00010000,
0b00010000,
0b01010100,
0b00111000,
0b00010000,
};

int const tab_fle2[] = {
0b00010000,
0b00111000,
0b01010100,
0b00010000,
0b00010000,
};

///////////////////////////////////////////////////////////////////////////////
#int_timer1 //Vector de interrupcion por desbordamiento del
//timer 1
void interrupcion_tmr1(void)
{
delay_us(2); //tiempo de 250 ms
set_timer1(3048);
ban_tmr1 = 0x01;
}

///////////////////////////////////////////////////////////////////////////////
#int_rda    //Vector de interrupcion de la recepcion de datos
void interrupcion_rx(void) //por el usart
{
char respaldo;

respaldo = getc(); //Se lee el dato recibido con el código 13 (enter) se da inicio a la
//escritura de datos en la matriz y con el código 27 (escape) se finaliza

if(ban_recibir == 0x01 && respaldo!=0x1f && respaldo!=0x1e)
{
cadena[con_recibir] = respaldo;
delay_us(10);
con_recibir++;
delay_us(10);
act++;
delay_us(10);
putc(respaldo);
delay_us(10);
}

if(respaldo == 0x0D)
{
ban_recibir = 0x01;
delay_us(10);
con_recibir = 0x00;
delay_us(10);
memset(columnas,0,sizeof(columnas));
delay_us(2);
delay_us(10);
fijo1=0x00;

}



if(respaldo == 0x1B)
{
ban_recibir = 0x00;
delay_us(10);
con_caracter = 0x00;
delay_us(10);
con_columnas = 0x00;
delay_us(10);
yu=0x00;
guarda=0x01;
ok=0x01;
ban_recibir = 0x00;
delay_us(10);
}

if(respaldo == 0x1f)
{
mof=0x02;
guarda1=0x01;
ver=0x01;
}

if(respaldo == 0x1e)
{
mof=0x00;
guarda1=0x01;
ver=0x00;
}

}

///////////////////////////////////////////////////////////////////////////////
void escribir_eeprom(void)
{
int k=0x00;

for(k=0x00;k<=0x60;k++)
{
write_eeprom(k,cadena[k]);
delay_ms(100);
}

}
//////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

#zero_ram

void main(void)
{
int x;
set_tris_a(0X00);
delay_us(1);
set_tris_b(0X00);
delay_us(1);
portb=0x00;
set_tris_c(0X80);
delay_us(1);
set_tris_d(0X00);
port_b_pullups(false);
delay_ms(5);
portb=0x00;
setup_timer_1(t1_internal | t1_div_by_4);
setup_adc_ports(no_analogs);
set_timer1(0);
output_low(PIN_D0);

//se carga en la matriz todos los caracteres ascii

for(x=0x00; x<=0x60; x++)
{
cadena[x]=read_eeprom(x);
delay_ms(100);
}
mof=read_eeprom(0xff);
delay_ms(100);
ver=read_eeprom(0xfd);
delay_ms(100);
cadena[95] = 27;

enable_interrupts(global); //habilitación de todas las interrupciones
enable_interrupts(int_rda); //habilitación de la interrupción de la recepcion de datos
enable_interrupts(int_timer1); //habilitación de la interrupción del Tmr1
disable_interrupts(int_ext);
disable_interrupts(int_rtcc);
disable_interrupts(int_timer2);
disable_interrupts(int_rb);
portb=0x00;
portd=0x00;
delay_us(10);

while(true)
{
///////////////////////////////////////////////////////////////////////////////
while(mof == 0x00) //Rutina general
{

delay_us(10);
display();

if(ban_tmr1 == 0x01 && mof == 0x00)
{
ban_tmr1 = 0x00;
delay_us(10);
rotar_mensaje();
if(ver==0x01)
{
mof=0x02;
ver=0x00;
}
else
{
mof=0x00;
}
}

if(guarda==0x01)
{
guarda=0x00;
if(ver==0x01)
{
mof=0x02;
ver=0x01;
}
else
{
mof=0x00;
}
escribir_eeprom();
write_eeprom(0xff,mof);
delay_ms(100);
write_eeprom(0xfd,ver);
delay_ms(100);
}
}
///////////////////////////////////////////////////////////////////////////////
while(mof == 0x02)

{

int fijo;

fijo=yu;
delay_us(10);
display();


if(ban_recibir == 0x00 )
{
if(fijo <= 0x23)
{
if(ban_tmr1 == 0x01 && mof == 0x02 && ver == 0x01)
{
ban_tmr1 = 0x00;
delay_us(10);

rotar_mensaje();
fijo = fijo+0x01;
fijo1=fijo1+0x01;
if(ver==0x00)
{
mof=0x00;
ver=0x00;
}
else
{
mof=0x02;
}
}
yu = fijo;
}
}




if(guarda==0x01)
{
mof=0x02;
guarda=0x00;
if(ver==0x01)
{
mof=0x02;
ver=0x01;
}
else
{
mof=0x00;
}
escribir_eeprom();
write_eeprom(0xff,mof);
delay_ms(50);
write_eeprom(0xfd,ver);
delay_ms(50);
}

}
///////////////////////////////////////////////////////////////////////////////////




}
}


//***********************************************************************************************

//***********************************************************************************************
//***********************************************************************************************
//***********************************************************************************************
void display(void) //rutina general que refresca las columnas de la matriz
{

int i;
char col;
int bt=0;
portb=0x00;
delay_us(100);
output_low(PIN_D0);
delay_us(1);
output_high(PIN_D0);
    delay_us(1);

for(xcol=0x01;xcol<0x08;xcol++)
{

for (i=37;i>0;i--)
{
col=columnas[i-1];
delay_us(2);
bt=bit_test (col, xcol);
delay_us(2);
portb=0x00;
 
switch(bt)
{
case 0x00 :output_low(PIN_D1);delay_us(1);output_low(PIN_C3);delay_us(1);output_high(PIN_C3);delay_us(1);output_low(PIN_C3);delay_us(1); break;          
case 0x01 :output_high(PIN_D1);delay_us(1);output_low(PIN_C3);delay_us(1);output_high(PIN_C3);delay_us(1);output_low(PIN_C3);delay_us(1); break;
}
}
      
portb=0x00;
switch(xcol)
{
case 0x01: portb=0x02;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x02: portb=0x04;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x03: portb=0x08;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x04: portb=0x10;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x05: portb=0x20;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x06: portb=0x40;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x07: portb=0x80;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
}

  portb=0x00;


}
}
//***********************************************************************************************
//***********************************************************************************************
void rotar_mensaje(void) //rutina general que recorre la matriz cadena y descompone los carateres
{ //en columnas
int respaldo;
int i;
if(ban_recibir == 0x01) //Consulta si se presiono Enter
{
return;
}

if(ban_espacio == 0x01)
{

for(i=0x27; i>0x00; i--)
{
columnas[i] = columnas[i-1];
}

columnas[0] = 0x00;
con_espacio++;

if(con_espacio == 0x02)
{
ban_espacio = 0x00;
con_espacio = 0x00;
}
return;


}
///////////////////////////////////////////////////////////////////////////////////
//cuando encuatra el codigo 27 (escape) reinicia el mensaje
if(cadena[con_caracter] == 27)
{
con_caracter = 0;
con_columnas = 0;
return;
}
///////////////////////////////////////////////////////////////////////////////////


switch(cadena[con_caracter])
{
case 32: respaldo = tab_espacio[con_columnas]; fin_columnas = sizeof(tab_espacio); break;
case 33: respaldo = tab_admiracion[con_columnas]; fin_columnas = sizeof(tab_admiracion); break;
case 34: respaldo = tab_comilla[con_columnas]; fin_columnas = sizeof(tab_comilla); break;
case 35: respaldo = tab_numero[con_columnas]; fin_columnas = sizeof(tab_numero); break;
case 36: respaldo = tab_moneda[con_columnas]; fin_columnas = sizeof(tab_moneda); break;
case 37: respaldo = tab_porcentaje[con_columnas]; fin_columnas = sizeof(tab_porcentaje); break;
case 38: respaldo = tab_and[con_columnas]; fin_columnas = sizeof(tab_and); break;
case 39: respaldo = tab_apostrofo[con_columnas]; fin_columnas = sizeof(tab_apostrofo); break;
case 40: respaldo = tab_parent_a[con_columnas]; fin_columnas = sizeof(tab_parent_a); break;
case 41: respaldo = tab_parent_b[con_columnas]; fin_columnas = sizeof(tab_parent_b); break;
case 42: respaldo = tab_asterisco[con_columnas]; fin_columnas = sizeof(tab_asterisco); break;
case 43: respaldo = tab_mas[con_columnas]; fin_columnas = sizeof(tab_mas); break;
case 44: respaldo = tab_coma[con_columnas]; fin_columnas = sizeof(tab_coma); break;
case 45: respaldo = tab_menos[con_columnas]; fin_columnas = sizeof(tab_menos); break;
case 46: respaldo = tab_punto[con_columnas]; fin_columnas = sizeof(tab_punto); break;
case 47: respaldo = tab_slash[con_columnas]; fin_columnas = sizeof(tab_slash); break;

case 48: respaldo = tab_0[con_columnas]; fin_columnas = sizeof(tab_0); break;
case 49: respaldo = tab_1[con_columnas]; fin_columnas = sizeof(tab_1); break;
case 50: respaldo = tab_2[con_columnas]; fin_columnas = sizeof(tab_2); break;
case 51: respaldo = tab_3[con_columnas]; fin_columnas = sizeof(tab_3); break;
case 52: respaldo = tab_4[con_columnas]; fin_columnas = sizeof(tab_4); break;
case 53: respaldo = tab_5[con_columnas]; fin_columnas = sizeof(tab_5); break;
case 54: respaldo = tab_6[con_columnas]; fin_columnas = sizeof(tab_6); break;
case 55: respaldo = tab_7[con_columnas]; fin_columnas = sizeof(tab_7); break;
case 56: respaldo = tab_8[con_columnas]; fin_columnas = sizeof(tab_8); break;
case 57: respaldo = tab_9[con_columnas]; fin_columnas = sizeof(tab_9); break;
case 58: respaldo = tab_dos_puntos[con_columnas]; fin_columnas = sizeof(tab_dos_puntos); break;
case 59: respaldo = tab_punto_coma[con_columnas]; fin_columnas = sizeof(tab_punto_coma); break;
case 60: respaldo = tab_menor[con_columnas]; fin_columnas = sizeof(tab_menor); break;
case 61: respaldo = tab_igual[con_columnas]; fin_columnas = sizeof(tab_igual); break;
case 62: respaldo = tab_mayor[con_columnas]; fin_columnas = sizeof(tab_mayor); break;
case 63: respaldo = tab_interrogante[con_columnas]; fin_columnas = sizeof(tab_interrogante); break;

case 64: respaldo = tab_arroba[con_columnas]; fin_columnas = sizeof(tab_arroba); break;
case 65: respaldo = tab_A[con_columnas]; fin_columnas = sizeof(tab_A); break;
case 66: respaldo = tab_B[con_columnas]; fin_columnas = sizeof(tab_B); break;
case 67: respaldo = tab_C[con_columnas]; fin_columnas = sizeof(tab_C); break;
case 68: respaldo = tab_D[con_columnas]; fin_columnas = sizeof(tab_D); break;
case 69: respaldo = tab_E[con_columnas]; fin_columnas = sizeof(tab_E); break;
case 70: respaldo = tab_F[con_columnas]; fin_columnas = sizeof(tab_F); break;
case 71: respaldo = tab_G[con_columnas]; fin_columnas = sizeof(tab_G); break;
case 72: respaldo = tab_H[con_columnas]; fin_columnas = sizeof(tab_H); break;
case 73: respaldo = tab_I[con_columnas]; fin_columnas = sizeof(tab_I); break;
case 74: respaldo = tab_J[con_columnas]; fin_columnas = sizeof(tab_J); break;
case 75: respaldo = tab_K[con_columnas]; fin_columnas = sizeof(tab_K); break;
case 76: respaldo = tab_L[con_columnas]; fin_columnas = sizeof(tab_L); break;
case 77: respaldo = tab_M[con_columnas]; fin_columnas = sizeof(tab_M); break;
case 78: respaldo = tab_N[con_columnas]; fin_columnas = sizeof(tab_N); break;
case 209: respaldo = tab_enie_1[con_columnas]; fin_columnas = sizeof(tab_enie_1); break;
case 79: respaldo = tab_O[con_columnas]; fin_columnas = sizeof(tab_O); break;
case 80: respaldo = tab_P[con_columnas]; fin_columnas = sizeof(tab_P); break;
case 81: respaldo = tab_Q[con_columnas]; fin_columnas = sizeof(tab_Q); break;
case 82: respaldo = tab_R[con_columnas]; fin_columnas = sizeof(tab_R); break;
case 83: respaldo = tab_S[con_columnas]; fin_columnas = sizeof(tab_S); break;
case 84: respaldo = tab_T[con_columnas]; fin_columnas = sizeof(tab_T); break;
case 85: respaldo = tab_U[con_columnas]; fin_columnas = sizeof(tab_U); break;
case 86: respaldo = tab_V[con_columnas]; fin_columnas = sizeof(tab_V); break;
case 87: respaldo = tab_W[con_columnas]; fin_columnas = sizeof(tab_W); break;
case 88: respaldo = tab_X[con_columnas]; fin_columnas = sizeof(tab_X); break;
case 89: respaldo = tab_Y[con_columnas]; fin_columnas = sizeof(tab_Y); break;
case 90: respaldo = tab_Z[con_columnas]; fin_columnas = sizeof(tab_Z); break;

case 91: respaldo = tab_lla_a[con_columnas]; fin_columnas = sizeof(tab_lla_a); break;
case 92: respaldo = tab_sim1[con_columnas]; fin_columnas = sizeof(tab_sim1); break;
case 93: respaldo = tab_lla_b[con_columnas]; fin_columnas = sizeof(tab_lla_b); break;
case 94: respaldo = tab_sim2[con_columnas]; fin_columnas = sizeof(tab_sim2); break;
case 95: respaldo = tab_ul[con_columnas]; fin_columnas = sizeof(tab_ul); break;
case 96: respaldo = tab_dia[con_columnas]; fin_columnas = sizeof(tab_dia); break;

case 97: respaldo = tab_aa[con_columnas]; fin_columnas = sizeof(tab_aa); break;
case 98: respaldo = tab_bb[con_columnas]; fin_columnas = sizeof(tab_bb); break;
case 99: respaldo = tab_cc[con_columnas]; fin_columnas = sizeof(tab_cc); break;
case 100: respaldo = tab_dd[con_columnas]; fin_columnas = sizeof(tab_dd); break;
case 101: respaldo = tab_ee[con_columnas]; fin_columnas = sizeof(tab_ee); break;
case 102: respaldo = tab_ff[con_columnas]; fin_columnas = sizeof(tab_ff); break;
case 103: respaldo = tab_gg[con_columnas]; fin_columnas = sizeof(tab_gg); break;
case 104: respaldo = tab_hh[con_columnas]; fin_columnas = sizeof(tab_hh); break;
case 105: respaldo = tab_ii[con_columnas]; fin_columnas = sizeof(tab_ii); break;
case 106: respaldo = tab_jj[con_columnas]; fin_columnas = sizeof(tab_jj); break;
case 107: respaldo = tab_kk[con_columnas]; fin_columnas = sizeof(tab_kk); break;
case 108: respaldo = tab_ll[con_columnas]; fin_columnas = sizeof(tab_ll); break;
case 109: respaldo = tab_mm[con_columnas]; fin_columnas = sizeof(tab_mm); break;
case 110: respaldo = tab_nn[con_columnas]; fin_columnas = sizeof(tab_nn); break;
case 241: respaldo = tab_enie_2[con_columnas]; fin_columnas = sizeof(tab_enie_2); break;
case 111: respaldo = tab_oo[con_columnas]; fin_columnas = sizeof(tab_oo); break;
case 112: respaldo = tab_pp[con_columnas]; fin_columnas = sizeof(tab_pp); break;
case 113: respaldo = tab_qq[con_columnas]; fin_columnas = sizeof(tab_qq); break;
case 114: respaldo = tab_rr[con_columnas]; fin_columnas = sizeof(tab_rr); break;
case 115: respaldo = tab_ss[con_columnas]; fin_columnas = sizeof(tab_ss); break;
case 116: respaldo = tab_tt[con_columnas]; fin_columnas = sizeof(tab_tt); break;
case 117: respaldo = tab_uu[con_columnas]; fin_columnas = sizeof(tab_uu); break;
case 118: respaldo = tab_vv[con_columnas]; fin_columnas = sizeof(tab_vv); break;
case 119: respaldo = tab_ww[con_columnas]; fin_columnas = sizeof(tab_ww); break;
case 120: respaldo = tab_xx[con_columnas]; fin_columnas = sizeof(tab_xx); break;
case 121: respaldo = tab_yy[con_columnas]; fin_columnas = sizeof(tab_yy); break;
case 122: respaldo = tab_zz[con_columnas]; fin_columnas = sizeof(tab_zz); break;

case 123: respaldo = tab_cor1[con_columnas]; fin_columnas = sizeof(tab_cor1); break;
case 124: respaldo = tab_sim3[con_columnas]; fin_columnas = sizeof(tab_sim3); break;
case 125: respaldo = tab_cor2[con_columnas]; fin_columnas = sizeof(tab_cor2); break;
case 126: respaldo = tab_fle1[con_columnas]; fin_columnas = sizeof(tab_fle1); break;
case 127: respaldo = tab_fle2[con_columnas]; fin_columnas = sizeof(tab_fle2); break;
}

///////////////////
con_columnas++;

if(con_columnas == fin_columnas)
{
con_columnas = 0x00;
con_caracter++;
ban_espacio = 0x01;
}



for(i=0x27; i>0x00; i--)
{
columnas[i] = columnas[i-1];
}

columnas[0] = respaldo;
}
///////////////////////////////////////////////////////////////////////////////



alguien ve algun inconveniente, yo por lo menos no. :S

Saludos.-



Moficiacion 1:

el problema debe de haber sido electrónico, ya que las resistencias que habia puesto de 20 ohms las he sustituido por unas de 47, y ahora funciona de los mas maravilloso.

Saludos.-



Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Abril de 2011, 17:08:06
hice pruebas en el exterior de mi casa (daba un poco de cosas sacar a la calle el manojo de cables :D) e increiblemente me lleve la sorpresa que por lo menos de 10 a 20 mts (dependiendo del angulo que me hubicara) podía leer perfecto lo que estaba pasando  :-/ ahora falta nomas el gabinete y doy por terminado todo esto jejeje :)

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 18 de Abril de 2011, 18:22:29
esto esta casi cocido del todo  :-/ ya me trajeron mi gabinete, hecho en madera porque no habia fondos para hacerlo en metal o aluminio  :D
aqui unas fotos de como va quedando

(http://img29.imageshack.us/img29/2341/sdc10029h.jpg)

(http://img69.imageshack.us/img69/5208/sdc10028u.jpg)

(http://img199.imageshack.us/img199/3959/sdc10027b.jpg)

(http://img821.imageshack.us/img821/5039/sdc10026t.jpg)

(http://img842.imageshack.us/img842/6245/sdc10030n.jpg)


ya hoy lo pinto y mañana o esta noche subire un video del resultado final =)


Saludos.-

Título: Re: Mi nueva matriz de led
Publicado por: stk500 en 19 de Abril de 2011, 02:44:38
 :mrgreen: pues te ha quedado muy chula, han pensando poner regilla detras o orificio para que tenga ventilacion?
porque me imagino que cerrado completo se te calentaran todos los componente.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 19 de Abril de 2011, 10:22:40
Si la verdad que fue un detalle que no tuve en cuenta pero no hay nada que no pueda hacer un taladro de banco  ;-)
Y bueno, ya dejo terminado mi asunto, con las fotos finales  :-/
(http://img710.imageshack.us/img710/5916/sdc10033u.jpg)

(http://img819.imageshack.us/img819/5190/sdc10032e.jpg)

(http://img202.imageshack.us/img202/7985/sdc10037d.jpg)

(http://img833.imageshack.us/img833/3840/sdc10036d.jpg)

(http://img225.imageshack.us/img225/4797/sdc10035a.jpg)

(http://img33.imageshack.us/img33/6168/sdc10034i.jpg)


y por supuesto ....

un video   :-/  :-/  :-/


Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 19 de Abril de 2011, 10:48:17
Bueno, le pongo punto y final y dar agradecimientos a todos los que me ayudaron, los que dieron consejos, los pequeños tips, y demás que son:

Miquel_S, stk500, CarloS_32, Diego E., falflores, todopic, bmb, jukinch, cristian_elect, pocher, KALLITOS, Chipcon y MLO__

Disculpas a los que no halla nombrado.-

Y dado por final, adjunto mi proyecto con simulacion y programa en VB, lo subo a un servidor ya que pesa un poco mas de lo que permite la pagina.-

http://www.megaupload.com/?d=GRNKKM9S

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: mafig2112 en 20 de Mayo de 2011, 00:26:07
hola acabo de bajar tu code y al simularlo sale solo BAR
como uso el puerto com segun yo uso el com3, lo pongo en la simulacion pero al tratar de meter letras no cambia solo se queda bar :(
por cierto te quedo de waooo O.o
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 20 de Mayo de 2011, 10:27:29
en ese archivo tienes la simulación del proteus y un programa en VB pero para poder enlazarlos necesitas otro software que te simule la conexión física de dos puertos COM (serie), yo me acuerdo haberlo hecho con el virtual serial com driver algo asi, jeje no recuerdo bien el nombre.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jukinch en 20 de Mayo de 2011, 11:12:28
korpaztk:
            Si no es molestia o perjuicio podrías subir el código en Vb?
             Saludos.
              Jukinch
                 
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 20 de Mayo de 2011, 11:20:03
sii, no hay drama.
no tengo el visual basic en esta maquina, creería que el archivo debe ser alguno de los que subí ahí en el archivo, no creo que te sea dificil encontrarlo, cualquier cosa avisenme y lo busco con mas exactitud :D

Saludos.

PD: no se porque pero me gustaría que algún admin también opinase que le pareció mi pequeño proyecto, obviamente que ustedes pueden también porque son los que me han ayudado en este y otros post que he hecho. :-/ :-/ :-/ :-/ :-/
Título: Re: Mi nueva matriz de led
Publicado por: jukinch en 20 de Mayo de 2011, 11:28:28
korpaztk:
             El proyecto está muy copado. Y como te dije antes, le diste lucha hasta el último rincón. Cuantos proyectos quedan a mitad de camino por una cosa u otra.? Y este si que no es el caso.
                    Saludos desde San Nicolás, Argentina
                                       Jukinch
Título: Re: Mi nueva matriz de led
Publicado por: REVOLUTIONLY en 09 de Junio de 2011, 01:20:08
Felicitaciones colega korpaztk,  es un proyecto estupendo, y lo mejor  es  que no   te diste  por  vencido, dentro  de poco  yo también   empezare a  armar un proyecto semejante al   tuyo, me servirá de mucho  tus aportes.

Saludos desde Perú.
 
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 24 de Junio de 2011, 16:19:53
Amigo que buen trabajo que hiciste te felicito y me lei todo el tutorial
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 24 de Junio de 2011, 16:35:25
Amigo porfavor digame el nombre del programa en el que programaste el microcontrolador en C
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 24 de Junio de 2011, 23:13:51
Amigo porfavor digame el nombre del programa en el que programaste el microcontrolador en C

Si mal no lo recuerdo era MpLab, integrado con el compilador de CCS, no recuerdo si se escribe así de esta manera.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 26 de Junio de 2011, 23:31:52
hoy monte en proteus tu circuito e intento ingresar texto en virtual terminal y no me deja y despues de unos segundos aparece la palabra BAR en los displays.
que puede ser?
o mas bien como hago para ingresar el texto y que me lo muestre en los displays?
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 27 de Junio de 2011, 10:54:41
hoy monte en proteus tu circuito e intento ingresar texto en virtual terminal y no me deja y despues de unos segundos aparece la palabra BAR en los displays.
que puede ser?
o mas bien como hago para ingresar el texto y que me lo muestre en los displays?

la carga de datos no se hace con el virtual terminal. lee unos post mas atras no recuerdo cuantos mas atras ;-) que digo como se conecta a través de otro programa de por medio.

Saludos desde Santa Fe, Argentina.  :P
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 29 de Junio de 2011, 21:50:28
muchas gracias ya baje el programita y funciono muyyy bien. le a hecho alguna otra modificacion o lo dejaste asi?
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 05 de Julio de 2011, 16:22:04
luego de haberlo terminado al cartel y ver como ha quedado de lindo, he decidido dejarlo ahi como esta, ya que si lo empiezo a modificar mas ya veo que despues dejá de funcionar  :D. pero bueno, por ahora estoy con otro proyecto en la cabeza, :D, pero puedo ayudar en el proyecto si alguien necesita.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 06 de Julio de 2011, 01:37:23
Hola Korpaz tengo una inquietud la variable xcol y con_caracter que funcion cumplen?
gracias
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 01 de Agosto de 2011, 11:28:36
Disculpa jamasari, por mi gran demora, la verdad que el mes de julio no fue tan bueno y me mantuvo muy ocupado fuera de la computadora casi.

voy a tratar de explicar lo que hace xcol, espero que pueda hacerme entender.
es una variable que representa la fila que debemos encender en el cartel y para comprobar si el bit de una fila se debe encender o no.
para eso te voy a hacer la pequeña descripcion de esa parte del codigo
Código: [Seleccionar]

for(xcol=0x01;xcol<0x08;xcol++) //con este bucle estamos viendo que fila vamos a encender.
{

for (i=37;i>0;i--) //con este otro veremos que columna estamos analizando.
{
col=columnas[i-1]; //aqui cargamos en esta variable el valor de la columna que querramos usar
delay_us(2);
bt=bit_test (col, xcol); //aqui testeamos el estado de un bit de la variable col que se cargo con los datos de la variable columna, y de ahi decimos que bit de los 8 queremos ver su estado, si es la primera vez testearemos el primer bit y lo almacenamos en la variable bt
delay_us(2);
portb=0x00; //aqui apagamos el puerto b
   
switch(bt) //luego dependiendo de ese estado en bt entramos a este switch y lo unico que hara es cargar en el registro de desplazamiento el correspondiente uno o cero           
{
case 0x00 :output_low(PIN_D1);delay_us(1);output_low(PIN_C3);delay_us(1);output_high(PIN_C3);delay_us(1);output_low(PIN_C3);delay_us(1); break;
case 0x01 :output_high(PIN_D1);delay_us(1);output_low(PIN_C3);delay_us(1);output_high(PIN_C3);delay_us(1);output_low(PIN_C3);delay_us(1); break;
}
}
     
portb=0x00;
switch(xcol) //por ultimo entramos en este otro switch y consultamos que fila debe encenderse (lo se lo se, tuviera que decir xfil y no xcol es confuso)
{
case 0x01: portb=0x02;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x02: portb=0x04;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x03: portb=0x08;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x04: portb=0x10;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x05: portb=0x20;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x06: portb=0x40;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
case 0x07: portb=0x80;delay_ms(2);portb=0x00;delay_us(100);output_low(PIN_D0);delay_us(1);output_high(PIN_D0);delay_us(1);break;
}

  portb=0x00;


}

y la verdad que con_Caracter ya me olvide que era lo que hacia, porque hace mucho que no leo el código, pero si uno lo empieza a simular paso a paso en proteus, te puedo asegurar que enseguida lo podes entender.
pero servia para indicar al programa que debe proseguir a buscar el siguiente caracter para cargar en el cartel. pero intenta lo que digo, que no es muy dificil entender ese pedazo de codigo.

Saludos. Y espero que pueda haberte ayudado un poco.  :)
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 11 de Septiembre de 2011, 23:53:23
buen trabajo te quedo exlente no podrias subir el diagrama de potencia de la matriz ps hay una parte que no entiendo muy bien yo no se mucho de electronica pero esto de las matrices de led me gusta y no se como haces en la parte donde tienes los 7404 los sutistuyes por los uln2803 o van conectados unos de tras del otro y luego a los led disculpa mi ignorancia
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Septiembre de 2011, 11:16:45
buen trabajo te quedo exlente no podrias subir el diagrama de potencia de la matriz ps hay una parte que no entiendo muy bien yo no se mucho de electronica pero esto de las matrices de led me gusta y no se como haces en la parte donde tienes los 7404 los sutistuyes por los uln2803 o van conectados unos de tras del otro y luego a los led disculpa mi ignorancia
los 7404 y los uln2803 están conectados en cascada, osea la salida de un 7404 esta conectada a una entrada del uln2803 y su salida al katodo de un led.
a que te refieres con diagrama de potencia?.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 12 de Septiembre de 2011, 13:31:00
eso lo entendi bien... y tu tienes los tip32 conectadosasi conectado como esta en la imagen. el emisor  va a 5v o a 12v y la resistencia de 47R va asi conectado  el colector o va despues del led y luego a uln. a y lo que te decia el diagrama de potencia era la parte de los transistores y los uln como iban conectados en el circuito gracias por tu colaboracion has hecho un exlente trabajo y me gustaria saber todos los detalles a ver si me animo a armar una que me gustaria que fuera de 7x64, tambien seria bueno adactarcela a un teclado ps2 aunque hay habria q estudia un poco el codigo del teclado
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Septiembre de 2011, 17:22:29
yo subí un circuito hecho en proteus, si no me equivoco, se mostraba como iban conectado los transistores con sus respectivas resistencias, mi idea de este proyecto era de hacerlo en 64 columnas que iba a quedar mas vistoso, pero bueno termine haciéndolo de 32, y la parte del teclado lo toque en algún post de este proyecto, pero bueno ya estaba muy desarrollado para modificar de esa forma, pero no esta mala la idea...
espero que te pueda ayudar en algo..

Saludos...
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 12 de Septiembre de 2011, 17:28:57
tu utilizaste don pares de transistores para cada fila pero los conectaste a 12 o a 5v porue en un pos que subiste salia conectado a 12 y en otro a 5 y las resistencia de 74R las conectaste al colector del tip32 verdad esa es la unic duda q tengo
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Septiembre de 2011, 17:38:41
en este momento no me acuerdo, pero sino me equivoco ambos los conecte a 12v, luego mas tarde me fijare en el cartel y le comentaré...

Saludos...
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 12 de Septiembre de 2011, 17:43:24
bueno muchas gracias estare pendiente
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 15 de Septiembre de 2011, 16:18:23
disculpa que te moleste tanto pero tu en tu circuito conectas los 7404 en cascada con los uln? pues  yo tengo entendido que los uln en un drive para manejar corrientes grandes con corrientes pequeñas pero tambien invierte la señal osea si tengo un 1 en la entrada del uln tendria un 0 en la salida i viceversa

entonces si eso es cierto para que utilizarias los 7404??? si el uln estaria haciendo el trabajo de el y controlaria la corriente de los led si me pudieras explicar te lo agradeceria

gracias
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 16 de Septiembre de 2011, 11:43:10
tu utilizaste don pares de transistores para cada fila pero los conectaste a 12 o a 5v porue en un pos que subiste salia conectado a 12 y en otro a 5 y las resistencia de 74R las conectaste al colector del tip32 verdad esa es la unic duda q tengo
ahora recordé como era, antes utilizaba 12 y 5 v pero como me traían problemas deje toda la circuiteria a 5V únicamente.

disculpa que te moleste tanto pero tu en tu circuito conectas los 7404 en cascada con los uln? pues  yo tengo entendido que los uln en un drive para manejar corrientes grandes con corrientes pequeñas pero tambien invierte la señal osea si tengo un 1 en la entrada del uln tendria un 0 en la salida i viceversa

entonces si eso es cierto para que utilizarias los 7404??? si el uln estaria haciendo el trabajo de el y controlaria la corriente de los led si me pudieras explicar te lo agradeceria

gracias

si lees un poco mas de lo que son los 7404 y uln son dos componentes distintos uno es un registro de desplazamiento y el otro un driver para corriente, entonces como el 7404 no soportaba toda la corriente que provenían de los led en ese momento decidí cambiar la lógica del programa/circuito y colocar los uln para que puedan soportar la corriente de los led.
nose si salde tu pregunta.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 16 de Septiembre de 2011, 15:16:09
lo que pasa es que creo que estas confundido el CI 7404 es una compuerta not que invierte  la señal en su entrada y la da en la salida osea si tengo un 1 en la entrada en la salida tendré un 0 por eso fue la pregunta que te hice en el pos anterior para que lo utilizabas si el uln hacia eso también el registro de desplazamiento que usaste creo que fue el 74hc164 el que esta en la simulación

yo creo que lo que tu hiciste fue conectar la salida de los 74hc164 a la entrada de los uln y las salidas de los uln  a las columnas de la matriz de led o me equivoco. si me pudieras aclarar esta duda  te lo agradecería
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 16 de Septiembre de 2011, 21:32:27
no entendi porque interpreté el CI7404 que dices tu con el 74hc164. lo que dices en el segundo parrafo es correcto.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 19 de Septiembre de 2011, 19:08:38
el pin 10 del uln va a 5v verdad o va a tierra. es que ya tengo los componentes para empezar a realizar tu matriz y la are de 7x64 ya modifique algunas lineas del código que eran necesaria y en la simulación corre perfecto ahora a ver si sale de bien en la parte real me urge lo de pin 10 del uln
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 19 de Septiembre de 2011, 20:26:18
el pin nº 10 va a a 5v...

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 23 de Septiembre de 2011, 21:08:31
el pin nº 10 va a a 5v...

Saludos.-

una pregunta que fuente utilizaste para alimentar tu matriz. una de  de 5V y cuanto amperios???
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 24 de Septiembre de 2011, 00:29:08
yo le puse un trafo de 2 A (era el que tenia :D) pero el lm7805 soporta hasta 1.5A pero igual no llegue a consumir mucho.... con decirte que el lm7805 sin disipador comenzaba a entibiar, va un poquito mas de tibio pero iba bien, pero de todas formas le coloque un disipador ya que iba a estar en una caja cerrada y para evitar problemas por calentamiento interno/externo.


Saludos... cuando entres a armarlo subi algunas imagenes si quieres :)

Título: Re: Mi nueva matriz de led
Publicado por: papoluca67 en 24 de Septiembre de 2011, 16:17:34
 :P Te felicito en verdad, mas por la soldadura que te quedo muy bien. Una sola sugerancia, para cualquier flickering o parpadeo en los led debes colocar un condensador de 0.1 uf en cada 74HC164, desde la linea de voltaje a tierra con el fin de defasar los pulsos entrante y el voltaje de alimentacion. Y eso de cambiar los 7404 por ULN es lo correcto, debiste cambiar algo en el programa ya que estos son inversores. Por los demas, muy bien documentaddo todo.  pa' lante muchacho.
Título: Re: Mi nueva matriz de led
Publicado por: kevinj152 en 25 de Septiembre de 2011, 00:11:17
yo le puse un trafo de 2 A (era el que tenia :D) pero el lm7805 soporta hasta 1.5A pero igual no llegue a consumir mucho.... con decirte que el lm7805 sin disipador comenzaba a entibiar, va un poquito mas de tibio pero iba bien, pero de todas formas le coloque un disipador ya que iba a estar en una caja cerrada y para evitar problemas por calentamiento interno/externo.


Saludos... cuando entres a armarlo subi algunas imagenes si quieres :)



ok esta bien subire unas fotos y cuando lo termino subo el video para que lo vean y todos los archivos de programacion que tu hiciste y yo modifique con las placa de circuito impreso y simulacion para que el que el que quiera hacerlo se pueda copiar.

y bueno yo tengo ganas ponerle una fuente de 4 Amp. ya que mi matriz es mas grande y tiene mas consumo pero tendria que hacer la fuente yo vi una en una pagina de internet que con el lmj7805 y un tip que servia como driver para controlar corrientes mayores al que puede controlar el lm7805 se podia hacer una teniendo los mismos 5v regulados a la salida. bueno voy a investigar un poco mas y cualquier duda estaré molestándote

Título: Re: Mi nueva matriz de led (Mas Adelantos)
Publicado por: edgarantoniobazan en 30 de Septiembre de 2011, 14:04:17
no te preocupes asi dicen de todos los electronicos y mas cuando son genios jajaja saludos
Título: Re: Mi nueva matriz de led
Publicado por: soymoe en 01 de Octubre de 2011, 12:10:02
Te felicito por tu proyecto. Yo programo generalmente en asm pero las ventajas del C son notables para este tipo de cosas asi que voy a ver si me hago uno en c. el problrma es que no consigo el registro de desplazamiento. Saludos desde aqui.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 01 de Octubre de 2011, 13:50:12
el tema de los registros de desplazamiento no es obligatorio usar ese que indico yo, puedes optar por cualquier otro mientras le hagas la adaptación correspondiente.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 06 de Octubre de 2011, 03:31:30
HOLA korpaz yo de nuevo por aqui es q tengo serios problemas pues monte todo y programe el pic pero no me arranca le coloque el cristal de 20Mhz y master clear
pero tengo dudas en el momento de programar pues yo lo estoy haciendo en un pickit2 y no se si los fuses estan bien acomodados ¿en que lo programo usted? y si me puedes hechar una manito te agradezco mucho

hasta pronto
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 06 de Octubre de 2011, 11:44:47
Yo lo programé en el clasico programador JDM, que pic estas usanado? tambien el 16f877a? proba con falsos contactos o cosas asi, tambien debes fijarte en las salidas del pic si hacen algo.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 06 de Octubre de 2011, 11:56:13
hola korpaz pues en realidad acabe de programarlo pero todavia no me da pero tengo algo de respuesta pero a un nivel muy bajo pues ya me sale señal por los pines b0 al b7 pero con un voltaje minimo y no se q pasa la modificacion q hice fue acomodar los fuses por separado ¿leiste el mensaje privado que te envie?
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 06 de Octubre de 2011, 12:06:44
a que te refieres con un voltaje minimo?, como tienes conectados las salidas del pic?
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 06 de Octubre de 2011, 20:44:46
bueno te cuento q ya me funciono pero  la unica forma de hacerlo fue programandolo en el jdm serial que tenia por ahi guardado y dañado. toco arreglarlo e intentar hacerlo funcionar.         bueno en finales me funciono pero me gustaria hacerlo funcionar con el pickit 2.  ¿como hago para poner config con un valor de 3e72 que es con el valor que me funciona con el otro programador? pues cuando lo hago con el pickit 2 me pone config con un valor de 3f72 y no lo deja funcionar pues no se tampoco hacerlo por el lado de los fuses pues no se como colocar el WRT me saca error.
bueno te agradezco cualquier colaboracion  feliz noche
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 06 de Octubre de 2011, 21:39:16
la verdad que nunca programe con ese tipo de programador, siempre lo he hecho con el jdm... no sabria decirte como hacer con el pickit.


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: Suky en 06 de Octubre de 2011, 21:43:53
bueno te cuento q ya me funciono pero  la unica forma de hacerlo fue programandolo en el jdm serial que tenia por ahi guardado y dañado. toco arreglarlo e intentar hacerlo funcionar.         bueno en finales me funciono pero me gustaria hacerlo funcionar con el pickit 2.  ¿como hago para poner config con un valor de 3e72 que es con el valor que me funciona con el otro programador? pues cuando lo hago con el pickit 2 me pone config con un valor de 3f72 y no lo deja funcionar pues no se tampoco hacerlo por el lado de los fuses pues no se como colocar el WRT me saca error.
bueno te agradezco cualquier colaboracion  feliz noche

El PICKIT2 lo podes usar directamente desde MPLAB, y en el código se puede establecer la palabra de configuración. Por ejemplo en ASM para un 16F628A:

__CONFIG   _HS_OSC & _PWRTE_ON & _WDT_OFF & _CP_OFF & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _DATA_CP_OFF

Solo hay que leer el datasheet para determinar la configuración adecuada para cada caso.


Saludos!
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 06 de Octubre de 2011, 23:48:07
ok gracias suky por responder pero estamos usando un 16f877a y en ccs y ahi lo utilizo con fuses
#fuses HS, NOWDT, NOPROTECT, NOLVP, PUT, BROWNOUT, NODEBUG, CPD, pero cuando coloco nowrt no me funciona
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 07 de Octubre de 2011, 00:44:16
otra pregunta es que tengo dudas respecto a la conexion del cable serial pues no se si va directamente conectado al micro o si tiene que se por medio de algun transistor? y si el pin 3 del db9 va con el 25 o el 26?  porq no me responde a las señales lo he conectadode una yotra forma el cable serial y no me responde solo saca las señales del del puerto b q es la de los 8 bits bueno cualquier cosa porfavor ayudame gracias :-/
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 07 de Octubre de 2011, 11:47:18
para hacer la comunicacion entre el pic y la pc, debes de poner entre medio un MAX232 para que se puedan conectar, o sino hay algunos circuitos en internet para hacer la adaptacion en la placa.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 07 de Octubre de 2011, 22:05:30
ok entonces si no coloco el max232 entonces no hay comunicacion entre el pc y el pic?


voy a colocarlo y ensayare  gracias.


korpaz gracias por ser siempre tan atento con el foro.
Título: Re: Mi nueva matriz de led
Publicado por: Suky en 07 de Octubre de 2011, 22:52:26
Citar
ok gracias suky por responder pero estamos usando un 16f877a y en ccs y ahi lo utilizo con fuses

Es exactamente lo mismo, solo que con otras sentencias. Hay que revisar el *.h y el datasheet para configurarlo adecuadamente.

ok entonces si no coloco el max232 entonces no hay comunicacion entre el pc y el pic?

Vas a quemar los pines I/O del PIC  :? RS232 de la PC ronda entre +/-12V, y en el PIC necesitas niveles TTL (0-5V)  ;-)
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 07 de Octubre de 2011, 23:22:44
tienes por ahi un esquema de la conexion del rs232 y el 16f877a (suky)
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 08 de Octubre de 2011, 00:08:17
en muchos sitios hay información sobre eso. http://picrobot.blogspot.com/2010/09/max232_20.html

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: Suky en 08 de Octubre de 2011, 10:33:08
en muchos sitios hay información sobre eso. http://picrobot.blogspot.com/2010/09/max232_20.html

Saludos.-

Coincido, hay que utilizar el buscador  :tongue:
Título: Re: Mi nueva matriz de led
Publicado por: Zofim239 en 07 de Noviembre de 2011, 22:19:08
hago el aporte, gracias a Diego E. para el programa en VB.
aqui una imagen
(http://img121.imageshack.us/img121/1441/carnc.png)

ahora se me ocurre una sugerencia pero voy a tratar de digerirla sobre el programa de la matriz

yo hago el barrido de la matriz por columnas...
osea:

        tengo 36 columnas
esta es la sub-rutina donde hago el muestreo.
Código: [Seleccionar]
void display(void) //rutina general que refresca las columnas de la matriz
{

int i;
mof=0x00;
output_low(PIN_D0); //Desactivo Registro
delay_us(2);
output_high(PIN_D0); //Activo Registro
delay_us(2);
output_high(PIN_D1); //Dato en uno
delay_us(2);


for(i=0;i<36;i++)
{
portb = 0;
delay_us(2);
output_high(PIN_C3); //Activo el clock
delay_us(2);
output_low(PIN_C3); //Desactivo el clock
delay_us(2);
portb = columnas[i]; //Cargo en el puerto b el valor que alla en la cadena COLUMNAS
delay_us(500);
output_low(PIN_D1); //Dato en cero
delay_us(2);

}


}

demoro en hacer esto... aproximadamente: 19ms de los cuales se soluciona el parpadeo si disminuyo los 500 ms del penúltimo delay, ahora mi intención seria hacer el barrida pero por filas, ya que leí en algunos otros post, que aumenta el brillo del led y lo hago en menos tiempo... ahora esa es la cuestión...
ahora estoy solo, asi que puedo analizar tranquilo la situación, ya en un rato subo mas detalles :)



Hola, también estoy metido en esto de los paneles de led y en cuanto a la interfaz en VB tengo unos problemillas... podrías compartir tu código, ya que quiero hacerles unos cambios.
Saludos!
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 21 de Noviembre de 2011, 20:31:44
capaz que ya solucionaste el problema, si buscas en este post esta el link con el código fuente en vb 6.

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: aldaris565 en 25 de Noviembre de 2011, 17:13:29
Gracias Korpaz muy buen aporte.. una pregunta.. como podria hacer para yo mismo agregarle un texto (en el programa) y que este me aparezca siempre....y luego aparezca la frase que yo escriba a travéz de la PC...algo asi como un parpadeo... la frase, termina la frase y vuelve al texto en el programa...
Título: Re: Mi nueva matriz de led
Publicado por: soymoe en 30 de Diciembre de 2011, 18:01:47
como hacen para controlar el cartel con el teclado de la PC? porque dice que esta hecho con el PIC16f628a.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 31 de Diciembre de 2011, 11:22:53
Gracias Korpaz muy buen aporte.. una pregunta.. como podria hacer para yo mismo agregarle un texto (en el programa) y que este me aparezca siempre....y luego aparezca la frase que yo escriba a travéz de la PC...algo asi como un parpadeo... la frase, termina la frase y vuelve al texto en el programa...
deberías investigar un poco el código, yo en este momento no me acuerdo de mucho, pero deberías crear dos array, uno que sea el mensaje que siempre quieres ver y el otro que sea dinámico, como el que uso para poder escribir los mensajes.-

como hacen para controlar el cartel con el teclado de la PC? porque dice que esta hecho con el PIC16f628a.

por aqui http://www.todopic.com.ar/foros/index.php?topic=11910.0 puede haber algo que te interese, luego para adaptarlo es un poco de maña nada mas.-


Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: vdiazg en 30 de Enero de 2012, 22:20:29
 Korpaz excelente proyecto, lo he estado siguiendo paso a paso en todas las paginas, pero llegue un poco tarde, como sabras han cerrado megaupload, si no me equivoco tu subiste tus archivos en ese servidor por eso estan perdidos; seria posible que pudas subirlos nuevamente para estudiarlos con mas detalle, en especial la simulacion

Muchas gracias.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 31 de Enero de 2012, 15:40:57
tienes razón vdiazg, ya me había olvidado de ese detalle, ahora los subo a otro servidor.



-----------------

aquí subo el link:

http://www.mediafire.com/?7clm11c5z6l06a1 (http://www.mediafire.com/?7clm11c5z6l06a1)
Título: Re: Mi nueva matriz de led
Publicado por: vdiazg en 31 de Enero de 2012, 18:15:57
Mil Gracias Korpaz, lo voy a analizar, armar y subo fotos. excelente proyecto  ;-)
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 04 de Febrero de 2012, 18:39:00
Dale esperamos todos a que puedas compartir tu proyecto :)
Título: Re: Mi nueva matriz de led
Publicado por: mafig2112 en 05 de Marzo de 2012, 23:57:51
hola korpaz que barbara te quedo tu matriz, tengo unas dudas sobre como se controla.

1. como haces que por medio de tu soft se mueva o se quede quieto???
2. tendras el archivo fuente de tu soft???

gracias :)

lo que trato es de poder poner varios mensajes de 5, que aparezcan 5 letras y luego otras 5 diferentes etc.. pero no se si es por medio del soft publik o del codigo .hex en el micro
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 12 de Marzo de 2012, 21:11:22
hola korpaz que barbara te quedo tu matriz, tengo unas dudas sobre como se controla.

1. como haces que por medio de tu soft se mueva o se quede quieto???
2. tendras el archivo fuente de tu soft???

gracias :)

lo que trato es de poder poner varios mensajes de 5, que aparezcan 5 letras y luego otras 5 diferentes etc.. pero no se si es por medio del soft publik o del codigo .hex en el micro


1 - cuando yo envió el dato de la pc al micro lo que hago es lo siguiente, primero envió un caracter ascii que correspondería a la tecla "enter" luego envió otro caracter que le indica al micro si debe hacerlo fijo o marquesina al texto, después envio la cadena de texto, y por ultimo el carácter ascii "escape" para terminar con la carga, luego demora unos segundos en cargar los datos en la eeprom del pic, entonces si lo apago y lo vuelvo a encender ya me queda cargado el mensaje.-

2 - Si verificas en el post deje un link para poder descargar todo.

Luego a lo que quieres hacer tu deberás modificar algunas cositas para que funcione a tu manera, pero tranquilo que puede ser mucho el código pero no es tan difícil su interpretación.

Espero que puedas postear mas adelante tus logros.-

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: 2xman en 22 de Marzo de 2012, 14:27:08
buenas chicos,mirad e empezao en esto y tal y me gustan mucho vuestros proyectos,pero estoy un poco perdido,esto es lo que llevo a ver si me podeis echar una mano,quiero poner 6 sensores hall y hacer en una matriz o display de 7 segmentos poner 1,2,3,4,5 y R,esto es la chapuza k tengo de momento.Deberia de en cada entrada activarse cuando haga contacto y poner el numero correspondiente o cuando no haga contacto en ningun lado que ponga N,a vers i me podeis ayudar porfavor,un saludo y gracias

http://www.mediafire.com/?kj5p05gk8s6m2bd
Título: Re: Mi nueva matriz de led
Publicado por: hercules en 23 de Marzo de 2012, 18:47:02
Bueno amigos este tema es muy  interesante, no se si seria tan amables de  indicar al programar el pic 16f877A y al  probar en la matriz, al inicio muestra algo en el panel .
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 23 de Marzo de 2012, 21:52:49
Bueno amigos este tema es muy  interesante, no se si seria tan amables de  indicar al programar el pic 16f877A y al  probar en la matriz, al inicio muestra algo en el panel .
No entiendo tu planteo hercules, que es lo que quieres hacer?

Saludos.-
Título: Re: Mi nueva matriz de led
Publicado por: hercules en 25 de Marzo de 2012, 12:17:31
 Resulta que hice el panel de led, después de  programar el microprocesador 16f877A monte en la placa y nada  se ven en la matriz de led  , por esa razón quería saber  si después de programar se  ve algo en la matriz o primero hay que enviar por puerto com  para que aparezca el mensaje. Le agradeceré por su comentario.
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 25 de Marzo de 2012, 12:48:49
Resulta que hice el panel de led, después de  programar el microprocesador 16f877A monte en la placa y nada  se ven en la matriz de led  , por esa razón quería saber  si después de programar se  ve algo en la matriz o primero hay que enviar por puerto com  para que aparezca el mensaje. Le agradeceré por su comentario.
Si me mente no falla hercules, la primera vez que se inicia el cartel, no deberia aparecer nada, luego de que le agregues información entonces ahi si la próxima vez que lo enciendas aparecera el mensaje.
No recuerdo ahora, pero si modificas la eeprom del micro antes de grabarla podes ya agregar un mensaje de entrada.
Título: Re: Mi nueva matriz de led
Publicado por: hercules en 30 de Marzo de 2012, 20:51:43
Bueno amigo korpaztk agradezco por su información  de modificar la eeprom del micro antes de grabarla .es lo que hice y ya me sales las letras en el panel de la simulación en proteus   lo que estoy asiendo es un nuevo programador para gravar mi pic 16f877A.
También quería preguntarle como embio los datos de la PC por el puerto com1 ala placa de la matriz de led ya tengo el programa de Virtual Serial Port Driver v6. Le quedare muy agradecido por su imformacion.

Título: Re: Mi nueva matriz de led
Publicado por: AxOx en 04 de Julio de 2012, 14:12:01
hola! estimado amigo...siguiendo tus aportes...aun no comprendo dos cosas...
1.- en la simulacion pones para las columnas 5 registros y en las salidas de ellos pones 7404...en la realidad sigue siendo lo mismo o es k pones ULN´s2003 en vez de los 7404???
2.- para las columnas el circuito mostrado me dice que uno es el pinout del pic (que vendria a ser las filas supongo) y en el catodo del led me dice pin del ULN( que supongo que es el pin de las columnas) entonces ahi esta la interrogante...
entonces ahi esta la interrogante si son 7404 ¿que ULN es ese pin?....porfavor respondame...
Título: Re: Mi nueva matriz de led
Publicado por: hercules en 11 de Agosto de 2012, 16:29:50
 Amigo korpaztk  ya termine la matriz y me quedo ok. Te felicito y mi agradecimiento  por tu programa  ya que otros foreros  también aprendieron igual que yo  al querer hacer un letrero como posteaste. Lo que  tengo una duda es como hiciste el programa en visual Basic. Quisiera  ver el programa (visual Basic) o como es la rutina una explicación. Para tener  una idea como se comunica  por el puerto com1 y la matriz si no es pedirle  mucho.
Título: Re: Mi nueva matriz de led
Publicado por: jamasari en 26 de Agosto de 2012, 12:34:56
Hola de nuevo yo, Korpaz me gustaria saber si usted ya pudo mejorar la velocidad cuando uno envia el mensaje desde el pc que se demora un ratico en salir el mensaje o si eso no tiene mejoria???
gracias de nuevo por tu inmensa ayuda

 
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 04 de Septiembre de 2012, 16:38:03
La verdad que habría que probar con disminuir la velocidad de grabado en la memoria, o agregando una memoria i2c pequeña y ahí podemos conseguir mayor velocidad :)

Saludos
Título: Re: Mi nueva matriz de led
Publicado por: yako en 22 de Noviembre de 2012, 15:39:32
amigo me podrias enseñar como conectar el registro de desplazamiento al pic por favor no entiendo bien esa parte
Título: Re: Mi nueva matriz de led
Publicado por: VOLTIO en 27 de Enero de 2013, 16:42:34
perdon por la pregunta, pero todo este proyecto se puede hacer en asm ?? tambien me parece bueno poder agregarle una memoria externa para poder hacer mas columnas y mas largos los mensajes, que opinan ? lo del asm es porque quienes tenemos poco conocimiento y ensima en asm estamos al horno , jajaa.
Gracias a todos , feliz año 2013 a todos, dejo mi mail por si alguien quiere contactarse.
rudafi@yahoo.com.ar

Atte.
Ruben
Título: Re: Mi nueva matriz de led
Publicado por: korpaztk en 27 de Enero de 2013, 23:12:28
perdon por la pregunta, pero todo este proyecto se puede hacer en asm ?? tambien me parece bueno poder agregarle una memoria externa para poder hacer mas columnas y mas largos los mensajes, que opinan ? lo del asm es porque quienes tenemos poco conocimiento y ensima en asm estamos al horno , jajaa.
Gracias a todos , feliz año 2013 a todos, dejo mi mail por si alguien quiere contactarse.
rudafi@yahoo.com.ar

Atte.
Ruben



si te fijas bien en el foro hay un usuario si no me equivoco DIEGO E que ha colaborado muchisimo para que yo pueda hacer este cartel, ha hecho 2 versiones una en asm y otra en C....
lo de agregar mas columnas es simplemente modificando unas variables en el programa, lamentablemente hace unos meses que no dispongo de un ordenador para poder programar y navego desde una tablet unicamente (andamos pobres je), aunque el riesgo de agregar mas columnas y variando algunas variables del programa ocasiona de que la luminosidad disminuya, y ahi habria que hacer mas modificaciones para poder utilizar varios pines mas del pic, para manejar en paralelo mas led.-

Saludos.-