El rele se vuelve loco

Hola, tengo un problema con unos reles, tengo hecho el ejemplo del blinkwithoutdelay, pero implementado en reles pero al momento de ejecutarlo, se vuelve loco, no espera nada es encenderse y al nanosegundo(por decir algo) se apaga y se enciende otra vez, que hago D:, os 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 contador;
unsigned long contadorAn = 0;

//Duracion total  de rele
unsigned long diaria = 120000;
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);
    if(inte1AC == 1){
      inicio1 = 1;
    }
   
    if(inicio1 == 1){
      contador = millis();
      if(contador - contadorAn <= diaria){
      if(estado1 == HIGH){
        estado1 = LOW;
      } else {
        estado1 = HIGH;
      }
      }
      digitalWrite(rele1, estado1);
       Serial.println(estado1);
    }  
  }
  }

#1
Veras lo del debounce ya lo corregi pero porque contadorAn tiene que ser el que cuenta ?

#3

El contadorAn lo tengo que tener inciado en 0, porque es el conteo anterior que se hizo, y lo del if ok ya miro y te digo

Prueba esto

void loop() {
  
  // put your main code here, to run repeatedly:;
  inte1AC = digitalRead(boton1);
  if (inte1AC == 1){
      inicio1 = 1;
      contador = millis();
  }
 
  if (inicio1 == 1){
      if (millis() <= diaria + contadorAn){
          if (estado1 == HIGH){
              estado1 = LOW;
          } else {
              estado1 = HIGH;
          }
      }
      digitalWrite(rele1, estado1);
      Serial.println(estado1);
  }  
}

Ya lo arregle gracias Ardumyth

Esta resuelto? Si lo esta, edita el título y ponle SOLUCIONADO