#include <DHT.h>;
//Constants
#define DHTPIN 2 // what pin we're connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE); //// Initialize DHT sensor for normal 16mhz Arduino
//Constantes Globales
const int ARRAY_VALUE_SIZE = 5; // Cette constante représente la taille des tableaux de valeurs
//Variables Globales
float humidities[ARRAY_VALUE_SIZE]; //Ce tableau stockera 5 valeurs d'humidité à la fois
float temperatures[ARRAY_VALUE_SIZE]; //Ce tableau stockera 5 valeurs de temperature à la fois
float TemperatureValueArraySum = 0.0;
float HumidityValueArraySum = 0.0;
// Prototype des fonctions
float calculerMoyenneTemperature();
float calculerMoyenneHumidite();
void setup() {
Serial.begin(9600); // Initialisation de la communication série
dht.begin(); // Initialisation du capteur DHT
}
void loop()
{
// Section 1 : Déclaration des Variables et Constantes (20 points)
// Q1 : Déclarez un tableau pour stocker les valeurs de température (5 échantillons).
// Q2 : Déclarez un tableau pour stocker les valeurs d'humidité (5 échantillons).
//Variables Locales
float humidity; //Cette variable stockera les valeurs d'humitité
float temperature; //Cette variable stockera les valeurs de température
char inputData; // Cette variable stockera la saisie utilisateur pour afficher la moyenne de valeur en fonction des indication du menu
// Section 2 : Opérations Arithmétiques (20 points)
// Q3 : Utilisez une boucle pour remplir le tableau de valeurs de température avec des lectures du capteur DHT.
// Q4 : Utilisez une boucle pour remplir le tableau de valeurs d'humidité avec des lectures du capteur DHT.
humidity = dht.readHumidity(); // Récupération de la donnée d'humidité
temperature= dht.readTemperature(); // Récupération de la donnée de température
for(int i = 0; i < ARRAY_VALUE_SIZE; i++)
{
humidities[i] = humidity; //Remplissage des données d'humidité dans le tableau
temperatures[i] = temperature; //Remplissage des données de température dans le tableau
}
// Section 3 : Conditions If Imbriquées (20 points)
// Q5 : Utilisez une condition if pour vérifier si la température dépasse 25 degrés Celsius, et afficher un message pour informer l'utilisateur.
// Q6 : Utilisez une série de conditions if imbriquées pour afficher des messages basés sur différents seuils de température et d'humidité.
// en condition combiné :
// Tranches pour évaluer la température ressentie en fonction de la température et de l'humidité
// Tranche 1 (Température froide et faible humidité)
// - Température : < 10°C
// - Humidité : < 40%
// - Température ressentie : "Froid, basse humidité."
// Tranche 2 (Température modérée avec humidité moyenne)
// - Température : 10°C à 25°C
// - Humidité : 40% à 60%
// - Température ressentie : "Confortable, humidité normale."
// Tranche 3 (Température élevée avec humidité élevée)
// - Température : > 25°C
// - Humidité : > 60%
// - Température ressentie : "Chaud et humide."
for(int i = 0; i < ARRAY_VALUE_SIZE; i++)
if (temperatures[i] > 25)
Serial.print("Température supérieure à 25°C");
for(int i = 0; i < ARRAY_VALUE_SIZE; i++)
{
if (temperatures[i] < 10 && humidities[i] < 40)
Serial.print("Température ressentie : \"Froid, basse humidité.\"");
else if ((temperatures[i] >= 10 || temperatures[i] <= 25) && (humidities[i] >= 40 || humidities[i] <= 60))
Serial.print("Température ressentie : \"Confortable, humidité normale.\"");
else
Serial.println("Température ressentie : \"Chaud et humide.\"");
}
delay(5000); //Delay 2 sec.
// Section 4 : Boucles Probablement avec Utilisation de Menus (20 points)
// Q7 : Utilisez une boucle pour afficher un menu interactif permettant à l'utilisateur de choisir entre afficher les températures ou les humidités.
do
{
Serial.println("Affichage de la moyenne des valeurs : ");
Serial.println(" - Entrez T pour afficher la moyenne des valeurs de températures");
Serial.println(" - Entrez H pour afficher la moyenne des valeurs d'humidité");
delay(5000);
inputData = Serial.read();
if (inputData == 'T' || inputData == 'H')
continue;
} while (inputData != 'T' || inputData != 'H');
Serial.print("Vous avez saisi : ");
Serial.println(inputData);
delay(5000);
// Section 5 : Fonctions et Méthodes Personnalisées (20 points)
// Q8 : Créez une fonction pour calculer la moyenne des valeurs de température stockées dans le tableau.
// Q9 : Créez une fonction pour calculer la moyenne des valeurs d'humidité stockées dans le tableau.
// Question 10 : Afficher les résultats des moyennes de température et d'humidité calculées dans les Questions 8 et 9
switch (inputData)
{
case 'T':
Serial.print("Moyenne de température : ");
Serial.print(calculerMoyenneTemperature()); // Appel de la fonction pour calculer la moyenne de température
Serial.println(" °C");
break;
case 'H':
Serial.print("Moyenne d'humidité : ");
Serial.print(calculerMoyenneHumidite()); // Appel de la fonction pour calculer la moyenne d'humidité
Serial.println(" %");
break;
default:
Serial.print("Votre choix n'est pas valide");
break;
}
delay(5000); // Attendre 5 secondes avant la prochaine itération
}
// Définition des fonctions pour calculer les moyennes de température et d'humidité
float calculerMoyenneTemperature()
{
// Code pour calculer la moyenne de température à partir du tableau de température
// Retourner la moyenne calculée
// Cette fonction doit être implémentée
for (size_t i = 0; i < ARRAY_VALUE_SIZE; i++)
TemperatureValueArraySum += temperatures[i];
return TemperatureValueArraySum/(float)ARRAY_VALUE_SIZE;
}
float calculerMoyenneHumidite()
{
// Code pour calculer la moyenne d'humidité à partir du tableau d'humidité
// Retourner la moyenne calculée
// Cette fonction doit être implémentée
for (size_t i = 0; i < ARRAY_VALUE_SIZE; i++)
HumidityValueArraySum += humidities[i];
return HumidityValueArraySum/(float)ARRAY_VALUE_SIZE;
}