#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHTPIN1 2 //Pin du DHT22 1
#define DHTPIN2 3 //Pin du DHT22 2
#define DHTPIN3 4 //Pin du DHT22 3
#define DHTPIN4 5 //Pin du DHT22 4
#define DHTTYPE DHT22 //DHT 22 (AM2302)
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
DHT dht3(DHTPIN3, DHTTYPE);
DHT dht4(DHTPIN4, DHTTYPE);
//Pins des relais
int relayPins[4]={6, 7, 8, 9};
//Pins des potentiometres
int potPins[4]={A0, A1, A2, A3};
//Creation de l'objet LCD I2C
LiquidCrystal_I2C lcd(0x27, 20, 4); //adresse I2C
void setup() {
//initialisation des relais
for (int i=0; i<4;i++) {
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], LOW); //relais eteint par defaut
}
//initialisation des capteurs DHT
dht1.begin();
dht2.begin();
dht3.begin();
dht4.begin();
//initialisation de l'ecran
lcd.init();
lcd.backlight();
}
void loop() {
//lecture des temperatures
float temperatures[4];
temperatures[0]=dht1.readTemperature();
temperatures[1]=dht2.readTemperature();
temperatures[2]=dht3.readTemperature();
temperatures[3]=dht4.readTemperature();
//lecture des valeurs potentiometres
int desiredTemps[4];
for (int i=0; i<4; i++){
desiredTemps[i]=analogRead(potPins[i])*(100.0/1023.0); //conversion en temperature souhaitee (0.100)
}
//mise a jour des relais en fonction des temperatures
for(int i=0; i<4; i++){
if(temperatures[i]<desiredTemps[i]){
digitalWrite(relayPins[i],HIGH); //activer le relai si la temperature est inferieure
}else{
digitalWrite(relayPins, LOW); //desactiver les relai si la temperature est suffisante
}
}
//affichage des informations a l'ecran
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(desiredTemps[0]);
lcd.setCursor(0, 8);
lcd.print("T:");
lcd.print(temperatures[2]);
lcd.print("C");
delay(2000); //attendre deux secondes avant la prochaine lecture
}