No realiza una pausa de 4 segundos despues de cada rele

Hola hace poco arregle mi problema con el rele que se volvia loco, pero ahora tengo otro, que cuando necesito una pausa de 4 segundos no lo hace se enciende otro, y despues se apaga, luego se enciende todos y la pausa de 4 esta, pero necesito que cuando el primer rele se encienda y luego se apague, pausa de 4 y asi con 2 mas.

    if(estado1 == HIGH){
    if(currentMillis - previousMillis > difuntoIn1) {
            previousMillis = currentMillis;   
            estado4 = HIGH;
            estado1 = LOW;
            difuntoconta++;
    }
    }if(estado1 == LOW){
  if(currentMillis - previousMillis > difuntoPause) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = HIGH;
            estado3 = HIGH;
            estado4 = HIGH;
            difuntoconta++;
    }
    }
    if(estado2 == HIGH){
  if(currentMillis - previousMillis > difuntoIn2) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = LOW;
            difuntoconta++;
    }
    }
    if(estado2 == LOW){
  if(currentMillis - previousMillis > difuntoPause) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = HIGH;
            estado3 = HIGH;
            estado4 = HIGH;
            difuntoconta++;
    }
    }
    if(estado3){
  if(currentMillis - previousMillis > difuntoIn3) {
            previousMillis = currentMillis;   
            estado2 = HIGH;
            estado3 = LOW;
            difuntoconta++;
    }
    }
    if(estado3 == LOW){
  if(currentMillis - previousMillis > difuntoPause) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = HIGH;
            estado3 = HIGH;
            estado4 = HIGH;
            difuntoconta++;
    }
    }
  digitalWrite(rele1, estado1);
  digitalWrite(rele2, estado2);
  digitalWrite(rele3, estado3);

Y porque no pones el código completo?

Aqui dejo el codigo:

                                                //Reles
byte rele1 = 2;
byte rele2 = 3;
byte rele3 = 4;
byte rele4 = 5;
byte rele5 = 6;
byte rele6 = 7;
byte rele7 = 8;
byte rele8 = 9;

//Botones
byte boton1 = 22;
byte boton2 = 24;
byte boton3 = 26;
byte boton4 = 28;
byte boton5 = 30;

//Para transformar pulsador en interruptor
  //1
  int inicio1 = 0;
  int inte1AC = 0;
  int estado1 = HIGH;                                                                                                                                                                                        ;

  //2
  int inicio2 = 0;
  int inte2AC = 0;
  int estado2 = HIGH;

  //3
  int inicio3 = 0;
  int inte3AC = 0;
  int estado3 = HIGH;

  //4
  int inicio4 = 0;
  int inte4AC = 0;
  int estado4 = HIGH;

  //5
  int inicio5 = 0;
  int inte5AC = 0;
  int estado5 = HIGH;

  //Tiempo
  unsigned long previousMillis = 0;
  long diariaIn2 = 1000;
  long diariaIn3 = 1000;
  int diariaconta;
  int diaria = 120;
  //--------------
  long difuntoIn1 = 1000;
  long difuntoIn2 = 1000;
  long difuntoIn3 = 1000;
  long difuntoIn4 = 1000;
  long difuntoPause = 4000;
  int difuntoconta;
  int difunto = 1800;
void setup() {
  //Declaramos el Serial
  Serial.begin(9600);
  
  //Declaramos los reles
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);
  pinMode(rele3, OUTPUT);
  pinMode(rele4, OUTPUT);
  pinMode(rele5, OUTPUT);
  pinMode(rele6, OUTPUT);
  pinMode(rele7, OUTPUT);
  pinMode(rele8, OUTPUT);
  
  //Declaramos los botones
  pinMode(boton1, INPUT);
  pinMode(boton2, INPUT);
  pinMode(boton3, INPUT);
  pinMode(boton4, INPUT);
  pinMode(boton5, INPUT);
  
//Para dejar apagado todos los reles al dar corriente
  digitalWrite(rele1, HIGH);
  digitalWrite(rele2, HIGH);
  digitalWrite(rele3, HIGH);
  digitalWrite(rele4, HIGH);
  digitalWrite(rele5, HIGH);
  digitalWrite(rele6, HIGH);
  digitalWrite(rele7, HIGH);
  digitalWrite(rele8, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:;
  inte1AC = digitalRead(boton1);
  inte2AC = digitalRead(boton2);
  inte3AC = digitalRead(boton3);
  inte4AC = digitalRead(boton4);
  inte5AC = digitalRead(boton5);

    if(inte1AC == 1){
      inicio1 = 1;
    }
    if(inte2AC == 1){
      inicio2 = 1;
    }
    if(inte3AC == 1){
      inicio3 = 1;
    }
    if(inte4AC == 1){
      inicio4 = 1;
    }
    if(inte5AC == 1){
      inicio5 = 1;
    }
  
  //diaria
    if(inicio1 == 1){
  unsigned long currentMillis = millis();
  if (estado2 == HIGH){
    if(currentMillis - previousMillis > diariaIn2) {
            previousMillis = currentMillis;   
            estado3 = HIGH;
            estado2 = LOW;
            diariaconta++;
    }
} else {
    if(currentMillis - previousMillis > diariaIn3) {
           previousMillis = currentMillis;   
          estado2 = HIGH;
          estado3 = LOW;
          diariaconta++;
    }
}
digitalWrite(rele2, estado2);
digitalWrite(rele3, estado3);
if(diariaconta == diaria){
  inicio1 = 0;
  previousMillis = 0;
  diariaconta = 0;
}
      }

      //Difunto
if(inicio2 == 1){
 unsigned long currentMillis = millis();
   
    if(estado1 == HIGH){
    if(currentMillis - previousMillis > difuntoIn1) {
            previousMillis = currentMillis;   
            estado4 = HIGH;
            estado1 = LOW;
            difuntoconta++;
    }
    }if(estado1 == LOW){
  if(currentMillis - previousMillis > difuntoPause) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = HIGH;
            estado3 = HIGH;
            estado4 = HIGH;
            difuntoconta++;
    }
    }
    if(estado2 == HIGH){
  if(currentMillis - previousMillis > difuntoIn2) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = LOW;
            difuntoconta++;
    }
    }
    if(estado2 == LOW){
  if(currentMillis - previousMillis > difuntoPause) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = HIGH;
            estado3 = HIGH;
            estado4 = HIGH;
            difuntoconta++;
    }
    }
    if(estado3){
  if(currentMillis - previousMillis > difuntoIn3) {
            previousMillis = currentMillis;   
            estado2 = HIGH;
            estado3 = LOW;
            difuntoconta++;
    }
    }
    if(estado3 == LOW){
  if(currentMillis - previousMillis > difuntoPause) {
            previousMillis = currentMillis;   
            estado1 = HIGH;
            estado2 = HIGH;
            estado3 = HIGH;
            estado4 = HIGH;
            difuntoconta++;
    }
    }
  digitalWrite(rele1, estado1);
  digitalWrite(rele2, estado2);
  digitalWrite(rele3, estado3);
  
  if(difuntoconta == difunto){
    inicio2 = 0;
    previousMillis = 0;
    difuntoconta = 0;
}
}
       Serial.println(difuntoconta);
    }

Como observación te diré que te sobra código por todos lados, cuando repites muchas veces algo al programar es que no lo estas haciendo bien o que hay formas mejores. Utilizando 4-5 "for" te quedaría un código mas sencillo de manejar. Por ejemplo, en vez de hacer 4 variables para 4 estados, pones una sola variable y haces "cases" con el valor que tome.

Respecto a tu problema, sinceramente no me entero muy bien del código, tienes un jaleo de variables que personalmente creo q podrías simplificar un montón, y además no tienes anotaciones declarativas durante el código.