problemas en programacion arduino nano

Hola Gente, muchas gracias por ayudar siempre.
Hice mi primer programa pero falla.
es bastante basico, necesito que cuando cierro la tapa de una lavadora (entrada digital High) haga una salida digital de 5 segundos y despues haga otra salida digital por 5 segundos.
las salidos las conecte a un modulo rele pero se cruzan los tiempos de encendidos.
ademas necesito que haga el ciclo solo una vez hasta que vuelva a abrir y cerrar la puerta (input low + input high)

copio el programa, si alguien me marca que hago mal. muchas gracias

const int inputState = 7;     
const int rele1 =  2;      
const int rele2 = 4;

int buttonState = 1;

void setup() {
 
 pinMode(rele1, OUTPUT);
 pinMode(rele2, OUTPUT);
 pinMode(inputState, INPUT);
 
}


void loop() {

if ((buttonState % 2 == 0) && (inputState == HIGH)){
 funciones();
  
} else if ((buttonState % 2 != 0) && (inputState == HIGH)){

 buttonState++;
 
} else{

 digitalWrite(rele1, LOW);
 digitalWrite(rele2, LOW);
 
}
}


void funciones(){

 digitalWrite(rele1, HIGH);
 delay(5000);
 digitalWrite(rele1, LOW);
 digitalWrite(rele2, HIGH);
 delay(5000);
 digitalWrite(rele2, LOW);
 buttonState++;
   
}

No comentas si estas usando la tipica placa con el rele incorporado ,en ese caso tendrias que verificar con que logica funciona ,muchos son de logica inversa,se activan con señal LOW y se desactivan con HIGH.Tampoco has puesto si estas usando resistencia pulldown para la entrada que controla la obertura/cierre de la tapa.

Gracias jose.
Estoy usando un modulo rele 2 canales de 5v y bornera para 220
Tiene 4 patas gnd in1 in2 vcc
Al lado hay 3 patitas , 2 dicen vcc y estan unidas mas una de gnd
La entrada no tiene nada, es solo un cable que va a un pulsador y tiene 5v
Ayuda

Una entrada digital no puede quedar "al aire" ,oscilara entre señal/no señal.Repasa esto:

rele:

Gracias jose. Le estoy agregando un pull down para el pulsador y cambie las ordenes de high a low.
Veo que con delay no me lee el pulsador en caso que se abra la puerta
Estoy tratando con millis.
Cuesta bastante:( ademas si dejo el boton apretado se repite y yo quiero que lo haga una sola ves por mas que siga apretado el boton. Que se reinicie solo si hago un low y high de nuevo en el input

Que complicado que es esto!!

if ((buttonState % 2 == 0) && (inputState == HIGH)){
  funciones();
  
} else if ((buttonState % 2 != 0) && (inputState == HIGH)){

    buttonState++;
 
} else{
    digitalWrite(rele1, LOW);
    digitalWrite(rele2, LOW);
}
}

Bueno he modificado tu código y espero funcione de lo contrario solo cambia el funcionamiento de los flags.
usa tambien una máquina de estados asi que el código responde a tu pulsador de forma instantánea o como si lo fuera

const byte inputState  = 7;     
const byte rele1       =  2;      
const byte rele2       = 4;

bool buttonState, buttonStateAnt = false;
byte estado = 0;
unsigned long start;

void setup() {
 
 pinMode(rele1, OUTPUT);
 pinMode(rele2, OUTPUT);
 pinMode(inputState, INPUT);
 
}


void loop() {

  buttonState = digitalRead(inputState);

  if (buttonState && !buttonStateAnt) {
      estado = 0;
      flag = true;
  }
  if (buttonState && !buttonStateAnt) {
      flag = false;
  }
  buttonStateAnt = buttonState;
  
  if (flag) {
      switch(estado) {
        case 0: digitalWrite(rele1, HIGH);
                estado = 1;
                start = millis();
                break;
        case 1: if (millis() - start > 5000UL) {
                    digitalWrite(rele1, LOW);
                    digitalWrite(rele2, HIGH);
                    estado = 2;
                    start = millis();
                }
                break;
        case 2: if (millis() - start > 5000UL) {
                    digitalWrite(rele2, LOW);
                    estado = 3;              
                }
                break;
        case 3: break; // y no sale de aca
      }
  }
  else {
     digitalWrite(rele1, LOW);
     digitalWrite(rele2, LOW);   
  }
}

muchas gracias surbyte, me da error porque flag no esta declarada.
como se solucionaria?
voy a ver si encuentro algun articulo

declarándola.

bool flag;

y no lo digo con aires de nada, solo que hay que investigar un poco, nada mas.
Si algo te da error por no estar declarado el sentido común que dice?

Genio total surbyte, me salvaste. Es un lujo como anda, modifique para que pare si abro la puerta y quedo perfecto, ya quiero agregarle mas funciones.
Quiero agradecerles a todo el grupo maravilloso que tanto ayuda y que aprecien la magia que hacen cuando ayudan a un novato desesperado, las cosas que para ustedes son "tontas" para un "viejo con ganas de aprender" son un mundo.
muchas gracias a esta gran comunidad.
GENIOS