Como usar display LCD 20×4 com 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 16×2, se tornam limitados. Vamos mostrar então um exemplo de como usar o display LCD 20×4 com Arduino, um display com mais que o dobro de espaço para mostrar informações.
Vamos primeiro dar uma olhada nas conexões desse tipo de display.
Conexão do display LCD 20×4 com arduino
Não há muito segredo para conectar um LCD 20×4. Fisicamente as conexões são iguais às outras encontradas em displays LCD 16×2. 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:
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:
O LCD 20×4 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):
//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 16×2 + RTC + Numeros Grandes, para criar, por exemplo, um relógio com hora, data, e informações de temperatura, com um layout parecido com esse:
Confira também outros posts utilizando displays aqui mesmo no Arduino e Cia!
Funciona sem o potenciômetro? o apenas acendeu a luz e não aparaceu nenhum texto.
Bom dia,
Não funciona. Se não tiver potenciômetro, tente pelo menos colocar uma resistência no lugar.
Abraço !
Deu certo, obrigado, vou solicitar um potenciômetro para melhorar o contraste.
Legal ! Obrigado pelo retorno.
Abraço!
HAZ, como ficou seu circuito na protoboard utilizando uma resistência no lugar no potenciômetro?
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…
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…
Olá, fiz as conexões no meu display LCD 20×4 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.
Boa noite,
Sabe me dizer qual é o controlador do display, ou o modelo ?
Abraço!
Estou com o mesmo problema, o meu controlador é o Mega 2560
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 20×4 e verifique cuidadosamente os fios e modo de dados(4 bits ou 8 bits).
O meu tbm só ficou com blocos no Display, não sei se é prq estou usando um potenciômetro de 100k.
Oi Miguel,
Pode ser alguma ligação incorreta do potenciômetro, por exemplo, tente usar um valor diferente ou até mesmo uma resistência fixa no lugar.
Abraço!
Adilson
hola! podrias explicarme como proyectar numeros grandes en un lcd 20×4? como esta en el ejemplo del reloj
Hola!
Tengo un artículo sobre exactamente esto. Comprobar este link, por favor: http://www.arduinoecia.com.br/2013/04/lcd-16×2-rtc-numeros-grandes.html
Saludos!
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!!
Boa noite,
Eu usei os códigos desse post: http://www.arduinoecia.com.br/2013/04/lcd-16×2-rtc-numeros-grandes.html
Quanto à conversão, realmente não sei te dizer.
Abraço!
O meu LCD 20X4 apresenta apenas quadradinhos na coluna 1×1,1×2, 2×1 e2x2 somando 4 quadradinhos na tela, nada de caracteres oque devo fazer?
aguardando resposta em [email protected] ?
Obrigado!
oLÁ MEU lcd 20×4 apresenta somente quadradinhos brancos nas colunas e linhas 1×1, 1×2, 2×1 e 2×2 aguardando respostas? não mostra os caracteres usei a ligação do 16×2?
[email protected]
echo "Obrigado!";
Bom dia , gostaria sde saber se poderiam me ajundar, fiz uma programação no arduino para aparecer cxl do teclado matricial no display, mas como faço para ir apagando as informações anteriores??
Boa noite,
Você pode usar o comando lcd.clear() para apagar a tela e reescrever o que precisa, ou então usar o lcd.print() para escrever espaços em branco antes de imprimir os valores.
Abraço!
Adilson
nao consegui fazer, mostra que POSITIVE nao foi declarado no escopo. Oque devo fazer?
Tenho um LCD 20×4 praticamente novo (tela azul e letras brancas) mas, não aparece nada, só o brilho na tela; como posso testá-lo pra saber se está realmente funcionando ou se o problema é outro? Obrigado
Boa tarde,
Você montou o circuito exatamente como está na imagem, usando um potenciômetro para ajuste do contraste?
Abraço!
Adilson
Sim, exatamente como na imagem. Eu gostaria de saber se existe algum código para um teste completo deste display; obrigado
Olá. Fiz um controlador Ardbir para processo cervejeiro e durante o uso, as letras do display simplesmente começam a se movimentar rapidamente como se fosse um banner dinâmico. Às vezes ele para sozinho mas, com os caracteres em lugares errados do display. Alguém já teve esse problema? Obrigado
Oi Leandro,
Isso "parece" problema de conexão do display. Você chegou a checar a fiação e/ou solda pra ver se está tudo ok?
Abraço!
Adilson
Olá Adilson. Ja refiz as soldas, mas a ligacal está feita com um multi flat cable de PC. Talvez seja o problema.De qualquer forma acho estranho o fato de o problema estar intermitente mesmo com todo o sistema dentro de um invólucro (caixa) e sem tripidação ou algo assim.
Acreditei que pudesse ser algum tipo de interfereincia gerada pela resistência ou pelo cooler de refrigeração ligado ao sistema, mesmo que através de um rele de estado sestado solido.
Olá, fiz a passo a passo como está descrito à cima, mas quando envio o código para o arduino aparecem apenas a luz de fundo e quadrados( Não mostra texto algum).
Estou usando potenciômetro de 10K e já tentei ligar o pino 3 direto no GND, mas sem sucesso. Se alguém já passou por isso ou se sabem como resolver me ajudem.
Desde de já agradeço a atenção.
Oi Ezequiel,
Isso tem cara de ser ajuste de contraste mesmo… Vc tem outro potenciômetro pra testar?
Abraço!
Adilson
Confira as soldas do display e teste o potenciômetro fora da placa. Como disse o Adilson, isso parece ajuste do contraste mesmo.