Iniciar secuencia con varios temporizadores

Hola.
La siguiente secuencia tiene 4 temporizadores con tiempos diferentes, arranca al inicio y se repite. ¿Cómo puedo hacer para que sólo se inicie con un pulsador? :

unsigned long tiempo;
int rele1=4; // asigna el pin 4 para el relé1
int rele2=5; // asigna el pin 5 para el relé2
int rele3=6; // asigna el pin 6 para el relé3
int rele4=7; // asigna el pin 7 para el relé4

void setup(){
pinMode (rele1, OUTPUT); // declara el rele1 como salida
pinMode (rele2, OUTPUT); // declara el rele2 como salida
pinMode (rele3, OUTPUT); // declara el rele3 como salida
pinMode (rele4, OUTPUT); // declara el rele4 como salida
tiempo= millis();
}

void loop(){
if(millis()-tiempo < 3000){
digitalWrite(rele1,LOW); // Activa relé 1
}else
if (millis()-tiempo > 3000){
digitalWrite(rele1,HIGH); // Desactiva relé 1 a los 3 segundos
}
if(millis()-tiempo < 4000){
digitalWrite(rele2,LOW); // Activa relé 2
}else
if (millis()-tiempo > 4000){
digitalWrite(rele2,HIGH); // Desactiva relé 2 a los 4 segundos
}
if(millis()-tiempo < 5000){
digitalWrite(rele3,LOW); // Activa relé 3
}else
if (millis()-tiempo > 5000){
digitalWrite(rele3,HIGH); // Desactiva relé 3 a los 5 segundos
}
if(millis()-tiempo < 6000){
digitalWrite(rele4,LOW); // Activa relé 4
}else
if (millis()-tiempo > 6000){
digitalWrite(rele4,HIGH); // Desactiva relé 4 a los 6 segundos
}
}

Gracias.

Hay un detalle a considerar menor pero importante.
Hablas de un pulsador, y tus secuencias tienen 3, 4, 5 6 seg y mas... entonces para que funcione con UN PULSADOR debes permanecer con el pulsador presionado o quieres que cada vez que pulses SE RETENGA ese disparo?
Sino hablarías de un interruptor que cambia y QUEDA en el otro estado?

Este es un punto de partida aunque requiere de dos pulsadas para resetear los reles.

unsigned long tiempo;
byte rele1	=	4; // asigna el pin 4 para el relé1
byte rele2	=	5; // asigna el pin 5 para el relé2
byte rele3	=	6; // asigna el pin 6 para el relé3
byte rele4	=	7; // asigna el pin 7 para el relé4
byte pulsador = 9; //pulsador
byte NuevoEstado = HIGH;
byte ViejoEstado	= HIGH; // Recuerdo estado en 1 porque es pulsador Pull-up
bool inicio = false;
byte disparo = LOW;

void setup(){
	pinMode (rele1, OUTPUT);	// declara el rele1 como salida
	pinMode (rele2, OUTPUT);	// declara el rele2 como salida
	pinMode (rele3, OUTPUT);	// declara el rele3 como salida
	pinMode (rele4, OUTPUT);	// declara el rele4 como salida
	pinMode(pulsador, INPUT);	// declaro pulsador como entrada
	tiempo= millis();
}

void loop(){
    	
	NuevoEstado = digitalRead(pulsador);
	
	// cambio el estado del pulsador?
	if (NuevoEstado != ViejoEstado) {		// pulsador debe estar con un borne a gnd y el otro a pin 9 y una r de 10k cuyo
		ViejoEstado = NuevoEstado;
		delay(50);					// 50 mseg para asegurar rebotes
		
		if (NuevoEstado == LOW) { // pulsador esta cerrado cuando esta en 0
			disparo = !disparo;
			if (disparo)
			   inicio = true;
		}
	
	}
					
	if (disparo) {
		if (inicio) {			// otro borne esta conectado a 5V
			tiempo = millis();
			inicio = false;
		}
	  
		if (millis()-tiempo < 3000) {
			digitalWrite(rele1,LOW); // Activa relé 1
		} else 
				if (millis()-tiempo > 3000){
				  digitalWrite(rele1,HIGH); // Desactiva relé 1 a los 3 segundos
		}
		
		if (millis()-tiempo < 4000){
			digitalWrite(rele2,LOW); // Activa relé 2
		} else 
				if (millis()-tiempo > 4000){
				   digitalWrite(rele2,HIGH); // Desactiva relé 2 a los 4 segundos
		}
		
		if(millis()-tiempo < 5000){
			digitalWrite(rele3,LOW); // Activa relé 3
		}	else
				if (millis()-tiempo > 5000){
					digitalWrite(rele3,HIGH); // Desactiva relé 3 a los 5 segundos
		}
		
		if (millis()-tiempo < 6000){
			digitalWrite(rele4,LOW); // Activa relé 4
		} else
			if (millis()-tiempo > 6000){
			digitalWrite(rele4,HIGH); // Desactiva relé 4 a los 6 segundos
		}
	}

	
}

Hola. Tienes razón. Sólo con pulsar comienza la secuencia, no hace falta mantener pulsado, y que se detenga al terminar la última temporización. Utilizo una entrada pull down.

Saludos Tino
Como te respondí en el otro post puedes hacer esto:

/* Encender varios led difentes tiempos
El primer led encendera entre 1 y 10 segundos despues de iniciado el programa
El segundo encendera a los 2 segundos y finalizara a los 5s
El tercer led encendera a los 10s y finalizara a los 21s
El cuarto encendera a los 0,5s de iniciado el Sketch y apagara a los 8s
El quinto y ultimo led iniciara a los 0,5s y se apagara a los 25 s
cuando el quito led se apague toda la rutina comienza a repetirse.
*/

unsigned long tiempo;

int leds[5]= {2,3,4,5,6};
int pin_boton= 7; // Pin para el boton
boolean activa = false; //Variable de control de encendido


void setup(){
  for(int i =0; i<5;i++){ //Configura salida de leds en pines 2, 3,4,5 y 6 como salida
    pinMode(leds[i],OUTPUT);
  }
  pinMode(pin_boton,INPUT);
  tiempo= millis();
  digitalWrite(pin_boton,HIGH);
}
void loop(){
  if (digitalRead(pin_boton) == LOW){ //Revisa que has presioando el boton
    delay(50);
    if (digitalRead(pin_boton) == LOW) { // Espera 50 milisegundos para evitar antirrebotes.
      while(pin_boton == LOW){} //Espera que sueltes el boton
      if(activa==true){Activa = false;} //Si esta activo se apaga
      if(activa==false){Activa = true;} // Sie sta apagado se activa   
    }
  }
  if(activa == true){ //Si esta activo llama a la fucion encender_leds();
    encender_leds();
  }
}


void encender_leds(){
  if(millis()-tiempo>1000 && millis()-tiempo < 10000){
    digitalWrite(leds[0],HIGH);
  }else
  if (millis()-tiempo > 10000){
    digitalWrite(leds[0],LOW);
  } //primer 
  if(millis()-tiempo>2000 && millis()-tiempo < 50000){
    digitalWrite(leds[1],HIGH);
  }else
  if (millis()-tiempo > 5000){
    digitalWrite(leds[1],LOW);
  } //Segundo
  if(millis()-tiempo>10000 && millis()-tiempo < 21000){
    digitalWrite(leds[2],HIGH);
  }else
  if (millis()-tiempo > 21000){
    digitalWrite(leds[2],LOW);
  } //tercer 
  if(millis()-tiempo>500 && millis()-tiempo < 8000){
    digitalWrite(leds[3],HIGH);
  }else
  if (millis()-tiempo > 8000){
    digitalWrite(leds[3],LOW);
  } //cuarto 
   if(millis()-tiempo>500 && millis()-tiempo < 25000){
    digitalWrite(leds[4],HIGH);
  }else
  if (millis()-tiempo > 25000){
    digitalWrite(leds[4],LOW);
    tiempo= millis();
  } //quinto  
}

Hola comunidad.
Mi consulta es porque quiero usar un pulsador y usar variaciones de encendido y apagado de un rele.
En la primer secuencia tednria 4 seg encendido y 2 SEG apagado en bucle continuo. Al pulsar otra vez pasar a otra secuencia para el mismo rele de 2 seg y 4 seg y una vez mas al pulsar otra vez pasar a otra secuencia de 1 seg y 1 seg. Al volver a pulsar que vuelva a la primer secuencia.
Un sludo

@mateusardu, no has visto que el hilo no tiene movimiento desde 2014.
Los hilos con mas de 120 dias no deben responderse.
Hiloa cerrado. Crea un nuevo hilo.