Encendido de un LED y autoapagado pasado un tiempo

Buenas a todos.

Aunque es la primera vez que hago una consulta, llevo con Arduino un tiempo.
Tengo un problema que no consigo solucionar. Quiero programr el Arduino para que encienda un monito a través de un relé por medio de la señal power on de una fuente de alimentación.

La fuente de alimentación genera una señal de power ON para activar el resto de alimentaciones, esta señal que está en HIGH durante todo el tiempo que la fuente está encendida la voy a usar para introducirla como señal de activación a una entrada digital.
Lo que necesito es que cuando Arduino detecte este nivel HIGH constante, me de una salida HIGH en otro puerto, pero que dure solo 2 segundos, pasado este tiempo la salida tiene que ir a LOW aunque la entrada siga en HIGH. Posteriormente cuando la fuente de alimentación de un valor LOW en su salida de control, el Arduino debe de hacer lo contrario, es decir, cuando detecte un valor LOW en su entrada debe de activar a HIGH durante dos segundos la salida digital de antes y volver a estado LOW. La salida la tengo conectada a un relé a través de un transistor y lo que pretendo es enceder y apagar automáticamente el monitor al enceder el ordenador.
Le he dado muchas vueltas pero no consigo apagar el LED pasado ese tiempo.
Si alguien puede darme alguan idea le estaría muy agradecido.
Gracias de antemano.

#define ON HIGH                 // Cambiar para logica positiva/negativa 
#define OF LOW                  // Cambiar para logica positiva/negativa 
byte Pinentrada=10;
byte Pinled=7;
unsigned long T_Control=0;      // Para controlar el tiempo consumido 
unsigned long T_Apagar=2000;    // Tiempo de funcionamiento
bool EstadoPin=false;           
bool AnteriorEstadoPin=false;
void setup()
{
  pinMode(Pinled, OUTPUT);      
  pinMode(Pinentrada, INPUT);
  digitalWrite (Pinled, OF);
}
void loop()
{ 
  EstadoPin=digitalRead(Pinentrada);    // Leer pin
  if (AnteriorEstadoPin != EstadoPin)   // Estado ha variado?
  {
    T_Control=millis()+T_Apagar;        // Valor de millis para apagar
    digitalWrite (Pinled, ON);          // Encender          
  }
  AnteriorEstadoPin=EstadoPin;
  if (millis()>T_Control && T_Control>0)// Finalozo el tiempo y lo estamos controlando?
  {
    digitalWrite (Pinled, OF);          // Apagar
    T_Control=0;                        // Dejamos de controlar
  }
}

prueba a ver si va...

Hola Marcial

Muchísimas gracias por tu ayuda, funciona a la perfección. Es justo lo que necesito.
Gracias de nuevo.

Saludos.

buenos dias tengo una pregunta es que soy nuevo y no he podido conseguir me parece intersante la informacion pero necesito algo similar, necender un led y que al cabo de dos segundos apague de manera automatica y no vuelva a encender solo hasta que vuelva a darle la orden le agradezco su pronta respuesta

Hola napoleon1, tal vez no lo sabes pero cuando un post no tiene cambios en mas de 120 días no deberías responder al mismo y si crear un nuevo hilo con tu duda y en todo caso, poner una referencia (enlace) usando tags.
Se que eres nuevo pero te recomiendo le des una leída a las Normas del foro que te responderán muchas posibles dudas/consultas futuras.

No me quedamuy claro si lo que quieres es que tu led encienda como respuesta a un pulsador/botón y a los 2 seg apague y de nuevo lo haga cuando vuelvas a presionar?
Eso es muy básico, asi que deberías ver por ejemplo blink.ino en ejemplos del IDE.
Ahi prenden un led y lo mantienen por X tiempo usando delay funcion que no me gusta pero para este caso que solo hará eso sirve.
Usa un pulsador conectado a una entrada digital y cada vez que se pone en HIGH activas el LED con un delay de 2 seg y cuando termine estará listo para el proximo evento cuando se vuelva a presionar.
Si quieres hacerlo con algo que viene desde afuera, sigue el mismo criterio.

Si tienes dudas en DOCUMENTACION hay numerosos tutoriales empezando por los dos primeros que te guiarán para hacer esto y muchas cosas mas.

Hola necesito una solucion para un proyecto. estoy leyendo de varios microswitches por la entrada analogica conectados en serie. Cuando leo uno y espero 5 segundos para escribir que se leyo, si lo apago y prendo el otro se me queda en la instruccion de leer el primero y hasta que no lo hace no me dice que se apreto el segundo. como poder hacer que cuando prenda el segundo deseche la instrucción anterior