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;
}
}
}