Monitoração de pulso.

Olá pessoal, como eu crio um cod para monitorar um pulso de 1hz, se o pulso sessar será ativada uma saida por 2 segundos depois desliga.
Já tentei algumas coisas só que o problema está sendo com o tempo de monitoração.

Você tem que usar uma interrupção e contar o tempo entre cada um dos pulsos, se passar mais de 2 segundos ele liga o pino por 2 segundos

volatile unsigned int UltimoPulso; 
int Pino_PULSO = 2;
int Pino_Alerta = 3;

void FuncSensor()
{
  UltimoPulso = millis();
}

void setup()
{
  pinMode(Pino_PULSO, INPUT);
  pinMode(Pino_Alerta, OUTPUT);
  attachInterrupt(0, FuncSensor, RISING);
  UltimoPulso = millis();
  sei(); // habilita interrupção
}

void loop()
{
  if ((UltimoPulso + 1000) < millis())  
    {
    cli(); // desabilita Interrupção     
    digitalWrite(Pino_Alerta, HIGH);
    delay(2000);
    digitalWrite(Pino_Alerta, LOW);
    UltimoPulso = millis();
    sei(); // habilita Interrupção
    }
}

Esse é o mínimo do mínimo para fazer.
PS Usei o delay apenas para encurtar o código

Não entendi a função do pino_Pulso, como ele está sendo usado no programa?

luisandrade:
Não entendi a função do pino_Pulso, como ele está sendo usado no programa?

Assim, o AttachInterrupt liga a Interrupção 0, que monitora o PINO 2, o PINO_PULSO está configurado apenas para fazer o pinMode.