Adding debounce to already complicated sketch

good day all.
I have been playing around with Arduino for a while but I am not a programmer but work with electronics. I have managed to write this sketch with great struggle and was hoping there would be someone able and willing to help me to add debounce to the 5 buttons i have as input_pullup in the sketch.
I am using an Arduino Nano, HC05 Bluetooth module, some relay modules(different ones was all i had available) and momentary push buttons(hardware).
this sketch works perfectly well until i have noise from a different appliance that is not part of this circuit. any and all help would be greatly appreciated.


// define the GPIO connected with Relays and switches
#define Kitchen 2    //D2
#define Seating 3    //D3
#define Bathroom 4   //D4
#define Ambient 5    //D5
#define AwningL 6    //D6
#define AwningIn 7   //D7
#define AwningOut 8  //D8
#define StepOut 9    //D9
#define StepIn 10    //D10

#define SwitchPin1 A0  //A0
#define SwitchPin2 A1  //A1
#define SwitchPin3 A2  //A2
#define SwitchPin4 A3  //A3
#define SwitchPin5 A4  //A4

int toggleState_1 = 1;  //Define integer to remember the toggle state for relay 1
int toggleState_2 = 1;  //Define integer to remember the toggle state for relay 2
int toggleState_3 = 1;  //Define integer to remember the toggle state for relay 3
int toggleState_4 = 1;  //Define integer to remember the toggle state for relay 4
int toggleState_5 = 1;  //Define integer to remember the toggle state for relay 5


char bt_data;  // variable for storing bluetooth data

void relayOnOff(int relay) {

  switch (relay) {
    case 1:
      if (toggleState_1 == 1) {
        digitalWrite(Kitchen, LOW);  // turn on relay 1
        toggleState_1 = 0;
        Serial.println("Kitchen Lights ON");
      } else {
        digitalWrite(Kitchen, HIGH);  // turn off relay 1
        toggleState_1 = 1;
        Serial.println("Kitchen Lights OFF");
      }
      delay(100);
      break;
    case 2:
      if (toggleState_2 == 1) {
        digitalWrite(Seating, LOW);  // turn on relay 2
        toggleState_2 = 0;
        Serial.println("Seating Lights ON");
      } else {
        digitalWrite(Seating, HIGH);  // turn off relay 2
        toggleState_2 = 1;
        Serial.println("Seating Lights OFF");
      }
      delay(100);
      break;
    case 3:
      if (toggleState_3 == 1) {
        digitalWrite(Bathroom, LOW);  // turn on relay 3
        toggleState_3 = 0;
        Serial.println("Bathroom Lights ON");
      } else {
        digitalWrite(Bathroom, HIGH);  // turn off relay 3
        toggleState_3 = 1;
        Serial.println("Bathroom Lights OFF");
      }
      delay(100);
      break;
    case 4:
      if (toggleState_4 == 1) {
        digitalWrite(Ambient, LOW);  // turn on relay 4
        toggleState_4 = 0;
        Serial.println("Ambient Lights ON");
      } else {
        digitalWrite(Ambient, HIGH);  // turn off relay 4
        toggleState_4 = 1;
        Serial.println("Ambient Lights OFF");
      }
      delay(100);
      break;
    case 5:
      if (toggleState_5 == 1) {
        digitalWrite(AwningL, LOW);  // turn on relay 5
        toggleState_5 = 0;
        Serial.println("Awning Light ON");
      } else {
        digitalWrite(AwningL, HIGH);  // turn off relay 5
        toggleState_5 = 1;
        Serial.println("Awning Light OFF");
      }
      delay(100);
      break;
    default: break;
  }
}

void without_internet() {
  //Manual Switch Control
  if (digitalRead(SwitchPin1) == LOW) {
    delay(200);
    relayOnOff(1);
  } else if (digitalRead(SwitchPin2) == LOW) {
    delay(200);
    relayOnOff(2);
  } else if (digitalRead(SwitchPin3) == LOW) {
    delay(200);
    relayOnOff(3);
  } else if (digitalRead(SwitchPin4) == LOW) {
    delay(200);
    relayOnOff(4);
  } else if (digitalRead(SwitchPin5) == LOW) {
    delay(200);
    relayOnOff(5);
  }
}
void all_Switch_ON() {
  digitalWrite(Kitchen, LOW);
  toggleState_1 = 0;
  delay(100);
  digitalWrite(Seating, LOW);
  toggleState_2 = 0;
  delay(100);
  digitalWrite(Bathroom, LOW);
  toggleState_3 = 0;
  delay(100);
  digitalWrite(Ambient, LOW);
  toggleState_4 = 0;
  delay(100);
  digitalWrite(AwningL, LOW);
  toggleState_5 = 0;
  delay(100);
}

void all_Switch_OFF() {
  digitalWrite(Kitchen, HIGH);
  toggleState_1 = 1;
  delay(100);
  digitalWrite(Seating, HIGH);
  toggleState_2 = 1;
  delay(100);
  digitalWrite(Bathroom, HIGH);
  toggleState_3 = 1;
  delay(100);
  digitalWrite(Ambient, HIGH);
  toggleState_4 = 1;
  delay(100);
  digitalWrite(AwningL, HIGH);
  toggleState_5 = 1;
  delay(100);
}

void Bluetooth_handle() {
  bt_data = Serial.read();
  //  Serial.println(bt_data);
  delay(20);

  switch (bt_data) {
    case 'A':
      digitalWrite(Kitchen, LOW);
      toggleState_1 = 0;
      break;  // if 'A' received Turn on Relay1
    case 'a':
      digitalWrite(Kitchen, HIGH);
      toggleState_1 = 1;
      break;  // if 'a' received Turn off Relay1
    case 'B':
      digitalWrite(Seating, LOW);
      toggleState_2 = 0;
      break;  // if 'B' received Turn on Relay2
    case 'b':
      digitalWrite(Seating, HIGH);
      toggleState_2 = 1;
      break;  // if 'b' received Turn off Relay2
    case 'C':
      digitalWrite(Bathroom, LOW);
      toggleState_3 = 0;
      break;  // if 'C' received Turn on Relay3
    case 'c':
      digitalWrite(Bathroom, HIGH);
      toggleState_3 = 1;
      break;  // if 'c' received Turn off Relay3
    case 'D':
      digitalWrite(Ambient, LOW);
      toggleState_4 = 0;
      break;  // if 'D' received Turn on Relay4
    case 'd':
      digitalWrite(Ambient, HIGH);
      toggleState_4 = 1;
      break;  // if 'd' received Turn off Relay4
    case 'E':
      digitalWrite(AwningL, LOW);
      toggleState_5 = 0;
      break;  // if 'E' received Turn on Relay5
    case 'e':
      digitalWrite(AwningL, HIGH);
      toggleState_5 = 1;
      break;  // if 'e' received Turn off Relay5
    case 'F':
      digitalWrite(AwningIn, LOW);
      delay(200);
      digitalWrite(AwningIn,HIGH);
      break;  // if 'F' received Turn on Relay6 for 0.2s
    case 'G':
      digitalWrite(AwningOut, HIGH);
      delay(200);
      digitalWrite(AwningOut,LOW);
      break;  // if 'G' received Turn on Relay7 for 0.2s
    case 'H':
      digitalWrite(StepOut, LOW);
      delay(1000);
      digitalWrite(StepOut,HIGH);
      break;  // if 'H' received Turn on Relay8 for 1s
    case 'I':
      digitalWrite(StepIn, LOW);
      delay(1000); // if 'I' received Turn on Relay9 for 1s
      digitalWrite(StepIn,HIGH);
      break; 
    case 'Z': all_Switch_ON(); break;   // if 'Z' received Turn on all Relays
    case 'z': all_Switch_OFF(); break;  // if 'z' received Turn off all Relays
    default: break;
  }
}

void setup() {
  Serial.begin(9600);

  Serial.println("The device started, now you can pair it with bluetooth!");
  delay(5000);

  pinMode(Kitchen, OUTPUT);
  pinMode(Seating, OUTPUT);
  pinMode(Bathroom, OUTPUT);
  pinMode(Ambient, OUTPUT);
  pinMode(AwningL, OUTPUT);
  pinMode(AwningIn, OUTPUT);
  pinMode(AwningOut, OUTPUT);
  pinMode(StepOut, OUTPUT);
  pinMode(StepIn, OUTPUT);
  //  pinMode(wifiLed, OUTPUT);

  pinMode(SwitchPin1, INPUT_PULLUP);
  pinMode(SwitchPin2, INPUT_PULLUP);
  pinMode(SwitchPin3, INPUT_PULLUP);
  pinMode(SwitchPin4, INPUT_PULLUP);
  pinMode(SwitchPin5, INPUT_PULLUP);

  //During Starting all Relays should TURN OFF
  digitalWrite(Kitchen, toggleState_1);
  digitalWrite(Seating, toggleState_2);
  digitalWrite(Bathroom, toggleState_3);
  digitalWrite(Ambient, toggleState_4);
  digitalWrite(AwningL, toggleState_5);
  digitalWrite(AwningIn, HIGH);
  digitalWrite(AwningOut, LOW);
  digitalWrite(StepOut, HIGH);
  digitalWrite(StepIn, HIGH);
  delay(200);
}

void loop() {
  without_internet();
  if (Serial.available()) {
    Bluetooth_handle();
  }
}

you could use the Bounce2 library

Or this one, very simple:

When you get the buttons debounced, you will be able to jettison, it seems, most of the delays which look to be making the buttons work well.

Is this a separate issue? I don't see how debouncing would solve this problem.

a7

If it were me I would be sure I am drawing at least 1mA through a switch and then add a capacitor for debounce. Without seeing your schematic that is about the best I can offer. Why to keep noise out of the system by lowering its impedance.