No artigo de hoje vamos ensina-los a utilizar um display de cristal líquido super comum no mundo da eletrônica e sistemas embarcados; trata-se do display LCD de 2 linhas e 16 caracteres por linha (mais conhecido como display LCD 16x2).
A maior parte dos fabricantes deste tipo de display utiliza o controlador (circuito integrado) de LCD HD44780 ou seus similares para fazer o gerenciamento dos caracteres mostrados; o datasheet deste circuito integrado pode ser
encontrado aqui. Para demonstrar o funcionamento deste tipo display nós faremos uso de um microcontrolador Arduino UNO, que já dispõe de bibliotecas e exemplos funcionando perfeitamente com este tipo de componente.
O esquema de ligação para utilizar o LCD 16x2 se encontra abaixo: são utilizados alguns pinos para comunicação (informações á serem mostradas), além de pinos para alimentação do LCD e ajuste do contraste da tela.
A conexão deste LCD ao Arduino segue a seguinte ordem:
- Pino 1 do LCD -> GND do Arduino
- Pino 2 do LCD -> +5V do Arduino
- Pino 3 do LCD -> Centro do potenciômetro (contraste da tela)
- Pino 4 (RS) do LCD -> pino 12 do Arduino
- Pino 5 (R/W) do LCD -> GND do Arduino
- Pino 6 (E) do LCD -> pino 11 do Arduino
- Pino 11 (D4) do LCD -> pino 5 do Arduino
- Pino 12 (D5) do LCD -> pino 4 do Arduino
- Pino 13 (D6) do LCD -> pino 3 do Arduino
- Pino 14 (D7) do LCD -> pino 2 do Arduino
- Pino 15 (A) do LCD -> Resistor em série com o +5V do Arduino (luz de fundo do display)
- Pino 16 (K) do LCD -> GND do Arduino
A biblioteca "LiquidCrystal" vem inclusa nas últimas versões da IDE do Arduino, e contém vários programas (sketchs) de exemplo. O primeiro sketch que vou mostrar para vocês aqui hoje se chama "HelloWorld.ino" e pode ser acessado na IDE do Arduino em "Arquivo > Exemplos > LiquidCrystal"; o programa consiste em imprimir a palavra "Hellow, world!" na linha de cima do LCD e o valor de um contador (incrementado a cada segundo) na linha de baixo.
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print(millis()/1000);
}
Ao fazer o upload deste código para o Arduino, você deve ver observar na tela do LCD algo parecido com a foto acima; caso não veja nada (tela toda branca ou toda escura) você deve ajustar o contraste de tela através do potenciômetro que está montado junto ao circuito. Veja como fazer isso no video abaixo (observe o potenciômetro sendo girado na esquerda da imagem).
Uma característica da biblioteca deste LCD para Arduino (liquidCrystal) é que você pode escrever a letra que quiser na posição do display que você quiser!. O exemplo abaixo* ilustra como.
* Dica: este exemplo foi desenvolvido por mim (baseado no exemplo "setCursor.ino", porém ele não vem com a IDE do Arduino.
// include the library code:
#include <LiquidCrystal.h>
// these constants won't change. But you can change the size of
// your LCD using them:
const int numRows = 2;
const int numCols = 16;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(numCols,numRows);
}
void loop() {
lcd.setCursor(0,0); // (0,0) significa coluna 0 e linha 0 (1a linha)
lcd.write("1- Palavra aqui,"); // o comando lcd.write("") deve conter a palavra que voce deseja
// escrever no LCD
lcd.setCursor(0,1); // (0,1) significa coluna 0 da linha 1 (2a linha)
lcd.write("2- Outra Palavra"); // o comando lcd.write("") deve conter a palavra que voce deseja
// escrever no LCD
delay(200);
lcd.clear(); // limpa a tela do LCD a cada 2 segundos
}
O comando " lcd.setCursor( , ) " leva o "cursor" do lcd até a posição que você quiser; tudo que você mandar o " lcd.write("') " escrever, será escrito começando nesta posição. Rode o exemplo e veja como ele funciona!.
Dá pra fazer um monte de coisas legais com um display LCD e um Arduino, como por exemplo
um bargraph (barra de "loading"),
caracteres especiais (símbolos que não estao na tabela ASCII), entre outros. Mostramos para vocês aqui hoje apenas o básico (conexão, ligação e sketches de exemplo), porém encorajamos todos os curiosos á bisbilhotar e brincar na
página oficial da biblioteca "liquidCrystal" no Arduino.cc .
- Para comprar um Display LCD 16x2 em nosso Parceiro ICStation (da China), clique no texto:
1602A HD44780 Character LCD Display Module LCM Blue Backlight
- Para comprar o Arduino UNO em nosso Parceiro ICStation (da China), clique no texto:
ICStation ATMEGA328 UNO V3.0 R3 Board Compatible Arduino UNO R3
- Para comprar um potenciômetro de 10k ohms em nosso Parceiro ICStation (da China), clique no texto:
10K Ohm B10K Knurled Shaft Linear Rotary Taper Potentiometer
- Para comprar os cabinhos coloridos (jumpers) em nosso Parceiro ICStation (da China), clique no texto:
1pcs Dupont Wire 10CM 2.54MM Female to Male 1P-1P Jumper Cable For Arduino
Marcadores: arduino display 16x2, arduino lcd, arduino lcd 16x2, display lcd, lcd 16x2, tela lcd