// lécran
#include <LiquidCrystal.h>
// Le Capteur
#include "DHT.h"
#define DHTPIN 2 // broche ou l'on a branche le capteur
#define DHTTYPE DHT11 // préciser le modéle de notre capteur
#define T_critique 20
#define U_critique 10
#define Led_Temp_sup 5 //RED
#define Led_Temp_inf 4 //GREEN
#define Led_Humid 3 //BLUE
DHT dht(DHTPIN, DHTTYPE);//déclaration du capteur
//// Create an LCD object. Parameters: (RS, E, D4, D5, D6, D7):
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // déclaration des pins du LCD
void setup()
{
// initialise le nombre de caractères et de lignes du LCD
Serial.begin(9600);
lcd.begin(16, 2);
dht.begin();
pinMode(Led_Temp_sup,OUTPUT);
pinMode(Led_Temp_inf,OUTPUT);
pinMode(Led_Humid,OUTPUT);
digitalWrite(Led_Humid,LOW);
digitalWrite(Led_Temp_inf,LOW);
digitalWrite(Led_Temp_sup,LOW) ;
}
void loop()
{
delay(2000); // Attente démarrage LCD et fréquence d'acquisition des valeurs
/*****************************************/
lcd.clear();
lcd.setCursor(0, 0); // positionne le curseur à la colonne 1 et à la ligne 1
lcd.print(" ** ISIMG ** ");
lcd.setCursor(0, 1);
lcd.print("PROJET ROBOTIQUE");
delay(2000);
/******************************************/
lcd.clear();
lcd.setCursor(0, 0); // positionne le curseur à la colonne 1 et à la ligne 1
lcd.print("** AQUISITION **");
lcd.setCursor(0, 1);
lcd.print("Temp et Humidite");
delay(2000);
/***************************************/
// La lecture du capteur prend 250ms
// Les valeurs lues peuvet etre vieilles de jusqu'a 2 secondes (le capteur est lent)
float h = dht.readHumidity(); //Lecture du taux d'humidité
float t = dht.readTemperature(); //Lecture de la température en degrée Celsius
float temperatureRessentieEnCelsius = dht.computeHeatIndex(t, h, false); // Le "false" est là pour dire qu'on travaille en °C, et non en °F
// vérification des valeurs critiques
if (t<T_critique){
digitalWrite(Led_Temp_sup,LOW) ;
//digitalWrite(Led_Temp_inf,HIGH) ;
blink_Led(Led_Temp_inf);
}else{
//digitalWrite(Led_Temp_sup,HIGH) ;
digitalWrite(Led_Temp_inf,LOW) ;
blink_Led(Led_Temp_sup);
}
if (h<U_critique){
digitalWrite(Led_Humid,LOW) ;
}else
{
//digitalWrite(Led_Humid,HIGH) ;
blink_Led(Led_Humid);
}
/******************************************/
//Affichage sur le port serie avec un format Json
Serial.print("{\"Tmp\":");
Serial.print(t);
Serial.print(",\"Hmd\":");
Serial.print(h);
Serial.print("}");
Serial.println();
/****************************************/
//Affichages :
// Ligne 1:
lcd.clear();
lcd.setCursor(0, 0); // positionne le curseur à la colonne 1 et à la ligne 1
lcd.print("Humidite: ");
lcd.setCursor(10, 0);
lcd.print(h);
lcd.setCursor(15, 0);
lcd.print("%");
// Ligne 2:
lcd.setCursor(0, 1); // positionne le curseur à la colonne 1 et à la ligne 2
lcd.print("Temp: ");
lcd.setCursor(8, 1);
lcd.print(t);
lcd.print(" C");
}
// *** Calcul de la température ressentie
// float t_RessentieEnCelsius = dht.computeHeatIndex(t, h, false); // Le "false" est là pour dire qu'on travaille en °C, et non en °F
//**********************/
void blink_Led(int Param_Led)
{
digitalWrite(Param_Led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(200); // wait for a second
digitalWrite(Param_Led, LOW); // turn the LED off by making the voltage LOW
delay(200);
}
// https://www.tutoriel-arduino.com/temperature-lcd-arduino/
//https://plaisirarduino.fr/les-fonctions/