Buenas a todos,
recurro a vosotros para pediros un poco de ayuda
Quiero hace un circuito para controlar el plegado de los espejos del coche remotamente.
Ya he visto como decirle al pic que le he dado al botón de cerrar/abrir del mando a distancia del coche.
Mi idea es que si en dos segundos se producen dos pulsaciones de cierre se pleguen los espejos y si se dan dos de apertura en el intervalo de dos segundos pues que salgan.
Con mis pobres conocimientos de programación de pics he hecho esto, a ver que os parece:
//Programa de control de espejos y ventanillas
#include <12C509.h>
#fuses INTRC,NOWDT,NOPROTECT, NOMCLR
#use delay(clock=4000000)
#define GP0 PIN_B0 //Relé sacar espejos
#define GP1 PIN_B1 //Relé meter espejos
#define GP2 PIN_B2 //Pulso cierre
#define GP3 PIN_B3 //Pulso apertura
#define GP4 PIN_B4
#define GP5 PIN_B5
void MirrorIn(void){
output_high(GP1);
delay_ms(4000); //Esperamos 4 seg. a que se metan
output_low(GP1);
}
void MirrorOut(void){
output_high(GP0);
delay_ms(4000); //Esperamos 4 seg. a que salgan
output_low(GP0);
}
main() {
char primer_pulso = 0;
char segundo_pulso = 0;
char contador = 0;
output_low(GP0);
output_low(GP1);
output_low(GP2);
output_low(GP4);
while (TRUE){
contador = 0;
if (input(GP2)){//pulsado cierre
//Detectar si han pulsado dos veces en menos de dos segundos
while (contador<25000){//Calcular el valor para que esté un segundo dando vueltas al While
if (input(GP2)){
segundo_pulso = 1;
}//if input(GP2)
}//fin while
if (segundo_pulso = 1){
MirrorIn();//Metemos los espejos
}//if segundo_pulso
}//if input(GP2)
if (input(GP3)){//pulsado abrrir
//Detectar si han pulsado dos veces en menos de dos segundos
while (contador<25000){//Calcular el valor para que esté un segundo dando vueltas al While
if (input(GP3)){
segundo_pulso = 1;
}//if input(GP3)
} //fin while
if (segundo_pulso = 1){
MirrorOut();//Sacamos los espejos
}//segundo_pulso
}//input(GP3)
}//while TRUE Bulce infinito
}//main
Un amigo me hablo que sería mucho mejor hacerlo usando el contador interno del pic para determinar el tiempo entre pulsaciones pero la verdad es que no se como va eso....
Que os parece, mejorable? Me echais un cable??
Un saludo y gracias!