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

[0] Índice de Mensajes

Ir a la versión completa