Display LCD com Arduino

Bom pessoal, a postagem de hoje é para ensinar a escrever em um display LCD usando o Arduino, vou utilizar o LCD Keypad Shield, para entender a configuração leia este post
Nesta postagem vamos ver desde o básico como escrever um "Hello World" até a parte de criar caracteres personalizados.
Primeiramente o código básico "hello world":
Todas as linhas já estão comentadas, mas você deve ficar atento com a seguinte linha "LiquidCrystal lcd(8,9,4,5,6,7);" esta linha inicializa a biblioteca com os pinos para a cominucação, como eu estou usando o LCD Keypad Shield os pinos são esses, se você possuir apenas o LCD cuide a ligação correta dos fios, foi por isso que no inicio do post eu pedi que você desse uma olhada na postagem sobre o LCD Keypad Shield com o Arduino!
Basicamente o codigo escrito anteriormente escreve na tela um "hello, world!" e na linha de baixo fica escrevendo os segundos desde o momento que foi pressionado reset.
Vamos agora entender o comando "lcd.setCursor" é um comando muito simples e muito útil que serve para posicionar-mos o cursor na tela antes de escrever o conteúdo, como foi inicializado o cursor tenho 16 colunas e 2 linhas - lcd.begin(16, 2); - podemos posicionar o cursor em qualquer lugar na tela a qualquer momento, de acordo com a necessidade, por padão se você nao declarar nada, o Arduino começa escrevendo na coluna 0 e linha 0 - o mesmo que declarar  lcd.setCursor(0, 0); -.
Outro comando muito util e simples de implementar é para a limpeza da tela, basta você escrever lcd.clear();  no momento que desejar limpar a tela (o ideal é fazer isso sempre antes de escrever novas informações, evita de misturar os caracteres).
Diferença entre lcd.write e lcd.print:
O primeiro (lcd.write) imprime apenas um caractere na tela, é usado nos caracteres especiais como veremos mais adiante.
O segundo (lcd.print) imprime textos na tela, onde o conteúdo pode ser char, byte, int, long, ou string.
Vamos agora ver como criar caracteres especiais, você viu que no inicio do post há uma foto com o simbolo do blog e um boneco de mãos para cima?? bom, eles foram feitos usando o comando createChar().
Com os displays baseados no HD44780 podemos criar até 8 caracteres customizados que são armazenados em um vetor, e mostrar um a um quando necessário. Primeiro devemos criar um vetor de 8 bytes que representará o nosso caracter.
Veja o esquema a seguir:
É definido uma variavel "heart" que possui as informações de cada endereço que formam o caractere desejado, se você olhar bem o LCD irá ver que cada caractere é formado por um retangulo de 5 x 8 formado por varios quadrados pequenos juntos (cada quadrado é um pixel). 
Para criar um caractere especial você precisa decidir quais os quadrinhos serão visiveis (bit 1) e quais ficarão desligados (bit 0) passando isso através de um vetor, onde cada virgula separa uma linha do retângulo.
A primeira coisa após inicializar o display através do comando LiquidCrystal lcd(8,9,4,5,6,7);  é criar o vetor com os caracteres desejados que podem ser até 8 numerados de 0 até 7 vamos "montar" só um no momento, o do blog, ele ficaria assim:
Após "montar" o caractere, vamos criar ele, então dentro do void setup() a gente digita: lcd.createChar(0, blog);  O comando lcd.createChar creia um caractere customizado (gylph). Até 8 caracteres de 5x8 pixels são suportados (como dito anteriormente, numerados de 0 a 7).
Após isso, dentro do void loop basta posicionar o cursor onde o caractere deverá aparecer e mandar escrever ele na através do comando write, dessa forma:
Se você deseja criar outros caracteres, basta "montar" os outros a baixo do primeiro logo após inicializar o display, mudando apenas o nome (que no meu caso chamei de "blog"), e dentro do void setup() digita-se o comando lcd.createChar mudando apenas o número (0, 1, 2, 3 ... até 7) e o nome do caractere.
Pronto! Assim você consegue não só escrever em uma tela LCD como escrever caracteres criados por você, para saber mais consulte as fontes no fim do post e não deixe de praticar. Abraço e até a próxima.

Fontes:

0 comentários: