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.h e DHT.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.