19 junho 2014

Display LCD 20x4 Arduino

Informações de data, hora, temperatura, pressão, umidade, coordenadas de um acelerômetro e ainda alertas para o usuário. Às vezes queremos (ou precisamos) exibir tantas informações em um display que os mais comuns, de 16x2, se tornam limitados.

Para esses casos, podemos adotar displays LCD 20x4, com pouquíssimas alterações no código do Arduino e assim ganhar espaço para exibir mais do que o dobro de informações.

Display LCD 20x4 Arduino

Não há muito segredo para conectar um LCD 20x4. Fisicamente as conexões são iguais às outras encontradas em displays LCD 16x2. São 16 pinos para conexão, sendo que o pino mais à esquerda (Vss), é o pino 1:


A ligação básica deste LCD ao Arduino utiliza somente 4 pinos de dados e 2 de controle, na seguinte ordem :

Tabela ligação Arduino e LCD 20x4

Seguindo a tabela, o nosso circuito de conexão do display ao Arduino Uno fica desse jeito. O potenciômetro de 10 K (ou outro valor de sua preferência) serve para ajustar o contraste do LCD. A intensidade da luz de fundo pode ser controlada adicionando um resistor ao pino 16 :

display lcd 20x4





O LCD 20x4 também utiliza a biblioteca LiquidCrystal, bastando alterar os parâmetros de inicialização no comando lcd.begin, indicando que agora estamos utilizando um display com 20 colunas e 4 linhas :

lcd.begin(20,4);

Basicamente esta é a única alteração necessária. Depois disso, você pode utilizar o comando lcd.setCursor para posicionar os caracteres dentro das 20 colunas (numeradas de 0 a 19), e 4 linhas (numeradas de 0 a 3) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Programa : Teste LCD 20x4 Arduino
// Autor : Arduino e Cia

// Carrega a biblioteca do LCD
#include <LiquidCrystal.h>

// Inicializa o LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
  // Define o LCD com 20 colunas e 4 linhas
  lcd.begin(20, 4);
  
  // Mostra informacoes no display
  lcd.setCursor(3,0);
  lcd.print("Arduino e Cia");
  lcd.setCursor(2,1);
  lcd.print("Display LCD 20x4");
  lcd.setCursor(1,3);
  lcd.print("arduinoecia.com.br");
}

void loop()
{
  // Seu codigo aqui
}

Com mais espaço no display você pode usar as informações do post LCD 16x2 + RTC + Numeros Grandes, para criar, por exemplo, um relógio com hora, data, e informações de temperatura, com um layout parecido com esse :

 


15 comentários:

  1. Funciona sem o potenciômetro? o apenas acendeu a luz e não aparaceu nenhum texto.

    ResponderExcluir
    Respostas
    1. Bom dia,

      Não funciona. Se não tiver potenciômetro, tente pelo menos colocar uma resistência no lugar.

      Abraço !

      Excluir
    2. Deu certo, obrigado, vou solicitar um potenciômetro para melhorar o contraste.

      Excluir
    3. Legal ! Obrigado pelo retorno.

      Abraço!

      Excluir
    4. HAZ, como ficou seu circuito na protoboard utilizando uma resistência no lugar no potenciômetro?

      Excluir
    5. Pra mim o contraste ficou perfeito com 3 resistores de 10k em paralelo, ou 3 de 1k em serie (deu na mesma - e eram os que eu tinha!), sem necessidade de potenciometro...

      Excluir
    6. Ligando no GND tem o contraste máximo, no vcc o minimo... ligo direto no GND 0v... com o potenciômetro vc varia entre 0 e 5 com um divisor de tensão... supondo vcc 5 gnd 0 Arduíno nano...

      Excluir
  2. Olá, fiz as conexões no meu display LCD 20x4 e apenas aparecem quadrados ao invés das letras, utilizei tanto conexões por jumpers, quanto pelo Módulo Serial I2C para Display LCD Arduino e tive o mesmo problema, gostaria de saber se há alguma solução ou se o dispositivo que pode estar com problema, lembrando que a soldagem está em bom estado e sem contato umas com as outras. Aguardo a resposta, obrigado.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Sabe me dizer qual é o controlador do display, ou o modelo ?

      Abraço!

      Excluir
    2. Estou com o mesmo problema, o meu controlador é o Mega 2560

      Excluir
    3. Boa noite, se esta aparecendo quadrados pode ser o ajuste de contraste, que pode ser feito através do uso de resistências ou um potenciômetro. Se o problema persistir tente atualizar a biblioteca LiquidCrystal.h, a nova versão suporta display lcd 20x4 e verifique cuidadosamente os fios e modo de dados(4 bits ou 8 bits).

      Excluir
  3. hola! podrias explicarme como proyectar numeros grandes en un lcd 20x4? como esta en el ejemplo del reloj

    ResponderExcluir
    Respostas
    1. Hola!

      Tengo un artículo sobre exactamente esto. Comprobar este link, por favor: http://www.arduinoecia.com.br/2013/04/lcd-16x2-rtc-numeros-grandes.html

      Saludos!

      Excluir
  4. Olá.

    Você poderia me dizer como fez os numeros grandes no display? E se tem como fazer isso em C, ou se existe algum driver pra essa conversão!!

    ResponderExcluir
    Respostas
    1. Boa noite,

      Eu usei os códigos desse post: http://www.arduinoecia.com.br/2013/04/lcd-16x2-rtc-numeros-grandes.html

      Quanto à conversão, realmente não sei te dizer.

      Abraço!

      Excluir