Programación Específica > Programación en C
Detectar Tiempo Transcurrido Entre Pulsaciones
(1/1)
ayasystems:
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!!!!
--- Código: Text --- //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
Navegación
Ir a la versión completa