Alarme multi-zone avec affichage lcd

Bonjour, je reviens vers vous pour donner suite au projet. Les demandes ont progressés, à savoir la desactivation d'une partie des capteurs. Pour situer ce sont des étages.
il n'y a plus de LED de notification pour chaque porte et tout se fera sur l'affichage du LCD. Il y aura un suplément de 4 capteurs et un ecran 20x4, mais je vais tester cette solution avant d'acheter du matériel.
Mon but est de mettre 3 panneaux de controle identiques en parrallèle pour les 3 chambres de maitre d'internat.
Encore merci pour toutes vos informations.

[code]

#include <LiquidCrystal.h>  //  library:

LiquidCrystal lcd = LiquidCrystal(2, 3, 4, 5, 6, 7);  // Pin Parameters: (RS, E, D4, D5, D6, D7):

const int sensorPin[6] = { 40, 41, 42, 43, 44, 45 }; // capteur de porte

int etatsensor[6]; //Variable etat capteur

const int ResetPin = 8;     // boutton poussoir pour le reset
const int buttonOnOff = 9;  // boutton poussoir pour le ON / OFF
const int buttonZone3 = 30; // bouton poussoir zone 3
const int buttonZone2 = 31; // bouton poussoir zone 2


const int statusLed = 24; // led statut ON OFF
const int ledAlerte = 26; // led notification alerte

const int buzzer = 10;    // broche buzzer
const int ledLCD = 36;    // broche lumiere (ecran lcd) broche A
const int lumiere2 = 38;  // broche lumiere
const int lumiere1 = 39;  // broche lumiere

bool sensorsActive = false;  // condition alarme active ou pas 
bool zone3Active = true;   // condition zone 3
bool zone2Active = true;  // condition zone 2

char message[17] = "";


void setup() {
  for (int i=0; i < 6; i++) {
    pinMode(sensorPin[i], INPUT_PULLUP);
  }

  pinMode(ResetPin, INPUT_PULLUP);
  pinMode(buttonOnOff, INPUT_PULLUP);
  pinMode(buttonZone3, INPUT_PULLUP);
  pinMode(buttonZone2, INPUT_PULLUP);

 

  pinMode(statusLed, OUTPUT);
  digitalWrite(statusLed, HIGH);

  pinMode(buzzer, OUTPUT);
  digitalWrite(buzzer, LOW);  // Le buzzer est eteint au debut
  pinMode(ledLCD, OUTPUT);
  digitalWrite(ledLCD, LOW);  // La affichage lcd éteint au début
  pinMode(lumiere2, OUTPUT);
  digitalWrite(lumiere2, HIGH);  // La lumiere est éteinte au début
  pinMode(lumiere1, OUTPUT);
  digitalWrite(lumiere1, HIGH);  // La lumiere est éteinte au début
  pinMode (ledAlerte, OUTPUT);
  digitalWrite (ledAlerte, LOW);

  lcd.begin(16, 2);
}

void loop() {
  if (sensorsActive) {
    for (int i=0; i < 6; i++) {
      etatsensor[i] = etatsensor[i] == HIGH ? etatsensor[i] : digitalRead(sensorPin[i]);  // Lire la valeur des capteurs
      
    }

    bool buttonZone3State = digitalRead(buttonZone3); //declare la surveillance des bool
    bool buttonZone2State = digitalRead(buttonZone2);

    

    if (!buttonZone3State)  { // Desactivation ou Activation du 3 eme étage
    zone3Active = !zone3Active;
    digitalWrite(ledLCD, HIGH);
    if (zone3Active) {
    lcd.clear();
    sprintf(message, "3eme ETAGE");
    lcd.setCursor(3, 0);  
    lcd.print(message);
    sprintf(message, "ACTIF");
    lcd.setCursor(5, 1);
    lcd.print(message);
    delay(1000);
    digitalWrite(ledLCD, LOW);
    }
    if (!zone3Active) {
     lcd.clear();
    sprintf(message, "3eme ETAGE");
    lcd.setCursor(3, 0);  
    lcd.print(message);
    sprintf(message, "INNACTIF");
    lcd.setCursor(4, 1);
    lcd.print(message);
    delay(1000);
    digitalWrite(ledLCD, LOW);
    }
    }

    
  if (!buttonZone2State) {    // Desactivation ou Activation du 2 eme étage
    zone2Active = !zone2Active;
    digitalWrite(ledLCD, HIGH);

     if (zone2Active) {
    lcd.clear();
    sprintf(message, "2eme ETAGE");
    lcd.setCursor(3, 0);  //
    lcd.print(message);
    sprintf(message, "ACTIF");
    lcd.setCursor(5, 1);
    lcd.print(message);
    delay(1000);
    digitalWrite(ledLCD, LOW);
    }
    if (!zone2Active) {
    lcd.clear();
    sprintf(message, "2eme ETAGE");
    lcd.setCursor(3, 0);  
    lcd.print(message);
    sprintf(message, "INNACTIF");
    lcd.setCursor(4, 1);
    lcd.print(message);
    delay(1000);
     digitalWrite(ledLCD, LOW);
  } 
  }

  
  if (!zone3Active) {    // Désactiver les capteurs de la zone 3 si zone3Active est false    // dit quoi faire quand bool false
      for (int i=0; i < 3; i++) {
        etatsensor[i] = LOW;
      }
    }
     if (!zone2Active) {   // Désactiver les capteurs de la zone 2 si zone2Active est false
      for (int i=3; i < 6; i++) {
        etatsensor[i] = LOW;
      }
    }
    

 
    
    if ((sensorsActive) && (zone3Active) && (zone2Active)){  // Affichage si toutes les zones sont Actives
    lcd.clear();
    sprintf(message, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor[0], etatsensor[1], etatsensor[2]);
    lcd.setCursor(0, 0);  
    lcd.print(message);
    sprintf(message, "2GA=%1d 2P=%1d 2PA=%1d", etatsensor[3], etatsensor[4], etatsensor[5]);
    lcd.setCursor(0, 1);
    lcd.print(message);
    }
    
    if ((sensorsActive) && (!zone3Active) && (zone2Active) ){   // Affichage si zones 3 est Desactivé
    lcd.clear();
    sprintf(message, "3 INNACTIF");
    lcd.setCursor(3, 0);  
    lcd.print(message);
    sprintf(message, "2GA=%1d 2P=%1d 2PA=%1d", etatsensor[3], etatsensor[4], etatsensor[5]);
    lcd.setCursor(0, 1);
    lcd.print(message);
    }

    
    
    if ((sensorsActive) && (!zone2Active) && (zone3Active)){    // Affichage si zones 2 est Désactivé
    lcd.clear();
    sprintf(message, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor[0], etatsensor[1], etatsensor[2]);
    lcd.setCursor(0, 0);  
    lcd.print(message);
    sprintf(message, "2 INNACTIF");
    lcd.setCursor(3, 1);
    lcd.print(message);
    }

    if ((sensorsActive) && (!zone2Active) && (!zone3Active) ){ // Affichage si toutes les zones sont Désactivés
    lcd.clear();
    sprintf(message, "3 INNACTIF");
    lcd.setCursor(3, 0);  
    lcd.print(message);
    sprintf(message, "2 INNACTIF");
    lcd.setCursor(3, 1);
    lcd.print(message);
    }

    
    if (sensorsActive){
      for (int i=0; i < 6; i++) {
        if (etatsensor[i] == HIGH) {      // Si le capteur est déclenché
          digitalWrite(lumiere2, LOW);    
          digitalWrite(buzzer, HIGH);
          digitalWrite(ledLCD, HIGH);
          digitalWrite(lumiere1, LOW);
          digitalWrite (ledAlerte, HIGH);
        }
      } 
    }

    
    if (digitalRead(ResetPin) == LOW) {  //si appuis sur reset
      for (int i=0; i < 6; i++) {
      etatsensor[i] = LOW;
      }
      digitalWrite(ledLCD, HIGH);
      digitalWrite(buzzer, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      digitalWrite(ledAlerte, LOW);
      delay(1500);
      digitalWrite(ledLCD, LOW);
    }
      
    
    
    if (digitalRead(buttonOnOff) == LOW) { // si appuis sur boutton ON OFF
      sensorsActive = false;
      digitalWrite(statusLed, HIGH);
      digitalWrite(buzzer, LOW);
      digitalWrite(ledLCD, HIGH);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      digitalWrite(ledAlerte, LOW);
      lcd.clear();
      lcd.setCursor(4, 0);
      lcd.print("SYSTEME");
      lcd.setCursor(4, 1);
      lcd.print("INNACTIF");
      delay(2000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
    }

    
  } else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(ledLCD, HIGH);
      digitalWrite(ledAlerte, LOW);
      lcd.clear();
      lcd.setCursor(4, 0);
      lcd.print("SYSTEME");
      lcd.setCursor(5, 1);
      lcd.print("ACTIF");
      delay(2000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      for (int i=0; i < 6; i++) {
        etatsensor[i] = LOW;
      }
      }
      }
  delay(200);
}
[/code]