A vueltas con setup(), loop() y millis() (SOLUCIONADO)

Estos dos programillas, uno funciona y el otro no. Se me escapa el porqué.
Son muy simples, al encender el arduino deben activar un led y apagarlo a los 6 segundos. Una sola vez en los dos casos.

// NO FUNCIONA

#define led 13
unsigned long tiempoInicial=0;

void setup() {
pinMode (led, OUTPUT);
digitalWrite (13, HIGH);
  if (millis()-tiempoInicial > 6000)  {
  digitalWrite(13, LOW);
  tiempoInicial = millis();
  }
}

void loop() {
 
}

Y este si funciona:

//FUNCIONA

#define led 13
unsigned long tiempoInicial=0;

void setup() {
pinMode (led, OUTPUT);
digitalWrite (13, HIGH);
}

void loop() {
 if (millis()-tiempoInicial > 6000)  {
  digitalWrite(13, LOW);
  tiempoInicial = millis(); // put your main code here, to run repeatedly:
 }
}

Como solo necesito que se ejecute una vez lo metí primeramente todo en setup(), pero al no conseguir que funcionara lo metí en loop() para probar y aquí si va. :o
Gracias.

La funcion setup() se ejecuta una sola vez al inicio del Arduino, y nunca más, por eso el primer programa no funciona. Realiza la comparacion una sola vez y luego nunca mas, y por ello no llega al tiempo estipulado.

La funcion loop() por el contrario, se ejecuta continuamente luego de ejecutar setup(). Por eso el segundo programa funciona, porque el codigo se ejecuta continuamente (una y otra vez) y cuando llega a la comparación verdadera, enciende el led.

¡Claro!
Gracias, msoffredi.