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