Como hacer que se apague una salida, si mantengo encendida una entrada

Hola a todos:
Estoy trabajando en un proyecto que consiste en la lectura de un sensor infrarrojo, que funciona como un interruptor( señalado como entrada) para prender y apagar un led(señalado como salida). El punto es que el sensor se acciona y el led debe prender una cierta cantidad de tiempo y luego apagarse, el sensor sigue accionado (o sigue prendido)
he probado de varias maneras pero no lo consigo, no conozco a fondo el lenguaje c. Lo único que logro es que sea intermitente, habrá alguna función que permita esto?

programa:
const int pinsensor = 2;
const int pinled = 3;

void setup()
{

pinMode(pinled, OUTPUT);
pinMode(pinsensor, INPUT);
digitalWrite(pinled,LOW);
}
void loop()
{
while(digitalRead(pinsensor) == LOW)
{
digitalWrite(pinrele,HIGH);
delay(100);
digitalWrite(pinrele,LOW);
delay(300);
}
}

Todo lo que se ejecuta dentro de loop, lo hace indefinidamente, por eso parpadea.
define a una variable count

bool pasada = LOW;
const int pinsensor = 2;
const int pinled = 3;

void setup() {

pinMode(pinled, OUTPUT);
pinMode(pinsensor, INPUT);
digitalWrite(pinled,LOW);
}

void loop() {

if (digitalRead(pinsensor) == LOW && !pasada) {
pasada = TRUE;
digitalWrite(pinrele,HIGH);
delay(100);
digitalWrite(pinrele,LOW);
delay(300);
} else pasada = TRUE;

// falta alguna condicion que haga
// pasada = LOW; y reestablezca la situación.
// imagino que se da cuando el sensor IR se pone en 1 de nuevo.
// eso es lo que puse con else pasada = TRUE;
}

si el sensor vuelve a 1, reseteamos pasada y esta listo para un nuevo delay On OFF

Gracias, el programa funciona, prende y apaga el led(una vez) mientras el sensor sigue prendido, el punto es que cuando apago el sensor y lo vuelvo a encender el led no hace nada.

la funcion:
else pasada=true; // cuando la coloco no prende el led.

debo a cotar que lo estoy visualizando con una pantalla lcd 16*2 y lo tengo en la función Switch case con while paso a mostrar el codigo.

enMenu = true;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(tituloMenu);
lcd.setCursor(0,1);
switch (x)

case 0:
while(key == 2)

if(digitalRead(pinsensor)==LOW&&!pasada)
{
pasada=true;
digitalWrite(pinrele,HIGH);
delay(100);
digitalWrite(pinrele,LOW);
delay(300);
}
// sin esta declaracion (else pasada>true;) el led prende y apaga una sola vez
lcd.setCursor(0,1);
lcd.print("Presione Enter");
break;

Me equivoqué
corrige donde dice

if(digitalRead(pinsensor)==LOW&&!pasada)
{
pasada=true;
digitalWrite(pinrele,HIGH);
delay(100);
digitalWrite(pinrele,LOW);
delay(300);
} else pasada = LOW; // agrega esta linea para que se rearme cuando el sensor se pone en HIGH