Problema con temporizar una salida

Buenas Tardes,
Soy un poco novato en el tema de la programación en el Arduino. y tengo una problema.
Quiiero realizar un programa en el que cuando una entrada me de un impulso se me active una salida durante un determinado tiempo, a continuación utilizando un contador, cuando se de otro impulso a la entrada se me active la siguiente salida esté o no la anterior activa, y así sucesivamente con las demás, nose si me explico bien.

El problema que tengo utilizando el delay es que me para el la ejecución del programa entonces al realizar otro impulso no se me activa la siguiente salida.

Haber si alguien me pudiera ayudar. Os dejo como llevo el programa para que me ayudeis.

int cuenta = 0;

void setup(){
pinMode(0, INPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}

void loop(){

if (digitalRead(0) == HIGH){

if(digitalRead(0) == LOW){
cuenta = cuenta++;
delay(100);
if(cuenta==5)
cuenta = 0;
}
}
if(cuenta == 1){
digitalWrite(1, HIGH);
delay(5000);
digitalWrite(1, LOW);
}
if(cuenta == 2){
digitalWrite(2, HIGH);
delay(5000);
digitalWrite(2, LOW);
}

if(cuenta == 3){
digitalWrite(3, HIGH);
delay(5000);
digitalWrite(3, LOW);
}

if(cuenta == 4){
digitalWrite(4, HIGH);
delay(5000);
digitalWrite(4, LOW);
}
}

He oido que puedo utilizar la función millis( ) para temporizar las salidas pero no se como hacerlo.
Muchas Gracias

Estudia esto

http://arduino.cc/es/Tutorial/BlinkWithoutDelay#.UzxmGqKv98E

Jopapa
www.jopapa.me

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

Muchas gracias Jopapa y Marcial, lo probare cuando me llegue la placa de Arduino que tengo pedida.

Un Saludo