Bonjour,
Je suis novice sur arduino 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
```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);
}