#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x27, 20, 4);
LiquidCrystal_I2C lcd2(0x26, 20, 4);
#include <RTClib.h>
RTC_DS1307 RTC; // Variable de class RTC_DS1307 nommé "RTC".
// Création de 2 tableaux.
char Jour[7][12] = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
char Mois[13][15] = {"", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"};
char Horloge[9], LaDate[20];
#include <DHT.h>
int dhtSignalPin = 2;
DHT capteurDHT(dhtSignalPin, DHT22); // capteurDHT(pin, Type)
// Variable de type float "flottante" pour le DHT22.
float Hum, Cel, Far;// Variables à virgule flottante.
char tC[6], tF[6], H[6], buffer[20], buffer2[20]; // mémoires tampons (Buffers)
void setup() {
lcd1.init(); lcd1.backlight();
lcd2.init(); lcd2.backlight();
// --- Affichage distinct sur chaque LCD ---
lcd1.clear(); // Efface le contenu de l'écran 1
lcd1.setCursor(0, 0); // Place le curseur en haut à gauche
lcd1.print("--- LCD 1 ---");
lcd1.setCursor(0, 1);
lcd1.print("Affichage Premier");
lcd1.setCursor(0, 2);
lcd1.print("Adresse: 0x27");
lcd2.clear(); // Efface le contenu de l'écran 2
lcd2.setCursor(0, 0); // Place le curseur en haut à gauche
lcd2.print("--- LCD 2 ---");
lcd2.setCursor(0, 1);
lcd2.print("Affichage Second");
lcd2.setCursor(0, 2);
lcd2.print("Adresse: 0x26");
/*
delay(10000); // Laisse le temps d'observer l'affichage pendant 10 secondes
pinMode(dhtSignalPin, INPUT_PULLUP);
RTC.begin(); capteurDHT.begin(); // active RTC et DHT22
displayRTC();
lcd2PrintCenter("Le DHT22", 0); delay(1000);
lcd2PrintCenter("D detector", 1); delay(1000);
lcd2PrintCenter("H humidity", 2); delay(1000);
lcd2PrintCenter(" T temperature", 3); delay(3000);
lcd2.clear();*/
}
void loop() {
/*
displayRTC();
Hum = capteurDHT.readHumidity(); // Pourcentage de l'humidité.
Cel = capteurDHT.readTemperature(); // Température en degré Celcius
Far = capteurDHT.readTemperature(true);// Température en degré Fahrenheit
displayDHT();
*/
}
// Centre l'affichage du texte sur la ligne indiquée de lcd1
void lcd1PrintCenter(String texte, int ligne) {
int len = texte.length(); // Défini la longeur de la variable "texte"
lcd1.setCursor((20 - len) / 2, ligne); // positionne le curseur au centre de la ligne choisie et soustrait la longeur du text à afficher
lcd1.print(texte); // Affiche le texte demandé sur lcd2.
}
// Centre l'affichage du texte sur la ligne indiquée de lcd2
void lcd2PrintCenter(String texte, int ligne) {
int len = texte.length(); // Défini la longeur de la variable "texte"
lcd2.setCursor((20 - len) / 2, ligne); // positionne le curseur au centre de la ligne choisie et soustrait la longeur du text à afficher
lcd2.print(texte); // Affiche le texte demandé sur lcd2.
}
void displayRTC() {
DateTime now = RTC.now(); //DateTime, ajoute la capacité de chronométrage et donne accès aux heures, minutes, secondes, jours, mois et années.
// Affiche le jour de la semaine = Jour[now.dayOfTheWeek()];
lcd1PrintCenter(String(Jour[now.dayOfTheWeek()]), 0);
// Formate l'affichage de la date.
sprintf(LaDate, "Le %d %s %d", now.day(), Mois[now.month()], now.year());
lcd1PrintCenter(LaDate, 1); // Affiche la date au complet...
//Formate l'affichage de l'heure. Heure = now.hour(), Minutes = now.minute(), Secondes = now.second()
sprintf(Horloge, " %02d:%02d:%02d ", now.hour(), now.minute(), now.second());
lcd1PrintCenter(Horloge, 2); // Affiche la date...
}
void displayDHT() {
lcd2PrintCenter("Temperature", 0);
lcd2PrintCenter("Celsius Fahrenheit", 1);
dtostrf(Cel, 5, 2, tC); // Converti float"Cel" en Chaine de caractères.
// pour afficher la température en degré Celcius
lcd2.setCursor(0, 2); lcd2.print(String(tC) + (char)223 + "C ");
// pour afficher la température en degré Fahrenheit
dtostrf(Far, 5, 2, tF); // Converti float"Far" en Chaine de caractères.
lcd2.setCursor(11, 2); lcd2.print(String(tF) + (char)223 + "F ");
// pour afficher le Pourcentage de l'humidité.
dtostrf(Hum, 5, 1, H); // Converti float"Far" en Chaine de caractères.
lcd2.setCursor(0, 3); lcd2.print("Humidity: " + String(H) + "% ");
}