Arduino - LCD
Neste tutorial de LCD com Arduino, vamos aprender a conectar um LCD (Liquid Crystal Display - Display de Cristal Líquido) à placa Arduino. Os LCDs são muito populares e amplamente usados em projetos de eletrônica para mostrar informações. Existem muitos tipos de LCD. Este tutorial usa o LCD 16x2 (16 colunas e 2 linhas) como exemplo. Os outros LCDs são semelhantes.
※ Nota:
Se você quiser simplificar a ligação, pode usar o LCD I2C no lugar. Veja o tutorial LCD I2C
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o LCD 16x2
Pinagem

O LCD tem até 16 pinos. Nos usos mais comuns, NÃO usamos todos os pinos.
Com a ajuda da biblioteca LiquidCrystal, podemos até usar o LCD SEM saber o significado desses pinos. Porém, se você estiver curioso ou quiser saber em profundidade, vamos ver esses pinos e as suas funções:
- Pino GND: precisa ser conectado ao GND (0V).
- Pino VCC: a alimentação do LCD, precisa ser conectado ao VCC (5V).
- Pino Vo (Contraste do LCD): controla o contraste e o brilho do LCD, pode ser conectado ao 5V (o maior contraste e brilho) ou a um potenciômetro (para ajustar o contraste e o brilho)
- Pino RS (Register Select): Existem dois tipos de dados que precisam ser enviados ao LCD: comandos (para controlar o LCD) e dados. Os dois são enviados no mesmo barramento de dados. O pino RS informa ao LCD se os dados no barramento são comandos ou dados.
- Se quisermos enviar um comando para controlar o LCD, precisamos colocar o pino RS em LOW (como posicionar o cursor em um local específico, limpar o display...).
- Se quisermos enviar dados para mostrar no LCD, precisamos colocar o pino RS em HIGH.
- Pino R/W (Read/Write - Leitura/Escrita): serve para selecionar o modo LEITURA ou o modo ESCRITA.
- Se quisermos ler dados do LCD, este pino precisa ficar em HIGH.
- Se quisermos enviar dados ao LCD, este pino precisa ficar em LOW. Como estamos usando este LCD apenas como dispositivo de SAÍDA, vamos ligar este pino em LOW.
- Pino EN (Enable - Habilitar): é usado para habilitar o LCD. HIGH para habilitar o LCD, LOW para desabilitar o LCD.
- Pinos D0-D7 (Barramento de Dados): transportam dados e comandos entre o Arduino e o LCD. Existem dois modos para enviar dados: modo de 4 bits e modo de 8 bits.
- Pinos A-K (Ânodo e Cátodo): são usados para alimentar a luz de fundo (backlight) do LCD. O pino A precisa ser conectado ao VCC. O pino K precisa ser conectado ao GND.
Modo de 4 bits e modo de 8 bits
- Modo de 8 bits: os 8 bits de um byte são enviados ao mesmo tempo pelos pinos D0 a D7.
- Modo de 4 bits: os 8 bits de um byte são enviados em duas vezes, 4 bits de cada vez, pelos pinos D4 a D7.
O modo de 8 bits é mais rápido que o modo de 4 bits, mas usa mais pinos que o modo de 4 bits. A escolha do modo é feita no processo de inicialização, enviando um comando ao LCD.
Este tutorial usa o modo de 4 bits, que é o mais usado.
Neste modo, os pinos do LCD:
- 6 pinos (RS, EN, D4, D5, D6 e D7) são conectados aos pinos do Arduino.
- 4 pinos (D0, D1, D2 e D3) NÃO são conectados.
- Os 6 pinos restantes são conectados ao GND/VCC ou ao potenciômetro.
Tabela de pinos do LCD no modo de 4 bits
| PINO DO LCD | CONECTADO A | |
|---|---|---|
| 01 | GND | GND |
| 02 | VCC | 5V |
| 03 | Vo | 5V ou pino do potenciômetro |
| 04 | RS | Um pino do Arduino |
| 05 | R/W | GND |
| 06 | EN | Um pino do Arduino |
| 07 | D0 | NÃO conectado |
| 08 | D1 | NÃO conectado |
| 09 | D2 | NÃO conectado |
| 10 | D3 | NÃO conectado |
| 11 | D4 | Um pino do Arduino |
| 12 | D5 | Um pino do Arduino |
| 13 | D6 | Um pino do Arduino |
| 14 | D7 | Um pino do Arduino |
| 15 | A | 5V |
| 16 | K | GND |
Coordenadas do LCD
O LCD 16x2 tem 16 colunas e 2 linhas. As colunas e as linhas são indexadas a partir de 0.

Como Funciona
O processo de envio de dados (para serem mostrados) ao LCD:
- O Arduino coloca o pino RS em HIGH (para selecionar o registrador de dados)
- O Arduino escreve os dados nos pinos D4 → D7 (barramento de dados).
- O LCD recebe os dados no barramento de dados.
- O LCD armazena os dados recebidos no registrador de dados, já que o pino RS está em HIGH. Em seguida, o LCD mostra os dados na tela
O processo de envio de comandos (para controlar) ao LCD (por exemplo, piscar o LCD, posicionar o cursor em um local específico, limpar o display...):
- O Arduino coloca o pino RS em LOW (para selecionar o registrador de comandos)
- O Arduino escreve o comando nos pinos D4 → D7 (barramento de dados).
- O LCD recebe os dados no barramento de dados.
- O LCD armazena os dados recebidos no registrador de comandos, já que o pino RS está em LOW. Em seguida, o LCD executa a ação com base no valor do comando.
Arduino - LCD
Controlar o LCD é uma tarefa bastante complicada. Felizmente, graças à biblioteca LiquidCrystal, esse processo fica simples para você, então não é preciso conhecer as instruções de baixo nível. Basta conectar o Arduino ao LCD e usar as funções da biblioteca. Usar o LCD fica muito fácil.
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Como Programar o LCD
- Inclua a biblioteca:
- Defina quais pinos do Arduino estão conectados aos seis pinos do LCD: RS, EN, D4, D4, D6, D7
Uma das vantagens da biblioteca é que os pinos do Arduino conectados ao LCD podem ser configurados. Isso traz flexibilidade quando você conecta o Arduino ao LCD e a outros sensores/atuadores.
- Declare um objeto LiquidCrystal:
- Configure o número de colunas e linhas do LCD.
- Mova o cursor para a posição desejada (column_index, row_index)
- Mostre uma mensagem no LCD.
Há muito mais coisas que podemos fazer com o LCD (veja a parte Faça Mais com o LCD)
※ Nota:
Você pode escolher quaisquer seis pinos do Arduino para conectar ao LCD, desde que especifique os pinos conectados no código do Arduino.
Código Arduino
Passos Rápidos
- Copie o código acima e abra-o na Arduino IDE
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino
- Veja o resultado no LCD

- Experimente modificar o texto e a posição
Vídeo
Caractere Personalizado
A função lcd.print() suporta apenas caracteres ASCII. Se você quiser mostrar um caractere ou símbolo especial (por exemplo, um coração, um angry bird), precisa usar o gerador de caracteres abaixo.
O LCD 16x2 pode mostrar 32 caracteres (2 linhas e 16 colunas). Cada caractere é composto por 40 pixels (8 linhas e 5 colunas).
O gerador de caracteres representa um caractere (40 pixels). Você só precisa seguir os passos abaixo:
Resultado no LCD:

Vários caracteres personalizados
Podemos criar até 8 caracteres personalizados (com índices de 0 a 7). O exemplo abaixo cria e mostra três caracteres.
Resultado no LCD:

Resumo: como usar caracteres personalizados no LCD
- Use o gerador de caracteres acima para criar o código binário do caractere personalizado.
- Declare o código binário do caractere personalizado (copie do passo acima)
- Crie o caractere personalizado e atribua a ele um valor de índice (de 0 a 7) na função setup()
- Mostre o caractere personalizado no LCD a qualquer momento, em qualquer lugar (na função setup() ou loop())
Desafie-se
Use o LCD para fazer um dos seguintes projetos:
- Enviar texto do PC (pelo Serial Monitor) e mostrá-lo no LCD. Dica: Consulte Como enviar dados do PC para o Arduino
- Mostrar no LCD a tecla pressionada do teclado. Dica: Consulte Arduino - Teclado