[RESOLU]Arduino activer une pompe avec des capteurs de pression et niveau d'eau

Bonjour,

j'ai rajouté une temporisation, pouvez vous me dire si mon code tient la route?

Enfait, il y a un contact qui déclenchera la pompe seulement si le niveau d'eau est bon et si l'humidité du sol est "sec".

Si la pompe démarre, alors il y a temporisation de 5 secondes puis il y a la mesure de la pression qui s'éffectue, si la pression n'a pas les conditions requises, alors la pompe s'éteint.

// État d'activation de la tempo
int tempoActive = 0;

// Temps à l'activation de la tempo
unsigned long tempoDepart = 0;



// pins definition
int bouton = 0;
int moistureSensorPin = 1;
int soggyLEDPin = 3;
int moistsoilLEDPin = 4;
int drysoilLEDPin = 5;
int pumpLEDPin = 6;
int pumpPin = 7;
const int led_verte = 2;//Led verte sur pin 2
const int led_rouge = 8;//Led rouge sur pin 1

// variables
int boutonValue;       // stores the level sensor values
int moistureSensorValue;    // stores the moisture sensor values
int etatBouton;             // variable qui enregistre l'état du bouton




void setup() {
  // serial initialization
  Serial.begin(9600);






  // Arduino pins initalization

  pinMode(soggyLEDPin, OUTPUT);
  pinMode(moistsoilLEDPin, OUTPUT);
  pinMode(drysoilLEDPin, OUTPUT);
  pinMode(pumpLEDPin, OUTPUT);
  pinMode(pumpPin, OUTPUT);
  pinMode(bouton, INPUT); // le bouton est une entrée




  etatBouton = HIGH; // on initialise l'état du bouton comme "relaché"






}


void loop() {


  etatBouton = digitalRead(bouton); // Rappel : bouton = 2

  // reads the sensors
  boutonValue = analogRead(bouton);
  moistureSensorValue = analogRead(moistureSensorPin);




  // check the moisture range
  if (moistureSensorValue >= 700) {
    // in case of dry soil:

    // lights up the correct LED
    digitalWrite(drysoilLEDPin, HIGH);
    digitalWrite(moistsoilLEDPin, LOW);
    digitalWrite(soggyLEDPin, LOW);

  }
  if ((moistureSensorValue < 700) && (moistureSensorValue >= 300)) {
    // in case of moist soil:

    // lights up the correct LED
    digitalWrite(drysoilLEDPin, LOW);
    digitalWrite(moistsoilLEDPin, HIGH);
    digitalWrite(soggyLEDPin, LOW);
    delay(250);
  }
  if (moistureSensorValue < 300) {
    // in case of soggy soil:

    // lights up the correct LED
    digitalWrite(drysoilLEDPin, LOW);
    digitalWrite(moistsoilLEDPin, LOW);
    digitalWrite(soggyLEDPin, HIGH);
    delay(100);
  }

  // if the soil is dry and if it is the right time: turn on the pump for 1 minute
  if ((etatBouton == LOW)) {

    while (moistureSensorValue >= 700) {

      // turn the pump on
      digitalWrite(pumpPin, HIGH);
      digitalWrite(pumpLEDPin, HIGH);

      delay(10000);
      // if the soil is not moist so far
      // reads the moisture sensor once more
      moistureSensorValue = analogRead(moistureSensorPin);
    }
    // turn the pump off
    digitalWrite(pumpPin, LOW);
    digitalWrite(pumpLEDPin, LOW);
  }



  // Si le bouton est enfoncé,
  if ( digitalRead(bouton) == LOW ) {

    // Alors on active la temporisation
    tempoActive = 1;
    tempoDepart = millis();

  }

  // Si la temporisation est active,
  if ( tempoActive ) {

    // Et si il s'est écoulé 5 secondes,
    if ( ( millis() - tempoDepart ) >= 5000 ) {


      // Et on désactive la temporisation
      tempoActive = 0;

      // Puis on vérifie la pression,

      int sensorVal = analogRead(A1);
      Serial.print("Sensor Value: ");
      Serial.print(sensorVal);

      float voltage = (sensorVal * 5.0) / 1024.0;
      Serial.print("volts: ");
      Serial.print(voltage);

      float pressure_pascal = (3.0 * ((float)voltage - 0.47)) * 1000000.0;
      float pressure_bar = pressure_pascal / 10e5;
      Serial.print("Pressure = ");
      Serial.print(pressure_bar);
      Serial.println(" bars");
      Serial.print("Pressure = ");


      if (pressure_bar < 0.05)

      {

        //ce code n'est exécuté que si la condition est vérifiée
        Serial.println("Pression trop basse");
        digitalWrite(pumpPin, LOW);
        digitalWrite(led_verte, LOW);// led verte d'un état Bas
        digitalWrite(led_rouge, HIGH);// led rouge d'un état Bas
      }

      if (pressure_bar > 0.05)

      {

        //ce code n'est exécuté que si la condition est vérifiée

        Serial.println("Pression Bonne");
        digitalWrite(pumpPin, HIGH);
        digitalWrite(led_verte, HIGH);// led verte d'un état Haut
        digitalWrite(led_rouge, LOW);// led rouge d'un état Bas

      }



    }

  }





}