Os displays LCD representam uma forma prática e de baixo custo para exibir informações. Há diversos tipos de displays como os de caracter, gráficos, TFT, OLED, entre outros. Neste tópico será abordado o de caracter, que são os mais simples e baratos.
Os displays de caracter são diferenciados pelo número de linhas, colunas, cor, dimensões e se têm ou não backlight. Os displays com o recurso de backlight ou luz de fundo são particularmente úteis em ambientes escuros.
Nas figuras abaixo temos alguns exemplos de displays:
display 8x2 (8 colunas e 2 linhas) | display 16x1 (16 colunas e 1 linha) |
Independentemente de seu formato, os displays de caracter são programados de uma forma padronizada. Isto é possível graças à aderência dos fabricantes ao controlador HD44780, o qual é responsável pelo troca de informações do display com o mundo exterior.
Os displays apresentam os seguintes pinos:
- VSS : 0V (terra)
- VDD ou VCC : 3.3V ou 5V (valores típicos)
- Vo ou Ve : tensão de contraste
- RS : pino de seleção de envio de comando ou dados
- R/W : pino de leitura ou escrita de dados
- E : abilita o display para leitura/escrita
- D0~D7 : 8 pinos de dados
- Backlight Anodo : 3.3V ou 5V (valores típicos)
- Backlight Catodo : 0V (terra)
O ambiente arduino disponibiliza a biblioteca LiquidCrystal que facilita a programação de módulos de displays LCD. Esta biblioteca já acompanha o ambiente, sendo disponibilizados exemplos de sua utilização em File-->Examples-->LiquidCrystal.
Para testar um display 16x2 que opera em 5V, similar ao da figura acima, conecte-o à sua placa arduino conforme o diagrama abaixo:
Para realizar um teste preliminar de funcionamento do display, varie o potenciômetro de 10k ohms até que se observe uma barra horizontal conforme a figura abaixo:
Em seguida, carregue o programa abaixo para visualizar a mensagem "teste de LCD" no display e uma contagem de tempo em segundos:
#include <LiquidCrystal.h>
// inicia a biblioteca
// LiquidCrystal lcd(RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// lcd com 16 colunas e 2 linhas
lcd.begin(16, 2);
// envia mensagem para o LCD.
lcd.print("teste de LCD");
}
void loop() {
// coloca o cursor na coluna 0 e linha 1
lcd.setCursor(0, 1);
// envia o tempo em segundos para o LCD
lcd.print(millis()/1000);
}
O backlight é formado por leds ligados em série. Por estes leds recai uma tensão e corrente típica que são informados pelo datasheet do display. Na figura abaixo é exibido como esta informação é fornecida e como o backlight é energizado:
datasheet | circuito energização |
Neste caso, para uma tensão típica de 4.1V e corrente de 120mA, seria necessário utilizar um resistor limitador de corrente () dado por: