• Domingo 28 de Abril de 2024, 19:49

Autor Tema:  Detectar Tiempo Transcurrido Entre Pulsaciones  (Leído 1471 veces)

ayasystems

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Detectar Tiempo Transcurrido Entre Pulsaciones
« en: Lunes 7 de Mayo de 2007, 12:11 »
0
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
  1.  
  2.  
  3. //Programa de control de espejos y ventanillas
  4. //Autor: Ayasystems 06/05/07
  5.  
  6. #include <12C508.h>
  7. #fuses INTRC,NOWDT,NOPROTECT, NOMCLR
  8. #use delay(clock=4000000)
  9. #define GP0 PIN_B0 //Relé sacar espejos
  10. #define GP1 PIN_B1 //Relé meter espejos
  11. #define GP2 PIN_B2 //Pulso cierre
  12. #define GP3 PIN_B3 //Pulso apertura
  13. #define GP4 PIN_B4
  14. #define GP5 PIN_B5
  15.  
  16.  
  17. void MirrorIn(void){
  18.    output_high(GP1);
  19.    delay_ms(4000); //Esperamos 4 seg. a que se metan
  20.    output_low(GP1);
  21. }
  22.  
  23. void MirrorOut(void){
  24.    output_high(GP0);
  25.    delay_ms(4000); //Esperamos 4 seg. a que salgan
  26.    output_low(GP0);
  27. }
  28.  
  29. main() {
  30.    char primer_pulso = 0;
  31.    char segundo_pulso = 0;
  32.    char contador = 0;
  33.    
  34.    output_low(GP0);
  35.    output_low(GP1);
  36.    output_low(GP2);
  37.    output_low(GP4);
  38.    
  39.    while (TRUE){
  40.       contador = 0;
  41.       if (input(GP2)){//pulsado cierre
  42.          //Detectar si han pulsado dos veces en menos de dos segundos
  43.          while (contador<25000){//Calcular el valor para que esté un segundo dando vueltas al While
  44.             if (input(GP2)){
  45.                segundo_pulso = 1;  
  46.             }//if input(GP2)
  47.          }//fin while
  48.          if (segundo_pulso = 1){
  49.             MirrorIn();//Metemos los espejos
  50.          }//if segundo_pulso
  51.       }//if input(GP2)  
  52.      
  53.      
  54.       if (input(GP3)){//pulsado abrrir
  55.          //Detectar si han pulsado dos veces en menos de dos segundos
  56.          while (contador<25000){//Calcular el valor para que esté un segundo dando vueltas al While
  57.             if (input(GP3)){
  58.                segundo_pulso = 1;  
  59.             }//if input(GP3)
  60.          } //fin while  
  61.          if (segundo_pulso = 1){
  62.             MirrorOut();//Sacamos los espejos
  63.          }//segundo_pulso
  64.       }//input(GP3)  
  65.    }//while TRUE Bulce infinito
  66. }//main
  67.  
  68.