encender rele segun tiempo

El problema de ese código, si no me equivoco ya que es muy parecido al ejemplo de blinkwithoutdelay, para adaptarlo al mio es que ahora mismo proboco el encendido del led pulsando un botón y el apagado es automático es decir que no se vuelve a pulsar el botón por lo tanto no entra en el if de comprobacion de estado, no se si me explico.

 if((ircode == 3108437760)){  //pulsado el boton del led1
    if (tiempo > 0){  
           digitalWrite(led, HIGH); 
           Serial.println("encendio");
           delay(tiempo);
           digitalWrite(led, LOW); 
           Serial.println("apagado");
           ircode = ir.read() ;
  }
   else 
     Serial.println("El tiempo de encendido es 0");
       
} 
if((ircode == 3091726080)){//pulsado el boton del led2
         digitalWrite(rojo, HIGH); 
         Serial.println("encendio rojo");
         delay(tiempo);
         digitalWrite(rojo, LOW); 
         Serial.println("apagado rojo");
         ircode = ir.read() ;
}

Si falta alguna llave es que he quitado de mas para dejar lo minimo posible.

Gracias de nuevo