Buenas a todos,
Estoy diseñando un circuito para el coche. Este se encargará de plegar los espejos eléctricos tras recibir dos pulsaciones de cierre seguidas en menos de dos segundos.
Se me ha ocurrido hacerlo de la siguiente manera, a ver si se os ocurre una forma más optima de contar el tiempo transcurrido entre pulsaciones
Graaaacias!!!!
//Programa de control de espejos y ventanillas
//Autor: Ayasystems 06/05/07
#include <12C508.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