//Définition des constantes
#define HUMIDITE A0
#define TEMP_AIR A1
#define POMPE 2
#define FIN_COURSE_TRAPPE_HAUT 4
#define FIN_COURSE_TRAPPE_BAS 5
#define TRAPPE_O 6
#define TRAPPE_F 7
//Définition des variables
unsigned int tempCan = 0;
float temperature = 0;
float seuilTemperatureHaut = 30.0;
float seuilTemperatureBas = 20.0;
unsigned int humiditeCan = 0;
unsigned int seuilHumidite = 400;
void setup() {
Serial.begin(9600);
pinMode(POMPE, OUTPUT);
pinMode(FIN_COURSE_TRAPPE_HAUT, INPUT_PULLUP);
pinMode(FIN_COURSE_TRAPPE_BAS, INPUT_PULLUP);
pinMode(TRAPPE_O, OUTPUT);
pinMode(TRAPPE_F, OUTPUT);
digitalWrite(POMPE, HIGH);
digitalWrite(TRAPPE_O, LOW);
digitalWrite(TRAPPE_F, LOW);
}
void loop() {
//traitement température de l'air
tempCan = analogRead (TEMP_AIR); //simulation par pot 0 à 1023
temperature = 50*tempCan/1023; //convertion en degrés de 0 à 50
Serial.print("température : ");
Serial.println(temperature,1);
if (temperature > seuilTemperatureHaut) ouvrirTrappe(); //on aère si la température devient trop forte
else if (temperature < seuilTemperatureBas)fermerTrappe(); //on garde la chaleur
//traiment humidité sol
humiditeCan = analogRead(HUMIDITE);//simulation par pot 0 à 1023
Serial.print("humidité sol : ");//0-300:sol sec
Serial.println(humiditeCan);
if (humiditeCan < seuilHumidite) alimenterPompe(); //on arrose si l'humidité du sol est inférieur au seuil
else arreterPompe(); //on arrête d'arroser
delay(1000);
}
void ouvrirTrappe() {
while (digitalRead(FIN_COURSE_TRAPPE_HAUT) == 1) digitalWrite(TRAPPE_O, HIGH);
digitalWrite(TRAPPE_O, LOW);
}
void fermerTrappe() {
while (digitalRead(FIN_COURSE_TRAPPE_BAS) == 1) digitalWrite(TRAPPE_F, HIGH);
digitalWrite(TRAPPE_F, LOW);
}
void alimenterPompe() {
Serial.println("Arrosage");
digitalWrite(POMPE, HIGH);
}
void arreterPompe() {
Serial.println("Arrêt arrosage");
digitalWrite(POMPE, LOW);
}