Lire deux capteur d'humidité a intervalle différent non bloquant.

Bonjour, merci pour la réponse,

J'ai essayé avec un bout de code "timer" :

Je voulais savoir si cela fonctionnerais ?

Par contre, est-ce que le " delay(1000 - SENSOR_DELAY); va me bloquer le code?

const int canal = 10; // niveau d'eau canal
const int pompe = 9; // relais pompe
const int capthumidite = 8; // détecteur d'humidité numéro 1
const int power = 12; // alimentation capteur humidité sur pin 12
int ledhumide = 7;
int ledsec = 6;
int ledniveaucanalbas = 5;
int ledniveaucanalhaut = 4;
const int ledprogramateur = 3;
int pumpLEDPin = 2; // Led  pompe verte

// Define our timer.
const int TIMER = 300; // in seconds
const int RESET = TIMER - 1;
const int SENSOR_DELAY = 10; // in milliseconds
int counter;


void setup()
{
  // Configure la broche avec la résistance de tirage
  Serial.begin(9600);
  pinMode(canal, INPUT); // niveau d'eau du canal
  pinMode(pompe, OUTPUT); // pompe est une broche de sortie
  pinMode(capthumidite, INPUT); // détecteur d'humidité
  pinMode(power, OUTPUT);
  pinMode(ledhumide, OUTPUT);
  pinMode(ledsec, OUTPUT);
  pinMode(ledniveaucanalbas, OUTPUT);
  pinMode(ledniveaucanalhaut, OUTPUT);
  pinMode(ledprogramateur, OUTPUT);
  pinMode(pumpLEDPin, OUTPUT);

  // Start with sensor OFF
  digitalWrite(power, LOW);

  // Setup timer.
  counter = RESET;

}



void loop()
{


  digitalWrite(ledprogramateur, HIGH); // Allumer Led programateur


  int niveaucanal = digitalRead(canal); // Lecture de l etat du du niveau d'eau canal
  int humidite = digitalRead(capthumidite); // Lecture de l etat du détecteur 1


  // If the counter is at the end of a cycle
  // take a new reading and reset counter.
  if (counter <= 0) {
    // Turn sensor ON and wait a moment.
    digitalWrite(power, HIGH);
    delay(SENSOR_DELAY);

    // Take reading, send to plotter.
    Serial.println(analogRead(capthumidite));

    if  (humidite == LOW) {
      digitalWrite(ledhumide, HIGH); // Allumer LED humide
      digitalWrite(ledsec, LOW); // Eteindre Led sec
    }

    if  (humidite == HIGH) {
      digitalWrite(ledsec, HIGH); // Allumer Led sec
      digitalWrite(ledhumide, LOW); // Eteindre LED humide
    }

    // Turn sensor OFF again.
    digitalWrite(power, LOW);

    // Start new countdown.
    counter = RESET;
  }

  // If counter isn't at the end yet, pause for
  // the same amount of time as if the sensor
  // had been activated to keep things in sync.
  else {
    delay(SENSOR_DELAY);
  }

  // Decrement counter and delay until next second.
  counter--;
  delay(1000 - SENSOR_DELAY);




  if  ((niveaucanal) == HIGH) {
    digitalWrite(ledniveaucanalbas, HIGH); // Allumer LED niveau canal bas
    digitalWrite(ledniveaucanalhaut, LOW); // Eteindre Led niveau canal haut
  }

  if  ((niveaucanal) == LOW) {
    digitalWrite(ledniveaucanalbas, LOW); // Eteindre Led niveau canal bas
    digitalWrite(ledniveaucanalhaut, HIGH); // Allumer LED niveau canal haut
  }






  // Agir en fonction de l'état des parametres
  if ((humidite == HIGH) && (niveaucanal == LOW))
  {
    digitalWrite(pompe, LOW);
    digitalWrite(pumpLEDPin, HIGH); // Allumer Led pompe
  }
  else
  {
    digitalWrite(pompe, HIGH);
    digitalWrite(pumpLEDPin, LOW); // Eteindre Led pompe
  }







  delay(5000); // Attendre 5 seconde (prendre des mesures toutes les 5 secondes)
}