CODE ARDUINO
Exemples complets prêts à flasher · Capteurs · Afficheurs · I²C
Arduino
Température & Humidité sur LCD
Lecture du capteur DHT22 (AM2302) et affichage en temps réel sur un LCD 16×2 en I²C. Fonctionne sur Arduino Uno, Nano et Mega. Symbole degré personnalisé, gestion d'erreur, moniteur série.
🔌 Câblage
Matériel
🌡️ DHT22 (AM2302)
| Broche DHT22 | Arduino |
|---|---|
| VCC | 5 V |
| GND | GND |
| DATA | D2 (+ pull-up 10 kΩ vers VCC) |
📟 LCD 16×2 module I²C (PCF8574)
| Broche LCD | Uno / Nano | Mega |
|---|---|---|
| VCC | 5 V | 5 V |
| GND | GND | GND |
| SDA | A4 | 20 |
| SCL | A5 | 21 |
⚠️ Adresse I²C du LCD : les modules PCF8574 sont généralement à
0x27, les PCF8574A à 0x3F.
Si l'écran reste noir, modifiez l'adresse dans le code et vérifiez avec un scanner I²C.
📦 Bibliothèques à installer
Arduino IDEOuvrir Arduino IDE → Outils → Gérer les bibliothèques, puis rechercher et installer :
🌡️
DHT sensor library by Adafruit
Requiert aussi : Adafruit Unified Sensor (installée automatiquement en cochant l'option)
Requiert aussi : Adafruit Unified Sensor (installée automatiquement en cochant l'option)
📟
LiquidCrystal I2C by Frank de Brabander
Pilote les LCD 16×2 / 20×4 via le module I²C PCF8574
Pilote les LCD 16×2 / 20×4 via le module I²C PCF8574
🌡️ DHT22 + LCD I²C — Sketch complet
All-in-One/*
* ============================================================
* Lecture Température + Humidité — DHT22
* Affichage sur LCD 16×2 caractères en I²C
* Version 1.0 — Mai 2026 — ECOPHOT
* ============================================================
*
* Câblage DHT22 : VCC→5V | GND→GND | DATA→D2 (+pull-up 10kΩ)
* Câblage LCD I²C: VCC→5V | GND→GND | SDA→A4 | SCL→A5
*
* Bibliothèques : "DHT sensor library" (Adafruit)
* "LiquidCrystal I2C" (Frank de Brabander)
* ============================================================
*/
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHT_PIN 2 // Broche DATA du DHT22
#define DHT_TYPE DHT22 // DHT22 / AM2302
#define DELAI_MS 2000 // Délai minimum entre deux lectures
DHT dht(DHT_PIN, DHT_TYPE);
// Adresse I²C : 0x27 (PCF8574) ou 0x3F (PCF8574A)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Caractère personnalisé : symbole °
byte charDegre[8] = {
0b00110, 0b01001, 0b01001, 0b00110,
0b00000, 0b00000, 0b00000, 0b00000
};
void setup() {
Serial.begin(9600);
Serial.println(F("DHT22 + LCD I2C — Ecophot.fr"));
dht.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0, charDegre); // ° en position 0
// Écran de bienvenue
lcd.setCursor(2, 0); lcd.print(F("Ecophot.fr"));
lcd.setCursor(1, 1); lcd.print(F("DHT22 + LCD I2C"));
delay(2000);
lcd.clear();
}
void loop() {
float humidite = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidite) || isnan(temperature)) {
lcd.setCursor(0, 0); lcd.print(F("Erreur capteur! "));
lcd.setCursor(0, 1); lcd.print(F("Verif DHT22... "));
Serial.println(F("[ERREUR] Lecture DHT22 echouee"));
delay(DELAI_MS);
return;
}
// Ligne 0 : Température
lcd.setCursor(0, 0);
lcd.print(F("Temp: "));
lcd.print(temperature, 1);
lcd.write(byte(0)); // Symbole °
lcd.print(F("C "));
// Ligne 1 : Humidité
lcd.setCursor(0, 1);
lcd.print(F("Hum: "));
lcd.print(humidite, 1);
lcd.print(F("% "));
Serial.print(F("Temperature: ")); Serial.print(temperature, 1); Serial.println(F(" C"));
Serial.print(F("Humidite: ")); Serial.print(humidite, 1); Serial.println(F(" %"));
Serial.println(F("---"));
delay(DELAI_MS);
}
📖 Référence technique
Détails| Élément | Valeur / Type | Description |
|---|---|---|
dht.readTemperature() |
float, °C | Plage : −40 °C à +80 °C | Précision : ±0,5 °C |
dht.readHumidity() |
float, %HR | Plage : 0 % à 100 %HR | Précision : ±2 %HR |
isnan() |
bool | Détecte une lecture invalide (capteur absent, câblage incorrect, délai trop court) |
lcd.createChar(0, …) |
positions 0–7 | Charge un caractère 5×8 pixels en CGRAM du LCD. Appelé une seule fois dans setup() |
lcd.write(byte(0)) |
uint8_t | Affiche le caractère personnalisé à la position courante du curseur |
F("…") |
PROGMEM | Stocke les chaînes en Flash plutôt qu'en SRAM — indispensable sur Uno (2 ko de RAM) |
💡 Écran reste noir ?
Ajuster le contraste via le potentiomètre du module I²C (petite vis bleue au dos). Ou changer l'adresse :
Ajuster le contraste via le potentiomètre du module I²C (petite vis bleue au dos). Ou changer l'adresse :
0x27 → 0x3F.
🔍 Trouver l'adresse I²C :
Flasher le sketch Wire → i2c_scanner (exemples Arduino IDE) et lire l'adresse dans le moniteur série.
Flasher le sketch Wire → i2c_scanner (exemples Arduino IDE) et lire l'adresse dans le moniteur série.
⏱️ Délai minimum :
Le DHT22 nécessite au minimum 2 secondes entre deux lectures. En dessous, la bibliothèque retourne
Le DHT22 nécessite au minimum 2 secondes entre deux lectures. En dessous, la bibliothèque retourne
NaN.
Code C++ ESPHome
Composants personnalisés : uptime, I²C, filtre Kalman, point de rosée.
Voir les C++