Alarme multi-zone avec affichage lcd

Bonjour,
Je suis novice sur arduino :slight_smile: je viens de faire mon premier programme qui répond à mes besoins.
A savoir 6 capteurs pull-up de porte, 6 leds de notifications, un bouton poussoir pour mettre ON /OFF, un bouton reset, un buzzer, 2 relais pour activer des lumières et un écran lcd pour un affichage( c'est plus jolie).
Ma demande est sur ce dernier l'écran lcd. Avec ce code même si la porte se referme les notifications restent allumées jusqu'à une intervention en appuyant sur le bouton reset.
J'aimerais pouvoir afficher plusieurs notification si plusieurs capteurs sont enclenchés.
Je bloque... j'ai cherché autant que je pouvais, mais je ne trouve rien, l'idée d'un défilement sur les deux lignes me plais bien. Je vous joins mon code. Merci d'avance pour vos réponses et merci de m'avoir lu :slight_smile:


```cpp
#include <LiquidCrystal.h> //  library:

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

const int sensorPin1 = 40; // capteur de porte
const int sensorPin2 = 41;
const int sensorPin3 = 42;
const int sensorPin4 = 43;
const int sensorPin5 = 44;
const int sensorPin6 = 45;

const int ResetPin = 8; // boutton poussoir pour le reset
const int buttonOnOff = 9; // boutton poussoir pour le ON / OFF

const int ledPin1 = 26; // led information porte ouverte
const int ledPin2 = 27;
const int ledPin3 = 28;
const int ledPin4 = 29;
const int ledPin5 = 30;
const int ledPin6 = 31;
const int statusLed = 24;

const int buzzer = 37; // 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 = true;

void setup() {
  pinMode(sensorPin1, INPUT_PULLUP);
  pinMode(sensorPin2, INPUT_PULLUP);
  pinMode(sensorPin3, INPUT_PULLUP);
  pinMode(sensorPin4, INPUT_PULLUP);
  pinMode(sensorPin5, INPUT_PULLUP);
  pinMode(sensorPin6, INPUT_PULLUP);

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

  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(ledPin6, OUTPUT);

  pinMode(statusLed, OUTPUT);

  pinMode(buzzer, OUTPUT);
  digitalWrite(buzzer, LOW); // Le buzzer est eteint au debut
  pinMode(LedLCD, OUTPUT);
  digitalWrite(LedLCD, LOW); // La lumiere est éteinte 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

  lcd.begin(16, 2); 
}

void loop() {
  if (sensorsActive) {
    if (digitalRead(sensorPin1) == HIGH) {
      digitalWrite(ledPin1, HIGH);
      digitalWrite(buzzer, HIGH);
      digitalWrite(LedLCD, HIGH);
      digitalWrite(lumiere2, LOW);
      digitalWrite(lumiere1, LOW);
      lcd.clear();
      lcd.setCursor(3, 0); // Choix de la position et de la ligne (1)  
      lcd.print("2eme Etage");  // Message
      lcd.setCursor(3, 1);
      lcd.print("GRANDE AILE");
    }
    if (digitalRead(sensorPin2) == HIGH) {
      digitalWrite(ledPin2, HIGH);
      digitalWrite(buzzer, HIGH);
      digitalWrite(LedLCD, HIGH);
      digitalWrite(lumiere2, LOW);
      digitalWrite(lumiere1, LOW);
      lcd.clear();
      lcd.setCursor(3, 0);   
      lcd.print("2eme Etage");  
      lcd.setCursor(3, 1);
      lcd.print("PETITE AILE");
    }
    if (digitalRead(sensorPin3) == HIGH) {
      digitalWrite(ledPin3, HIGH);
      digitalWrite(buzzer, HIGH);
      digitalWrite(LedLCD, HIGH);
      digitalWrite(lumiere2, LOW);
      digitalWrite(lumiere1, LOW);
      lcd.clear();
      lcd.setCursor(3, 0); 
      lcd.print("2eme Etage");  
      lcd.setCursor(3, 1);
      lcd.print("PRINCIPALE");
    }
    if (digitalRead(sensorPin4) == HIGH) {
      digitalWrite(ledPin4, HIGH);
      digitalWrite(buzzer, HIGH);
      digitalWrite(LedLCD, HIGH);
      digitalWrite(lumiere2, LOW);
      digitalWrite(lumiere1, LOW);
      lcd.clear();
      lcd.setCursor(3, 0); 
      lcd.print("3eme Etage");  
      lcd.setCursor(3, 1);
      lcd.print("GRANDE AILE");
    }
    if (digitalRead(sensorPin5) == HIGH) {
      digitalWrite(ledPin5, HIGH);
      digitalWrite(buzzer, HIGH);
      digitalWrite(LedLCD, HIGH);
      digitalWrite(lumiere2, LOW);
      digitalWrite(lumiere1, LOW);
      lcd.clear();
      lcd.setCursor(3, 0);   
      lcd.print("2eme Etage");  
      lcd.setCursor(3, 1);
      lcd.print("PETITE AILE");
    }
    if (digitalRead(sensorPin6) == HIGH) {
      digitalWrite(ledPin6, HIGH);
      digitalWrite(buzzer, HIGH);
      digitalWrite(LedLCD, HIGH);
      digitalWrite(lumiere2, LOW);
      digitalWrite(lumiere1, LOW);
      lcd.clear();
      lcd.setCursor(3, 0);   
      lcd.print("2eme Etage"); 
      lcd.setCursor(3, 1);
      lcd.print("PRINCIPALE");
    }


    if (digitalRead(ResetPin) == LOW) {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(LedLCD, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      lcd.clear();
    }

    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = false;
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      digitalWrite(statusLed, HIGH);
      digitalWrite(LedLCD, HIGH); 
      lcd.clear();
      lcd.setCursor(4, 0);  
      lcd.print("SYSTEME");  
      lcd.setCursor(4, 1);
      lcd.print("INNACTIF");
      delay(3000);
      digitalWrite(LedLCD, LOW);
      lcd.clear();
    }
  } else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(LedLCD, HIGH); 
      lcd.clear();
      lcd.setCursor(4, 0); 
      lcd.print("SYSTEME");  
      lcd.setCursor(5, 1);
      lcd.print("ACTIF");
      delay(3000);
      digitalWrite(LedLCD, LOW);
      lcd.clear();
    }
  }
  delay(200);
}


Pourquoi ne pas commencer avec une solution simple, 6 caractères sur l'afficheur pour afficher l'état des 6 capteurs. 0 capteur au repos, 1 capteur actif.
Éventuellement, pour que les alarmes soient plus visibles, définir un caractère en négatif pour afficher les capteurs en alarme. On peut créer jusqu'à 8 caractères utilisateur sur ces écrans.

Bonjour @fdufnews merci pour ta réponse
tu vois une chose comme ça?
Sans titre
L'idée est bonne, pour la mise en forme je suppose qu'il faut enregistrer les image fixe et venir changer les 0 en 1(encore des heures de recherches :)). Ce projet est pour sécuriser un internat, donc les surveillant dorment et si jamais ca se met a sonner dans la nuit interpréter des logos je ne sais pas si ca sera pratique. Je vais essayer car l'idée est bonne. Merci de ton aide

Sinon pour aller au plus simple, afficher 6 tirets et faire apparaître un numéro en cas d'alarme
Aucune alarme
- - - - - -
en cas d'alarme sur les capteur 2 et 6, par exemple
- 2 - - - 6

Je reviens sur ta première idée @fdufnews ; en mettant les initiales ca passe je pense
Sans titre
Maintenant ce type de code est un mystère pour moi :).
Je vais chercher sur le net. Merci

La fonction snprintf permet de créer une chaine que tu pourras passer ensuite en argument à lcd.print()
Pour un code plus clair et plus pratique je te recommanderai de découper ton code différemment et de garder l'état des capteurs dans des variables.

Dans loop()

  • tu crées une variable par capteur pour stocker leur état
  • tu lis tous les capteurs d'un coup en plaçant leur état dans les variables créées
  • tu fais tes tests tels que tu les fais actuellement en testant les variables et non plus en faisant un digitlRead()
  • à la fin tu construis les chaines à afficher

Pour utiliser snprintf() il faut faire quelque chose dans ce genre
Les variables etatSenseurxx étant les variables qui stockent l'état des capteurs dont j'ai parlé juste au-dessus

char tampon[17]; // tampon pour stocker une ligne d'affichage + un terminateur

snprintf(tampon, 17,"3GA=%1d 3P=%1d 3PA=%1d", etatSenseur3GA, etatSenseur3P, etatSenseur3PA,);
lcd.setCursor(0, 0); // Choix de la position et de la ligne (1) 
lcd.print(tampon);
snprintf(tampon, 17,"2GA=%1d 2P=%1d 2PA=%1d", etatSenseur2GA, etatSenseur2P, etatSenseur2PA,);
lcd.setCursor(0, 1); // Choix de la position et de la ligne (1) 
lcd.print(tampon);

Salut et merci pour cette piste, je découvre les variables, et j'ai effacé tout mon" loop. Je te tiens au courant dans ma progression. J'ai déclaré un "int etatsensor"

Des nouvelles de mon projet :), merci, tout ces tests m'ont permis de bien comprendre mon code... je n'ai pas réussi a mettre en œuvre "snprintf" je n'ai pas trouvé d'explication suffisamment clair pour mon petit cerveau. Je l'ai remplacer par "sprintf" qui me donne le résultat voulu sauf que ca ne bloque pas ma variable, mais ca avance, c'est super.
J'espère que je suis compréhensible, mais merci @fdufnews de prendre du temps pour m'aider.
Je met mon code, si tu y vois une explication


```cpp
#include <LiquidCrystal.h> //  library:


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

const int sensorPin1 = 40; // capteur de porte
const int sensorPin2 = 41;
const int sensorPin3 = 42;
const int sensorPin4 = 43;
const int sensorPin5 = 44;
const int sensorPin6 = 45;

int etatsensor1; //Variable capteur
int etatsensor2;
int etatsensor3;
int etatsensor4;
int etatsensor5;
int etatsensor6;

//int etatOnOff; // Variable ON OFF

const int ResetPin = 8; // boutton poussoir pour le reset
const int buttonOnOff = 9; // boutton poussoir pour le ON / OFF

const int ledPin1 = 26; // ledPin1 information porte ouverte
const int ledPin2 = 27;
const int ledPin3 = 28;
const int ledPin4 = 29;
const int ledPin5 = 30;
const int ledPin6 = 31;
const int statusLed = 24;

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 = true;
char message[17] = "";



void setup() {
  pinMode(sensorPin1, INPUT_PULLUP);
  pinMode(sensorPin2, INPUT_PULLUP);
  pinMode(sensorPin3, INPUT_PULLUP);
  pinMode(sensorPin4, INPUT_PULLUP);
  pinMode(sensorPin5, INPUT_PULLUP);
  pinMode(sensorPin6, INPUT_PULLUP);

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

  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(ledPin6, OUTPUT);

  pinMode(statusLed, OUTPUT);

  pinMode(buzzer, OUTPUT);
  digitalWrite(buzzer, LOW); // Le buzzer est eteint au debut
  pinMode(ledLCD, OUTPUT);
  digitalWrite(ledLCD, HIGH); // 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

  

  lcd.begin(16, 2);  
 
}

void loop() {
  if (sensorsActive) {
  etatsensor1 = digitalRead(sensorPin1); // Lire la valeur du capteur
  etatsensor2 = digitalRead(sensorPin2);
  etatsensor3 = digitalRead(sensorPin3);
  etatsensor4 = digitalRead(sensorPin4);
  etatsensor5 = digitalRead(sensorPin5);
  etatsensor6 = digitalRead(sensorPin6);

  //char message[17] = ""; // tampon pour stocker une ligne d'affichage + un terminateur
  sprintf(message, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor1, etatsensor2, etatsensor3);
  lcd.setCursor(0, 0); // Choix de la position et de la ligne (1) 
  lcd.print(message);
  sprintf(message, "2GA=%1d 2P=%1d 2PA=%1d", etatsensor4, etatsensor5, etatsensor6);
  lcd.setCursor(0, 1);
  lcd.print(message);


  if (etatsensor1 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin1, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
  }

  if (etatsensor2 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin2, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
  }

  if (etatsensor3 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin3, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
  }

  if (etatsensor4 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin4, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
  }

  if (etatsensor5 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin5, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
  }

  if (etatsensor6 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin6, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
  }

  if (digitalRead(ResetPin) == LOW) {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      }

     if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = false; 
      digitalWrite(statusLed, HIGH);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(ledLCD, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      delay(200);
    }
    //{
    //sprintf(buffer, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor1, etatsensor2, etatsensor3,);
    //lcd.setCursor(0, 0); // Choix de la position et de la ligne (1) 
    //lcd.print(buffer);
    //snprintf(tampon, 17,"2GA=%1d 2P=%1d 2PA=%1d", etatsensor4, etatsensor5, etatsensor6,);
    //lcd.setCursor(0, 1); // Choix de la position et de la ligne (1) 
    //lcd.print(tampon);
   //}

    }else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(ledLCD, HIGH);
      delay(200);
      
    }  
  } 
   
    

  delay(200);
  }



  


sprintf et snprintf sont identiques.
La seule différence c'est que snprintf reçoit un paramètre supplémentaire, la longueur maximale de la chaine ce qui évite de planter le code si on calibre mal le buffer dans lequel on crée la chaine.

Je ne comprends pas ce que tu entends par là.

Dès que la porte se referme, l'affichage retourne sur "0". L'idée est tant que je n'ai pas appuyé sur le bouton reset l'affichage reste sur le "1", comme le reset de mes actionneurs.
Mais j'aime cet affichage, merci pour tes idées. @fdufnews

@fdufnews je devrais plutôt utiliser des variables basé sur mes leds? Je ne suis pas chez moi pour tester ça :cry:

Tu peux écrire la lecture des capteurs comme ceci

etatsensor1 = etatsensor1==HIGH? etatsensor1 : digitalRead(sensorPin1);

Cette écriture, en plus compacte, est équivalente à

if (etatsensor1==HIGH){
    etatsensor1=etatsensor1;
} else{
   etatsensor1 = digitalRead(sensorPin1);
}

Ceci permet de mémoriser l'état du capteur s'il a été vu à 1 au moins une fois.


Et dans la partie où tu fais `if (digitalRead(ResetPin) == LOW) {` il fat remettre à 0 toutes les variables d'état capteur.
A noter, tu as plusieurs capteurs et plusieurs LEDs et du coup tu est obligé de répéter la même ligne 6 fois pour lire l'état des capteurs, pour éteindre les LEDs, pour remettre à 0 l'état des capteurs.

Le code serait plus simple et plus facile à maintenir si tu utilisais des tableaux pour les capteurs, les LEDs et l'état des capteurs.

Oui, prochaine étape, :), raccourcir le code. J'arrive à peu prés a me repérer et je comprends l'ensemble maintenant. Je vais raccourcir les actionneurs aussi, j'ai vu cette "histoire" de tableaux. Il n'y a pas a dire, Arduino est intelligent.. je faisais de la domotique avec "jeedom" c'est plus a la portée de novice pour ce genre de projet, mais arduino est plus marrant

Salut, petit point sur le projet. Tout fonctionne correctement. J'ai essayé de raccourcir le code, je lutte un peu, mais je vais y arriver. Maintenant, je vais m'occuper de la modélisation 3D des panneaux de contrôle, car c'est pour les placer à deux endroits différents. Je pense que je peux mettre les deux en parallèle. Voici le code "barbare"


```cpp
#include <LiquidCrystal.h> //  library:

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

const int sensorPin1 = 40; // capteur de porte
const int sensorPin2 = 41;
const int sensorPin3 = 42;
const int sensorPin4 = 43;
const int sensorPin5 = 44;
const int sensorPin6 = 45;

int etatsensor1; //Variable capteur
int etatsensor2;
int etatsensor3;
int etatsensor4;
int etatsensor5;
int etatsensor6;

const int ResetPin = 8; // boutton poussoir pour le reset
const int buttonOnOff = 9; // boutton poussoir pour le ON / OFF

const int ledPin1 = 26; // led d'information porte ouverte
const int ledPin2 = 27;
const int ledPin3 = 28;
const int ledPin4 = 29;
const int ledPin5 = 30;
const int ledPin6 = 31;

const int statusLed = 24;

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 = true; // condition alarme active ou pas (ligne 157) 

char message[17] = "";


void setup() {
  pinMode(sensorPin1, INPUT_PULLUP);
  pinMode(sensorPin2, INPUT_PULLUP);
  pinMode(sensorPin3, INPUT_PULLUP);
  pinMode(sensorPin4, INPUT_PULLUP);
  pinMode(sensorPin5, INPUT_PULLUP);
  pinMode(sensorPin6, INPUT_PULLUP);

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

  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(ledPin6, OUTPUT);

  pinMode(statusLed, OUTPUT);

  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

  lcd.begin(16, 2);  
 
}

void loop() {
  if (sensorsActive) {
  etatsensor1 = etatsensor1==HIGH? etatsensor1 : digitalRead(sensorPin1); // Lire la valeur du capteur
  etatsensor2 = etatsensor2==HIGH? etatsensor2 : digitalRead(sensorPin2);
  etatsensor3 = etatsensor3==HIGH? etatsensor3 : digitalRead(sensorPin3);
  etatsensor4 = etatsensor4==HIGH? etatsensor4 : digitalRead(sensorPin4);
  etatsensor5 = etatsensor5==HIGH? etatsensor5 : digitalRead(sensorPin5);
  etatsensor6 = etatsensor6==HIGH? etatsensor6 : digitalRead(sensorPin6);
  
  lcd.clear();
  sprintf(message, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor1, etatsensor2, etatsensor3);
  lcd.setCursor(0, 0); // Choix de la position et de la ligne (1) 
  lcd.print(message);
  sprintf(message, "2GA=%1d 2P=%1d 2PA=%1d", etatsensor4, etatsensor5, etatsensor6);
  lcd.setCursor(0, 1);
  lcd.print(message);


  if (etatsensor1 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin1, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor2 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin2, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor3 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin3, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor4 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin4, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor5 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin5, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor6 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin6, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (digitalRead(ResetPin) == LOW) {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      etatsensor1 = etatsensor1==LOW? etatsensor1 : digitalRead(sensorPin1);
      etatsensor2 = etatsensor2==LOW? etatsensor2 : digitalRead(sensorPin2);
      etatsensor3 = etatsensor3==LOW? etatsensor3 : digitalRead(sensorPin3);
      etatsensor4 = etatsensor4==LOW? etatsensor4 : digitalRead(sensorPin4);
      etatsensor5 = etatsensor5==LOW? etatsensor5 : digitalRead(sensorPin5);
      etatsensor6 = etatsensor6==LOW? etatsensor6 : digitalRead(sensorPin6);
      digitalWrite(ledLCD, LOW);
      }

     if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = false; 
      digitalWrite(statusLed, HIGH);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(ledLCD, HIGH);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0);  
      lcd.print("SYSTEME");  
      lcd.setCursor(4, 1);
      lcd.print("INNACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      }
    
    }else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(ledLCD, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0); 
      lcd.print("SYSTEME");  
      lcd.setCursor(5, 1);
      lcd.print("ACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      etatsensor1 = etatsensor1==LOW? etatsensor1 : digitalRead(sensorPin1);
      etatsensor2 = etatsensor2==LOW? etatsensor2 : digitalRead(sensorPin2);
      etatsensor3 = etatsensor3==LOW? etatsensor3 : digitalRead(sensorPin3);
      etatsensor4 = etatsensor4==LOW? etatsensor4 : digitalRead(sensorPin4);
      etatsensor5 = etatsensor5==LOW? etatsensor5 : digitalRead(sensorPin5);
      etatsensor6 = etatsensor6==LOW? etatsensor6 : digitalRead(sensorPin6);
      }  
    } 
     delay(200);
  }



  


Quelque chose comme ça.
Code non testé. J'ai mis le code remplacé en commentaire.

#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
/*
const int sensorPin1 = 40; // capteur de porte
const int sensorPin2 = 41;
const int sensorPin3 = 42;
const int sensorPin4 = 43;
const int sensorPin5 = 44;
const int sensorPin6 = 45;
*/

int etatsensor[6]; //Variable etat capteur
/*
int etatsensor1; //Variable capteur
int etatsensor2;
int etatsensor3;
int etatsensor4;
int etatsensor5;
int etatsensor6;
*/

const int ResetPin = 8;     // boutton poussoir pour le reset
const int buttonOnOff = 9;  // boutton poussoir pour le ON / OFF

const int ledPin[6] = { 26, 27, 28, 29, 30, 31 }; // led d'information porte ouverte
/*
const int ledPin1 = 26; // led d'information porte ouverte
const int ledPin2 = 27;
const int ledPin3 = 28;
const int ledPin4 = 29;
const int ledPin5 = 30;
const int ledPin6 = 31;
*/

const int statusLed = 24;

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 = true;  // condition alarme active ou pas (ligne 157)

char message[17] = "";


void setup() {
  for (int i=0; i < 6; i++) {
    pinMode(sensorPin[i], INPUT_PULLUP);
  }
  /*
  pinMode(sensorPin1, INPUT_PULLUP);
  pinMode(sensorPin2, INPUT_PULLUP);
  pinMode(sensorPin3, INPUT_PULLUP);
  pinMode(sensorPin4, INPUT_PULLUP);
  pinMode(sensorPin5, INPUT_PULLUP);
  pinMode(sensorPin6, INPUT_PULLUP);
*/

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

  for (int i=0; i < 6; i++) {
    pinMode(ledPin[i], OUTPUT);
  }
  /*
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
  pinMode(ledPin4, OUTPUT);
  pinMode(ledPin5, OUTPUT);
  pinMode(ledPin6, OUTPUT);
*/
  pinMode(statusLed, OUTPUT);

  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

  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 du capteur
    }
    /*
  etatsensor1 = etatsensor1==HIGH? etatsensor1 : digitalRead(sensorPin1); // Lire la valeur du capteur
  etatsensor2 = etatsensor2==HIGH? etatsensor2 : digitalRead(sensorPin2);
  etatsensor3 = etatsensor3==HIGH? etatsensor3 : digitalRead(sensorPin3);
  etatsensor4 = etatsensor4==HIGH? etatsensor4 : digitalRead(sensorPin4);
  etatsensor5 = etatsensor5==HIGH? etatsensor5 : digitalRead(sensorPin5);
  etatsensor6 = etatsensor6==HIGH? etatsensor6 : digitalRead(sensorPin6);
*/

    lcd.clear();
    sprintf(message, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor[0], etatsensor[1], etatsensor[2]);
    lcd.setCursor(0, 0);  // Choix de la position et de la ligne (1)
    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) {
      for (int i=0; i < 6; i++) {
        if (etatsensor[i] == HIGH) {      // Si le capteur est déclenché
          digitalWrite(ledPin[i], HIGH);  // Allumer la LED
          digitalWrite(lumiere2, LOW);    // Activer le relai
          digitalWrite(buzzer, HIGH);
          digitalWrite(ledLCD, HIGH);
          digitalWrite(lumiere1, LOW);
        }
      }
    }

    /*
  if (etatsensor1 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin1, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor2 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin2, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor3 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin3, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor4 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin4, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor5 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin5, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }

  if (etatsensor6 == HIGH) { // Si le capteur est déclenché
    digitalWrite(ledPin6, HIGH); // Allumer la LED
    digitalWrite(lumiere2, LOW); // Activer le relai
    digitalWrite(buzzer, HIGH);
    digitalWrite(ledLCD, HIGH);
    digitalWrite(lumiere1, LOW);
  }
*/

    if (digitalRead(ResetPin) == LOW) {
      for (int i=0; i < 6; i++) {
        digitalWrite(ledPin[i], LOW);
        etatsensor[i] = LOW;
      }
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      digitalWrite(ledLCD, LOW);
    }
    /*
  if (digitalRead(ResetPin) == LOW) {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      etatsensor1 = etatsensor1==LOW? etatsensor1 : digitalRead(sensorPin1);
      etatsensor2 = etatsensor2==LOW? etatsensor2 : digitalRead(sensorPin2);
      etatsensor3 = etatsensor3==LOW? etatsensor3 : digitalRead(sensorPin3);
      etatsensor4 = etatsensor4==LOW? etatsensor4 : digitalRead(sensorPin4);
      etatsensor5 = etatsensor5==LOW? etatsensor5 : digitalRead(sensorPin5);
      etatsensor6 = etatsensor6==LOW? etatsensor6 : digitalRead(sensorPin6);
      digitalWrite(ledLCD, LOW);
      }
*/

    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = false;
      digitalWrite(statusLed, HIGH);
      for (int i=0; i < 6; i++) {
        digitalWrite(ledPin[i], LOW);
      }

      digitalWrite(buzzer, LOW);
      digitalWrite(ledLCD, HIGH);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0);
      lcd.print("SYSTEME");
      lcd.setCursor(4, 1);
      lcd.print("INNACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
    }
  } else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(ledLCD, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0);
      lcd.print("SYSTEME");
      lcd.setCursor(5, 1);
      lcd.print("ACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      for (int i=0; i < 6; i++) {
        digitalWrite(ledPin[i], LOW);
      }
    }

    /*
     if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = false; 
      digitalWrite(statusLed, HIGH);
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, LOW);
      digitalWrite(ledPin4, LOW);
      digitalWrite(ledPin5, LOW);
      digitalWrite(ledPin6, LOW);
      digitalWrite(buzzer, LOW);
      digitalWrite(ledLCD, HIGH);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0);  
      lcd.print("SYSTEME");  
      lcd.setCursor(4, 1);
      lcd.print("INNACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      }
    
    }else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(ledLCD, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0); 
      lcd.print("SYSTEME");  
      lcd.setCursor(5, 1);
      lcd.print("ACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      etatsensor1 = etatsensor1==LOW? etatsensor1 : digitalRead(sensorPin1);
      etatsensor2 = etatsensor2==LOW? etatsensor2 : digitalRead(sensorPin2);
      etatsensor3 = etatsensor3==LOW? etatsensor3 : digitalRead(sensorPin3);
      etatsensor4 = etatsensor4==LOW? etatsensor4 : digitalRead(sensorPin4);
      etatsensor5 = etatsensor5==LOW? etatsensor5 : digitalRead(sensorPin5);
      etatsensor6 = etatsensor6==LOW? etatsensor6 : digitalRead(sensorPin6);
      }  
    } 
*/
  }
  delay(200);
}

Merci @fdufnews ton code marche super bien. J'avais essayé ce code mais il y avait des beugs. Grace à toi j'ai encore découvert une fonction /* ...*/ . C'est bien pratique.
J'ai juste changé a la fin du code "digitalWrite(ledPin[i], LOW); par etatsensor[i] = LOW; pour ne pas avoir de "faux " positif au redémarrage.
Je met le nouveau code "propre" si quelqu'un en a besoin.
Je laisse le sujet ouvert, pour vous montrer le résultat final, si le projet est approuvé par mes supérieurs.
J'ai bien avancé sur les panneaux de contrôles, maintenant il faut que ça plaise.
En tout cas merci pour cette collaboration (apprentissage).


```cpp
#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 ledPin[6] = { 26, 27, 28, 29, 30, 31 }; // led d'information porte ouverte

const int statusLed = 24;

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 = true;  // condition alarme active ou pas (ligne 157)

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);

  for (int i=0; i < 6; i++) {
    pinMode(ledPin[i], OUTPUT);
  }

  pinMode(statusLed, OUTPUT);

  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

  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 du capteur
    }
  
    lcd.clear();
    sprintf(message, "3GA=%1d 3P=%1d 3PA=%1d", etatsensor[0], etatsensor[1], etatsensor[2]);
    lcd.setCursor(0, 0);  // Choix de la position et de la ligne (1)
    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) {
      for (int i=0; i < 6; i++) {
        if (etatsensor[i] == HIGH) {      // Si le capteur est déclenché
          digitalWrite(ledPin[i], HIGH);  // Allumer la LED
          digitalWrite(lumiere2, LOW);    // Activer le relai
          digitalWrite(buzzer, HIGH);
          digitalWrite(ledLCD, HIGH);
          digitalWrite(lumiere1, LOW);
        }
      } 
    }
    if (digitalRead(ResetPin) == LOW) {
      for (int i=0; i < 6; i++) {
        digitalWrite(ledPin[i], LOW);
        etatsensor[i] = LOW;
      }
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      digitalWrite(ledLCD, LOW);
    }
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = false;
      digitalWrite(statusLed, HIGH);
      for (int i=0; i < 6; i++) {
        digitalWrite(ledPin[i], LOW);
      }
      digitalWrite(buzzer, LOW);
      digitalWrite(ledLCD, HIGH);
      digitalWrite(lumiere2, HIGH);
      digitalWrite(lumiere1, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0);
      lcd.print("SYSTEME");
      lcd.setCursor(4, 1);
      lcd.print("INNACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
    }
  } else {
    if (digitalRead(buttonOnOff) == LOW) {
      sensorsActive = true;
      digitalWrite(statusLed, LOW);
      digitalWrite(ledLCD, HIGH);
      lcd.clear();
      lcd.setCursor(4, 0);
      lcd.print("SYSTEME");
      lcd.setCursor(5, 1);
      lcd.print("ACTIF");
      delay(3000);
      digitalWrite(ledLCD, LOW);
      lcd.clear();
      for (int i=0; i < 6; i++) {
        etatsensor[i] = LOW;
      }
    }
  }
  delay(200);
}

Argh! erreur de copié-collé.
Bonne continuation.

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]

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.