Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Lucas Trento
- //CONTADOR DE FLANCOS DESCENDENTES
- //Ajustar la cantidad de destellos de un Blink multidestellos conectado a la salida,
- //de modo que coincida con la cantidad de flancos descendentes procesados en la entrada.
- //Los flancos deberán procesarse pasado cierto tiempo de ocurrido último.
- #define LED_TEST 13
- #define CONFIGURAR_LED pinMode(LED_TEST, OUTPUT)
- #define ENCENDER_LED digitalWrite(LED_TEST, HIGH)
- #define APAGAR_LED digitalWrite(LED_TEST, LOW)
- //Salida
- #define PIN_SALIDA 12
- #define CONFIGURAR_SALIDA pinMode(PIN_SALIDA, OUTPUT)
- #define ACTIVAR_SALIDA digitalWrite(PIN_SALIDA, HIGH)
- #define DESACTIVAR_SALIDA digitalWrite(PIN_SALIDA, LOW)
- //Entrada
- #define PIN_ENTRADA 7
- #define CONFIGURAR_ENTRADA pinMode(PIN_ENTRADA, INPUT)
- #define ENTRADA_ACTIVADA (digitalRead(PIN_ENTRADA)==HIGH)
- #define MS_ESTADO 500
- void setup()
- {
- CONFIGURAR_LED;
- CONFIGURAR_SALIDA;
- CONFIGURAR_ENTRADA;
- }
- void loop()
- {
- Led_Test();
- Flancos();
- delay(1);
- }
- void Flancos(void)
- {
- static bool entrada_activada_ant = 0;
- static bool led_encendido=0;
- static unsigned long millis_ant=0,millis_tiempo_flancos=0,millis_entrada_activada=0;
- static unsigned long tpo_espera=0,tpo_transcurrido=2000;
- static unsigned char pulsos_restantes=0;
- const unsigned int t_pulso=300, t_pausa=1000;
- static int cont_pulsos=1,cont=0;
- // Ajustar la cantidad de destellos de un Blink multidestellos conectado a la salida,
- //de modo que coincida con la cantidad de segundos transcurridos
- // entre un flanco ascendente y descendente en la entrada.
- /* if(cont)
- {
- if(millis() - millis_tiempo_flancos > tpo_transcurrido)
- {
- cont_pulsos=cont;
- cont=0;
- }
- }*/
- /* if(cont)
- {
- if((millis()- millis_entrada_activada)%1000==0) cont++;
- }*/
- if(ENTRADA_ACTIVADA)
- if(millis()- millis_entrada_activada > 1000)
- {
- cont++;
- millis_entrada_activada=millis();
- }
- if(millis() - millis_ant > tpo_espera )
- {
- millis_ant = millis();
- {
- if(led_encendido)
- {
- pulsos_restantes--;
- if(pulsos_restantes) tpo_espera=t_pulso;
- else tpo_espera=t_pausa;
- }
- else
- {
- if(!pulsos_restantes)
- {
- pulsos_restantes=cont_pulsos;
- }
- tpo_espera=t_pulso;
- }
- led_encendido=!led_encendido;
- if(led_encendido) ACTIVAR_SALIDA;
- else DESACTIVAR_SALIDA;
- }
- }
- // flanco ascendente
- if(ENTRADA_ACTIVADA == entrada_activada_ant) return;
- entrada_activada_ant = ENTRADA_ACTIVADA;
- if(!ENTRADA_ACTIVADA)
- {
- cont_pulsos=cont;
- cont=0;
- return;
- }
- millis_entrada_activada=millis();
- }
- void Led_Test(void)
- {
- static bool estado=0;
- static unsigned long millis_ant=0;
- if(millis()-millis_ant < MS_ESTADO) return;
- millis_ant=millis();
- estado = !estado;
- if(estado) ENCENDER_LED;
- else APAGAR_LED;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement