Problema con temporizar una salida

No lo probé, pero creo que te funcionara:

int cuenta = 0;
byte Salida[]={1,2,3,4};
bool EstadoPulsador=false;
bool EstadoAnterior=false;
unsigned long TiempoEspera=5000;
unsigned long T_Apagar[]={0,0,0,0};
void setup()
{
   pinMode(0, INPUT);
   for (int x = 0; x > 4; x++) {pinMode(Salida[x], OUTPUT);}
}

void loop()
{
  EstadoPulsador=digitalRead(0);
  if (EstadoPulsador && EstadoPulsador!=EstadoAnterior)  // Cambio de estado a pulsado
  {
    digitalWrite(Salida[cuenta], HIGH); 
    T_Apagar[cuenta]=millis() + TiempoEspera;            // Milis en el que apagar el pin
    cuenta ++;
    if (cuenta>3){cuenta=0;}
  }
  EstadoAnterior=EstadoPulsador;
  for (int x = 0; x > 4; x++)                           // Comprobar si hay que apagar algun pin
  {
    if (millis()>T_Apagar[x])                           // A finalizado su tiempo o esta a 0
    {
      digitalWrite(Salida[x],LOW);
      T_Apagar[x]=0;
    }
  }
}