Display LCD 16X2 com Módulo I2C

Display LCD 16×2 é uma pequena tela de 16 colunas e 2 linhas, de custo baixo e muito empregada no desenvolvimento de projetos na automação ou na robótica, podendo ser utilizada em vários microcontroladores como Arduino, Raspberry Pi, PIC, Atmel e outros.
Com variadas aplicações, o Display LCD 16×2 é um complemento muito útil com a integração do projeto aos usuários, mostrando informações relevantes ao desenvolvedor.

Especificações do Display LCD 16X2

    • Controlador: HD44780
    • Tensão de operação: 4,5V a 5,5VDC
    • Corrente de operação: 1mA a 1,5mA
    • Tensão no led do backlight (fundo): 1,5V a 5,5VDC
    • Corrente no led do backlight (fundo): 75mA a 200mA
    • Comunicação: 4bits ou 8bits
    • Dimensão do módulo: 80mm X 36mm X 12mm
    • Área do visor: 64,5x14mm
    • Tamanho do ponto: 0.52mm X 0.54mm
    • Tamanho do caracter: 3mm X 5.02mm

Módulo I2C

O Módulo LCD I²C ou I2C, que é muito utilizado nos Displays LCD 16×2, admite uma comunicação com microcontroladores que tenham suporte ao protocolo I²C e permite uma comunicação com apenas 2 linhas de dados.
O protocolo I²C foi desenvolvido pela Philips (atual NXP) visando conectar diversos dispositivos (periféricos) utilizando apenas as duas linhas de dados (SDA e SCL) Serial Data e Serial Clock. A ideia principal é definir um endereço hexadecimal para cada dispositivo e no momento de comunicação somente o dispositivo solicitado responderá.

Especificações do Módulo I2C

    • Controlador: PCF8574T
    • Tensão de operação: 5VDC
    • Interface: I2C
    • Compatibilidade: display LCD 16×2 e 20×4
    • Trimpot para ajustar o contraste do display LCD
    • Pinos para ligar/desligar o backlight do display LCD

Exemplo de Aplicação com Display LCD 16X02

Leituras de temperatura e umidade relativa obtidas pelo sensor DHT11 serão apresentadas no visor do Display LCD 16×2.
Primeiramente, devemos soldar o Módulo I2C ao Display LCD 16×02 ou, se preferir, fixar em uma protoboard para a conexão ao Arduino. Em seguida, faremos a junção do sensor DHT11 e do Display ao Arduino conforme o esquema.

Arduino Uno

SDA – Porta Analógica A4
SCL – Porta Analógica A5

Arduino Mega

SDA – Porta 20
SCL – Porta 21

Código de Exibição no Display LCD 16X02

Primeiramente, devemos incluir a Biblioteca LiquidCrystal_I2C.h para o Display e também as Bibliotecas Adafruit_Sensor.hDHT.h  para o sensor de temperatura.
Então, feito isso, agora é só carregar o código:

#include "DHT.h"
#define DHTPIN 2     // Pino digital sensor DHT

// Escolha o tipo de sensor!
# define DHTTYPE DHT11     // DHT 11
//# define DHTTYPE DHT22   // DHT 22 (AM2302), AM2321
//# define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Definir o endereço do LCD para 0x27 para um display de 16 caracteres e 2 linhas
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx teste!"));

  dht.begin();

  lcd.begin();

}

void loop() {
  // Aguarde alguns segundos entre as medições.

  // delay(2000);

  // A leitura da temperatura ou umidade leva cerca de 250 milissegundos!
  // O sensor pode ter um atraso de até 2 segundos para a leitura
  
  float h = dht.readHumidity();
  // Temperature em Celsius (default)
  float t = dht.readTemperature();
  // Temperature em Fahrenheit (Fahrenheit = true)
  float f = dht.readTemperature(true);

  // Verifique se alguma leitura falhou e tenta novamente.
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Falha de leitura do sensor DHT!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Umidade: "));
  Serial.print(h);
  Serial.print(F("%  Temperatura: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Índice de calor: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));

  lcd.setBacklight(HIGH);

  lcd.setCursor(0, 0);
  lcd.print(F("Umidade Rel: "));
  lcd.setCursor(0, 1);
  lcd.print(h);
  lcd.setCursor(5, 1);
  lcd.print(F(" %"));
  delay(2000);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print(F("Tempetatura: "));
  lcd.setCursor(0, 1);
  lcd.print(t);
  lcd.setCursor(5, 1);
  lcd.write(32);  // Caracter espaço
  lcd.write(223); // Caracter °
  lcd.print(F("C"));
  delay(3000);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print(F("Tempetatura: "));
  lcd.setCursor(0, 1);
  lcd.print(f);
  lcd.setCursor(5, 1);
  lcd.write(32);
  lcd.write(223);
  lcd.print(F("F"));
  delay(3000);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print(F("Indice de Calor: "));
  lcd.setCursor(0, 1);
  lcd.print(hic);
  lcd.setCursor(5, 1);
  lcd.write(32);
  lcd.write(223);
  lcd.print(F("C"));
  delay(3000);

  lcd.clear();

  lcd.setCursor(0, 0);
  lcd.print(F("Indice de Calor: "));
  lcd.setCursor(0, 1);
  lcd.print(hif);
  lcd.setCursor(5, 1);
  lcd.write(32);
  lcd.write(223);
  lcd.print(F("F"));
  delay(3000);

  lcd.clear();

  lcd.setBacklight(LOW);

  delay(1000);

}

 

Concluímos que utilizando o Módulo I2C e a Biblioteca LiquidCrystal_I2C fica bem simples e fácil trabalhar com o Display LCD 16×02 nos mais variados projetos.

 

 

Onde comprar?

LOJAS

 

Conheça também!