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