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