Realizando efeito Scroll no display LCD
Olá tudo bem? No post de hoje vamos estar realizando o efeito scroll no display de LCD. Tenho certeza que você já viu esse efeito, ele provoca o movimento de transição das letras no display. Quer saber então como realizar esse efeito no display LCD com Arduino? Então me acompanhe!
Realizando Scroll no Display LCD
O efeito que vamos reproduzir hoje com o nosso Arduino, é muito utilizado naquelas lojas de varejo de sua cidade. Onde eles utilizam placas de diversas cores para chamar a atenção do cliente. Ainda não conseguiu lembrar? Então observe a imagem abaixo:
Fonte: Arduino.cc
Mas para realizar esse efeito, vamos precisar possuir alguns conhecimentos básicos sobre displays de LCD. Assim, caso você ainda não tenha um conhecimento sólido sobre displays e sobre a biblioteca que utilizamos para controlá-los. Relaxa! Basta visitar o nosso post abaixo onde estamos explicamos todos esses detalhes pra você combinado?
Dessa forma, vamos partir agora para a montagem desse projeto e buscar entender toda a programação e funcionalidades das funções envolvidas dentro do código. Então amos nessa?
Componentes Utilizados
Efeito Scroll no display – Montagem do Circuito
A seguir está a ligação do nosso projeto de hoje. Mas, é importante que você desligue o cabo USB de seu Arduino e realize a ligação com ele desligado combinado? Depois é só ligar novamente.
Fonte: AutoCore Robótica
Código do Projeto Comentado
Com a IDE do Arduino aberta, realize o upload do código a seguir e depois clique em Upload para que o programa carregue em seu Arduino.
/* Projeto: Scroll de Texto no Display LCD Autor: Danilo Nogueira - AutoCore Robótica Data: 22/09/2018 Código de Dominio Público */ #include <LiquidCrystal.h> // Incluindo a biblioteca do LCD // Aqui estamos definindo os pinos de ligação do LCD //seguindo a forma: (rs, enable, d4, d5, d6, d7) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup(){ lcd.begin(16,2); // Iniciando o display LCD passando nos parâmetros o seu tamanho: 16 colunas x 2 linhas lcd.clear(); // Limpa o LCD lcd.setCursor(0,0); // Vai setar, ou seja, iniciar o cursor na posição 0,0 lcd.print(" Arduino, Tutoriais e muito mais!"); // Na posição indicada (0,0), escreve o texto dentro das "aspas" lcd.setCursor(0,1); // Vai setar, ou seja, iniciar o cursor na posição 0,1 lcd.print(" ------ AutoCore Robotica ------ "); // Na posição indicada (0,0), escreve o texto dentro das "aspas" } void loop() { // Aqui vamos movimentar todo o display X posições para a ESQUERDA. for(int posi_LCD = 0; posi_LCD < 36; posi_LCD ++) { lcd.setCursor(16,1); lcd.scrollDisplayLeft(); //Essa é a função que faz as letras se deslocarem delay(250); // Quanto menor o tempo, mais rápido será o deslocamento } // Aqui a ideia de deslocamento é a mesma, contudo // o deslocamento será para a DIREITA. for(int posi_LCD = 0; posi_LCD < 52; posi_LCD ++) { lcd.setCursor(16,1); lcd.scrollDisplayRight(); delay(250); } }
Analisando a fundo o Código
O código de nosso projeto de hoje é muito simples e pequeno, ele apenas vai se basear em duas partes centrais. Primeiro temos a parte de iniciar o display com a mensagem que queremos transmitir:
lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print(" Arduino, Tutoriais e muito mais!");
Nessa parte do código, estamos iniciando o nosso display LCD e passando como parâmetro para a função lcd.begin, o tamanho do display (16×2).
Mas agora, precisamos fazer com que a mensagem escrita no display se desloque para a esquerda ou direita, mas como fazer isso?
lcd.scrollDisplay
Para conseguir realizar esse efeito, tem um comando chamado lcd.scrollDisplay(lado). Observe essa parte do código e você vai entender:
for(int posi_LCD = 0; posi_LCD < 36; posi_LCD ++) { lcd.setCursor(16,1); lcd.scrollDisplayLeft(); delay(250); }
Essa parte do código está fazendo esse efeito de scroll em nosso display. Basicamente, utilizamos um for para não deixar os caracteres andando infinitamente para a esquerda e iniciamos as letras na última coluna do display através do comando:
lcd.setCursor(16,1);
Em seguida, temos o comando já mencionado o qual realiza a transição do conteúdo no display. Ele foi escrito da seguinte forma:
lcd.scrollDisplayLeft();
Ou seja, esse comando vai provocar um scroll no display para o lado esquerdo. Mas isso vai acontecer, enquanto o comando for estiver rodando. Logo depois, é colocado um tempo de deslocamento para esses caracteres para poder observar o efeito de deslocamento.
Por fim, temos um outro comando for no código, mas que a função é a mesma do primeiro comando for, e nele o display será deslocado para a direita.
Assim, no projeto final vai acabar resultando no efeito de “vai e vem” do texto no display como você pode visualizar no vídeo abaixo!
Resultado do Projeto
Para terminar, segue o vídeo do nosso canal do Youtube onde mostra o código do nosso projeto de hoje em funcionamento!
Mas e ai? Gostou? Caso tenha ficado algo incompleto para você, comenta abaixo
Dicas? Dúvidas? Idéias de post? Críticas? Só comentar também!
Forte abraço!
Olá Danilo, primeiramente, obrigado pelo tutorial. É muito legal trabalhar com esses displays!
Existe biblioteca de caracteres acentuados para esses displays (ex.: á, ã, é, ó, ç)? Como usar?
Obrigado
Olá Daniel, tudo bem?
Realmente trabalhar com display é algo muito bacana e divertido!
Sobre esses caracteres especiais do tipo acentuados, acredito que isso vai depender do seu display LCD.
Contudo, eu ainda não descobri como identificar que tal display possui tais caracteres.
Mas como você testa isso? Basicamente temos duas tabelas de caracteres, você pode acessar nesse link:
Tabela Display
A tabela A01 é encontrada bem mais nos vários display LCD, mas no seu caso, o seu display teria que conter a tabela A02!
Mas como saber qual tabela ele tem? Para isso, observe que temos um valor em vermelho em cima de cada caractere. Então, você vai guardar esse valor e colocar ele no seguinte comando:
lcd.write(byte(225));
Caso apareça o caracteres correto, ele possui a Tabela A02, caso contrário não 🙁
Mas, você pode criar esse caractere, vou deixar alguns links que vai ajudar você nessa tarefa:
Criar Caractere
Qualquer dúvida só responder esse comentário beleza?
Abraços!