Advertisement
hidromotic

ContadorDeTiempoEntreFlancos_LUCAS

Jun 4th, 2020
1,474
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.33 KB | None | 0 0
  1. //Lucas Trento
  2. //CONTADOR  DE FLANCOS DESCENDENTES
  3. //Ajustar la cantidad de destellos de un Blink multidestellos conectado a la salida,
  4. //de modo que coincida con la cantidad de flancos descendentes procesados en la entrada.
  5. //Los flancos deberán procesarse pasado cierto tiempo de ocurrido último.
  6.  
  7. #define LED_TEST 13
  8. #define CONFIGURAR_LED      pinMode(LED_TEST, OUTPUT)
  9. #define ENCENDER_LED        digitalWrite(LED_TEST, HIGH)
  10. #define APAGAR_LED          digitalWrite(LED_TEST, LOW)
  11.  
  12. //Salida
  13. #define PIN_SALIDA 12
  14. #define CONFIGURAR_SALIDA   pinMode(PIN_SALIDA, OUTPUT)
  15. #define ACTIVAR_SALIDA      digitalWrite(PIN_SALIDA, HIGH)
  16. #define DESACTIVAR_SALIDA   digitalWrite(PIN_SALIDA, LOW)
  17.  
  18. //Entrada
  19. #define PIN_ENTRADA 7
  20. #define CONFIGURAR_ENTRADA  pinMode(PIN_ENTRADA, INPUT)
  21. #define ENTRADA_ACTIVADA   (digitalRead(PIN_ENTRADA)==HIGH)
  22.  
  23. #define MS_ESTADO          500
  24.  
  25. void setup()
  26.   {
  27.    CONFIGURAR_LED;
  28.    CONFIGURAR_SALIDA;
  29.    CONFIGURAR_ENTRADA;
  30.   }
  31.  
  32. void loop()
  33.   {
  34.    Led_Test();
  35.    Flancos();
  36.    delay(1);
  37.   }
  38.  
  39. void Flancos(void)
  40.   {
  41.     static bool entrada_activada_ant = 0;  
  42.     static bool led_encendido=0;
  43.     static unsigned long millis_ant=0,millis_tiempo_flancos=0,millis_entrada_activada=0;  
  44.     static unsigned long tpo_espera=0,tpo_transcurrido=2000;
  45.     static unsigned char pulsos_restantes=0;
  46.     const unsigned int t_pulso=300, t_pausa=1000;
  47.     static int cont_pulsos=1,cont=0;
  48.      
  49.  // Ajustar la cantidad de destellos de un Blink multidestellos conectado a la salida,
  50.  //de modo que coincida con la cantidad de segundos transcurridos
  51.  // entre un flanco ascendente y descendente en la entrada.
  52.  
  53.   /* if(cont)  
  54.    {
  55.      if(millis() - millis_tiempo_flancos > tpo_transcurrido)
  56.     {
  57.       cont_pulsos=cont;
  58.       cont=0;
  59.     }    
  60.    }*/
  61.   /* if(cont)
  62.    {                                        
  63.     if((millis()- millis_entrada_activada)%1000==0) cont++;
  64.     }*/
  65.  
  66.    if(ENTRADA_ACTIVADA)                                      
  67.     if(millis()- millis_entrada_activada > 1000)
  68.       {
  69.         cont++;
  70.         millis_entrada_activada=millis();
  71.       }
  72.      
  73.      if(millis() - millis_ant > tpo_espera )
  74.      {
  75.        millis_ant =  millis();
  76.          {
  77.           if(led_encendido)
  78.           {
  79.             pulsos_restantes--;
  80.             if(pulsos_restantes)   tpo_espera=t_pulso;
  81.             else                   tpo_espera=t_pausa;
  82.           }
  83.           else
  84.           {
  85.             if(!pulsos_restantes)
  86.             {
  87.               pulsos_restantes=cont_pulsos;
  88.             }
  89.             tpo_espera=t_pulso;
  90.           }
  91.          
  92.           led_encendido=!led_encendido;
  93.    
  94.           if(led_encendido)    ACTIVAR_SALIDA;
  95.           else                 DESACTIVAR_SALIDA;
  96.          }
  97.        }
  98.    
  99.     // flanco ascendente                    
  100.    if(ENTRADA_ACTIVADA == entrada_activada_ant) return;
  101.     entrada_activada_ant = ENTRADA_ACTIVADA;
  102.    
  103.     if(!ENTRADA_ACTIVADA)
  104.     {
  105.       cont_pulsos=cont;
  106.       cont=0;
  107.       return;
  108.     }
  109.  
  110.     millis_entrada_activada=millis();
  111.   }
  112.  
  113. void Led_Test(void)
  114.   {
  115.     static bool estado=0;
  116.     static unsigned long millis_ant=0;
  117.  
  118.     if(millis()-millis_ant < MS_ESTADO) return;
  119.     millis_ant=millis();
  120.  
  121.     estado = !estado;
  122.  
  123.     if(estado)       ENCENDER_LED;
  124.     else             APAGAR_LED;
  125.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement