TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mxpxjgc en 27 de Noviembre de 2010, 07:38:36
-
Hola, este proyecto lo encontre e intente armarlo pero no funciona del todo bien. El proyecto es algo parecido a la llave electrónica, consiste en ingresar dos veces una clave (4-12 digitos), si es correcta se puede ingresar a la casa, pero si no lo es y haz intentado ingresar mas de tres veces el alarma se activará y te dirá que eres un intruso.
Mi problema es q al simularlo con en Proteus, la mitad de las teclas no responden y algunas funcionaliddes del programa no funcionan.
El programa esta en C, que recien lo estoy conociendo, lo compile con el CCS.
Les agradeceria muchisimo si me ayudarían a encontrar el error, y gracias por el tiempo q se estan tomando.
-
Hola mxpxjgc, lo primero que debes cambiar es como lees el teclado, lo haces midiendo la tensión en A0-A3, pero AN3 no lo tienes conectado.
La solución es hacerlo con input() y las entradas en digital, es mas rápido y mas preciso para este caso.
Aquí te pongo un ejemplo de como lo podrías hacer sin modificar el hardware. Lo único que debes cambiar son los diodos D1-D4 por resistencias.
int scanning()
{
int tec=0;
for(i=0;i<3;i++)
{
output_low(Pin_A0);
output_low(Pin_A1);
output_low(Pin_A2);
if(i==0)output_high(Pin_A0);
if(i==1)output_high(Pin_A1);
if(i==2)output_high(Pin_A2);
delay_us(10);
if(input(Pin_D0)) tec=i+1;
if(input(Pin_D1)) tec=i+4;
if(input(Pin_D2)) tec=i+7;
if(input(Pin_D3)) tec=i+10;
}
return (Tec);
}
Este ejemplo devuelve 0 si no se pulsa ninguna tecla y un valor del 1 al 12, dependiendo de la tecla pulsada.
Saludos.