Problema lógica inversa modulo 8 reles

Hola, buenas tardes:

Es la primera vez que escribo en foro, hace poco tiempo que me he iniciado en esto de Arduino.
Llevo días probando y no he conseguido solucionar el problema que se me presenta , He probado el programa que abajo he pegado y funciona perfectamente, tan solo quiero activar 8 reles cada uno con su pulsador , como si fueran telerruptores, pero después de un corte de corriente los reles se activan, he estado buscando referente a logica inversa , pero no he encontrado como solucionarlo. Agradecería si alguien ya le ha pasado y pudiera compartir conmigo su experiencia.
Un saludo y muchas gracias de antemano.

Disculpar si no he posteado bien, o he cometido algún error, poco a poco iré aprendiendo.

Este es el programa que he probado:

#include <Bounce2.h>

// Variables estáticas
const byte pinBoton1 = 2;      // Declaramos la variable pin del Botón
const byte pinBoton2 = 3;      // la otra entrada
const byte pinBoton3 = 4;      
const byte pinBoton4 = 5;      
const byte pinBoton5 = 6;      
const byte pinBoton6 = 7;      
const byte pinBoton7 = 8;      

const byte srele1    = 13;   // Declaramos la variable pin para relé.
const byte srele2    = 12; // la otra salida
const byte srele3    = 11;
const byte srele4    = 10;
const byte srele5    =  9;
const byte srele6    = A0;

Bounce debouncer1 = Bounce(); 
Bounce debouncer2 = Bounce(); 
Bounce debouncer3 = Bounce(); 
Bounce debouncer4 = Bounce(); 
Bounce debouncer5 = Bounce(); 
Bounce debouncer6 = Bounce(); 
Bounce debouncer7 = Bounce(); 

// Variables dinámicas
bool statusBtn1 = false, statusBtn2 = false, statusBtn3 = false, statusBtn4 = false,
     statusBtn5 = false, statusBtn6 = false, statusBtn7 = false; 
bool todosActivados = false;
int contador = 0;

void setup() {
  // Inicializa el pin del LED como salida:
  pinMode(srele1, OUTPUT);
  pinMode(srele2, OUTPUT);
  pinMode(srele3, OUTPUT);
  pinMode(srele4, OUTPUT);
  pinMode(srele5, OUTPUT);
  pinMode(srele6, OUTPUT);

  // Inicializa el pin del botón como entrada:
  pinMode(pinBoton1, INPUT_PULLUP);
  pinMode(pinBoton2, INPUT_PULLUP);
  pinMode(pinBoton3, INPUT_PULLUP);
  pinMode(pinBoton4, INPUT_PULLUP);
  pinMode(pinBoton5, INPUT_PULLUP);
  pinMode(pinBoton6, INPUT_PULLUP);
  pinMode(pinBoton7, INPUT_PULLUP);
  digitalWrite( pinBoton1 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton2 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton3 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton4 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton5 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton6 ,HIGH);   // activar PULL UP interno
  digitalWrite( pinBoton7 ,HIGH);   // activar PULL UP interno

  Serial.begin(9600);

  // After setting up the button, setup the Bounce instance :
  debouncer1.attach(pinBoton1);
  debouncer1.interval(20); // interval in ms
  debouncer2.attach(pinBoton2);
  debouncer2.interval(20); // interval in ms
  debouncer3.attach(pinBoton3);
  debouncer3.interval(20); // interval in ms
  debouncer4.attach(pinBoton4);
  debouncer4.interval(20); // interval in ms
  debouncer5.attach(pinBoton5);
  debouncer5.interval(20); // interval in ms
  debouncer6.attach(pinBoton6);
  debouncer6.interval(20); // interval in ms
  debouncer7.attach(pinBoton7);
  debouncer7.interval(20); // interval in ms
}

void loop(){

    // Update the Bounce instance :
    debouncer1.update();

    // Chequea si el botón está pulsado:
    if (debouncer1.fell()) {
       
       statusBtn1 = !statusBtn1;
       Serial.print("Status Btn1:");
       Serial.print(statusBtn1);
       Serial.print("cuenta:");
       Serial.println(contador++);
       todosActivados = true;   // permito que el accionamiento de todos los botones funcione 1 vez
    }
    
   
    if (statusBtn1 && todosActivados) {
       digitalWrite(srele1, HIGH);
       digitalWrite(srele2, HIGH);
       digitalWrite(srele3, HIGH);
       digitalWrite(srele4, HIGH);
       digitalWrite(srele5, HIGH);
       digitalWrite(srele6, HIGH);
       Serial.println("Todos activados");
       todosActivados = false;
    }
    
    if (!statusBtn1 && todosActivados) {
       digitalWrite(srele1, LOW);
       digitalWrite(srele2, LOW);
       digitalWrite(srele3, LOW);
       digitalWrite(srele4, LOW);
       digitalWrite(srele5, LOW);
       digitalWrite(srele6, LOW);
       Serial.println("Todos desactivados");
       todosActivados = false;
    }

    debouncer2.update();
    // Chequea si el botón está pulsado:
    if (debouncer2.fell()) {
       statusBtn2 = !statusBtn2;
       Serial.print("Status Btn2:");
       Serial.println(statusBtn2);
 
       if (statusBtn2)
          digitalWrite(srele1, HIGH);
       else 
          digitalWrite(srele1, LOW);
    }

    debouncer3.update();
    // Chequea si el botón está pulsado:
    if (debouncer3.fell()) {
       statusBtn3 = !statusBtn3;
       Serial.print("Status Btn3:");
       Serial.println(statusBtn3);

       if (statusBtn3)
          digitalWrite(srele2, HIGH);
       else 
          digitalWrite(srele2, LOW);
    }
    
    debouncer4.update();
    // Chequea si el botón está pulsado:
    if (debouncer4.fell()) {
       statusBtn4 = !statusBtn4;
       Serial.print("Status Btn4:");
       Serial.println(statusBtn4);

       if (statusBtn4)
          digitalWrite(srele3, HIGH);
       else 
          digitalWrite(srele3, LOW);
    }
    debouncer5.update();
    // Chequea si el botón está pulsado:
    if (debouncer5.fell()) {
       statusBtn5 = !statusBtn5;
       Serial.print("Status Btn5:");
       Serial.println(statusBtn5);

       if (statusBtn5)
          digitalWrite(srele4, HIGH);
       else 
          digitalWrite(srele4, LOW);
    }
    debouncer6.update();
    // Chequea si el botón está pulsado:
    if (debouncer6.fell()) {
       statusBtn6 = !statusBtn2;
       Serial.print("Status Btn6:");
       Serial.println(statusBtn6);

       if (statusBtn6)
          digitalWrite(srele5, HIGH);
       else 
          digitalWrite(srele5, LOW);
    }
    debouncer7.update();
    // Chequea si el botón está pulsado:
    if (debouncer7.fell()) {
       statusBtn7 = !statusBtn7;
       Serial.print("Status Btn7:");
       Serial.println(statusBtn7);

       if (statusBtn7)
          digitalWrite(srele6, HIGH);
       else 
          digitalWrite(srele6, LOW);
    }
}

Habitualmente cuando a un rele le dices

digitalWrite(srele1, HIGH);

no lo activas sino que lo desactivas.

y si le dices

digitalWrite(srele1, LOW);

lo activas.

Eso se debe a que estan pensados para dos modos de conexión y el que todos usan hace que trabajen como lógica inversa.

Surbyte , agradezco enormemente tu repuesta , pero ya he probado a cambiar todos los HiGH por un LOW y al revés , y nada, cuando corto corriente y vuelvo a meter los reles se activan , cuando deberían de quedar en reposo , en cambio he probado con leds y va genial , no se si será posible decirle mediante programación que al inicio del loop estén todos en HiGH , quizá así no se conectarían .
¿Podria estar el problema en la librería antirrebote?
Un saludo y gracias

Claro... eso debes hacerlo luego de configurar los pines como salida y acto seguido fijas el estado de reposo que deseas.

Otra cosa que puedes hacer es que cuando haya un cambio este se salve en EEPROM y al restaurarse, se leen los estados de los 8 reles y se ponen como estaban.

Surbyte, muchas gracias por la info, efectivamente , asignando el estado de reposo en el void setup se resuelve el problema, ahora cada vez que metes corriente el estado es 1 y los reles quedan en reposo.

Un saludo y hasta la proxima!!!!!