Mémos

M é m o - l a b .

Arduino – ESP8266 – Ecran LCD-I2C – DHT11

Le principe de ce cours est d’afficher la température et l’humidité de l’air sur un écran LCD. Por cela, nous utilisons un esp8266, un caplteur DHT11 et un écran lcd muni du module I2C (protocole de communication).

Schéma

Librairie

Code permettant de récupérer l’adresse I2C de l’écran LCD

L’adresse retournée par le code est 0x27





#include "Wire.h"

void setup() {
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);
}

void loop() {
  byte error, address;
  int I2CDevices;

  Serial.println("Scanning I2C …");
 
  I2CDevices = 0;
  for (address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("Adresse I2C trouvée : 0x");
      if (address < 16)
      {
        Serial.print("0");
      }
      Serial.println(address, HEX);

      I2CDevices++;
    }
    else if (error == 4)
    {
      Serial.print("Erreur adresse 0x");
      if (address < 16)
      {
        Serial.print("0");
      }
      Serial.println(address, HEX);
    }
  }
  if (I2CDevices == 0)
  {
    Serial.println("Interface I2C non trouvée\n");
  }
  else
  {
    Serial.println("****\n");
  }
  delay(2000);
}

Code





#include "DHT.h"
#include "LiquidCrystal_I2C.h"

#define dhtPin 14 // D5 sur esp8266
#define dhtType DHT11

float temperature;
float humidity;

DHT dht(dhtPin, dhtType);
LiquidCrystal_I2C lcd(0x27, 16, 2);

void getDatas() {
  temperature = dht.readTemperature();
  humidity = dht.readHumidity();
}

void setup() {
  dht.begin();
  lcd.init();                      
  lcd.backlight();
}

void loop() {
  getDatas();
  lcd.setCursor(0, 0);
  lcd.print("Tmp :  ");
  lcd.print(String(temperature,1) +" "); // Affichage de la température avec un chiffre après la virgule
  lcd.print((char)223); //(char)223 : affichage du caractère °
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("Hum :  ");
  lcd.print(String(humidity,0) +" "); // Affichage de la température avec zéro chiffre après la virgule
  lcd.print((char)37); //(char)37 : affichage du caractère %
  lcd.print(" ");    
}