CCCPaste

BlinkMultidestello

//Ejemplo del Blink Multidestello
//12/05/20
////https://pastebin.com/EUeWirzt

#define PIN_LED            13
#define CONFIGURAR_LED     pinMode(PIN_LED, OUTPUT)
#define ENCENDER_LED       digitalWrite(PIN_LED, HIGH)
#define APAGAR_LED         digitalWrite(PIN_LED, LOW)

void setup() 
  {
  CONFIGURAR_LED;
  APAGAR_LED;
  }

void BlinkMultidestello(void)
  {
  const unsigned char c_pulsos=3;
  const unsigned int t_pulso=200;
  const unsigned int t_pausa=1000;
  
  static bool led_encendido=0;
  static unsigned long millis_ant=0;
  static unsigned long tpo_espera=0;
  static unsigned char pulsos_restantes=0;
  
  if(millis() - millis_ant < tpo_espera) return;
  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= c_pulsos;
      }    
    tpo_espera=t_pulso;
    }
    
  led_encendido = !led_encendido;

  if(led_encendido) ENCENDER_LED;
  else              APAGAR_LED;
  
  }

void loop()
  {
  BlinkMultidestello();
  }