21/06/13

  • Tutorial Revisado

 

Adquira estes componentes na Loja do Lab de Garagem

Olá Garagistas! Neste tutorial, vamos mostrar como montar o circuito e como utilizar o LCD com o Arduino. Faremos também um exemplo criado pelo LdG, onde escrevemos na tela do LCD:

 

"Ola Garagista!

       LabdeGaragem 1"

 

Sendo o "Olá Garagista" uma saudação, "LabdeGaragem" nossa assinatura e o "1" escrito na mensagem, está representando uma contagem dos segundos passados após o início do programa. Vamos começar!

 

Materias Utilizados:

1x Arduino UNO

1x LCD 16x2

1x Potenciômetro 10KΩ

1x Protoboard

Alguns Jumpers

 

 

1.  O Funcionamento

1.1) LiquidCrystal.h: A "LiquidCrystal.h" é a biblioteca que iremos utilizar para fazer o controle do LCD, utilizando o Arduino. Ela é bastante útil, pois possui funções que nos auxilia nas configurações e tratamento dos dados a serem enviados ao LCD. Na lista abaixo, estão contidas as funções que podem ser utilizadas pela biblioteca. Para mais detalhes sobre uma certa função, basta somente clicar nela que você será redireciona para o site da Arduino.cc, onde você vai encontrar o que essa função faz, e a sintaxe para se utilizar ela.

 

 

1.2) A Pinagem do LCD: Na parte traseira do LCD você encontrará a numeração dos pinos, encontrando apenas o número 1(à direita) e o número 16(à esquerda), indicando que a contagem dos pinos vai de 1 a 16 da direita, para a esquerda. Na tabela abaixo, você poderá encontrar a descrição de cada pino do LCD:

 

 

1.3) Datasheet do LCD: No Datasheet podemos encontrar informações sobre o LCD, e saber quais os pinos vamos utilizar para fazer a montagem do circuito do LCD com o Arduino! Na nossa demonstração, não utilizaremos apenas os pinos 7, 8, 9 e 10. Após consultar o Datasheet, faça a montagem do circuito.

 

 

2. A Montagem

 

Figura 1 - Montagem do Circuito: LCD + Arduino

 

 

 3. O Sketch

-------------------------------------------------------------------------------------------------------------------------------------------------

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

 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Configura os pinos do Arduino para se comunicar com o LCD

 

int temp; //Inicia uma variável inteira(temp), para escrever no LCD a contagem do tempo

 

void setup()
{

lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas)
lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD
lcd.print("Ola Garagista!"); //Escreve no LCD "Olá Garagista!"
lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD
lcd.print("LabdeGaragem"); //Escreve no LCD "LabdeGaragem"

 

}

 

void loop()
{

lcd.setCursor(13, 1); //Posiciona o cursor na décima quarta coluna(13) e na segunda linha(1) do LCD
lcd.print(temp); //Escreve o valor atual da variável de contagem no LCD
delay(1000); //Aguarda 1 segundo
temp++; //Incrementa variável de contagem

 

if(temp == 600) //Se a variável temp chegar em 600(10 Minutos),...
  {
  temp = 0; //...zera a variável de contagem
  }

}

-------------------------------------------------------------------------------------------------------------------------------------------------

 

Copie e cole o sketch, que está dentro das linhas pontilhadas na Arduino IDE, selecione a versão da sua placa Arduino, selecione a porta serial e clique em UPLOAD. Você verá que após o upload do sketch o LCD escreverá as mensagens e começará a fazer a contagem dos segundos de programa iniciado. Pronto, seu LCD está funcionando!

 

E é isso aí! Esperamos que tenham gostado deste tutorial! Caso tenham dúvidas sobre o tutorial, vocês podem postar aqui mesmo! Vocês também podem sugerir tutoriais, clicando aqui, podem ver nossos tutoriais anteriores clicando aqui e os projetos, clicando aqui. Até a próxima Garagistas!

 

Referências:

http://www.sparkfun.com/datasheets/LCD/GDM1602K.pdf

http://arduino.cc/en/Tutorial/LiquidCrystal

 

Exibições: 209467

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Augusto em 11 setembro 2013 às 23:06

O povo não lê antes de perguntar!!! Camilo Olhe meu comentario exatamente abaixo do seu!!!!

Comentário de Camilo de Leles em 11 setembro 2013 às 21:58

Não estou conseguindo, liguei tudo como manda o tutorial várias vezes, só que o meu LCD fica com os 16 quadrados acesos na primeira linha e a segunda linha apagada, e nao escreve nada 

Comentário de Augusto em 22 agosto 2013 às 19:07

Achei o erro! No programa aqui do site falta o "=0" na função TEMP!

Comentário de Augusto em 22 agosto 2013 às 19:04

Eu fiz tudo aparentemente certinho mas meu LCD mostra os 16 caracteres superiores blocos brancos e os inferiores apenas 3 linhas brancas. Algum defeito de fabricacao ou eu fiz alguma besteira?

Comentário de Alian Vargas Pitta em 29 junho 2013 às 16:05

Boa tarde, estou fazendo um sistema com com display de lcd com caracteres customizados, o que acontece é que só consigo exibir 8 caracteres, se eu exibir mais do que isso o display exibe os resultados de forma estranha, fora de ordem e embaralhado, alguém sabe me explicar o Por quê? A baixo o código utilizado, lembrando que meu display é 16x2 e quando uso lcd.print("exemplo de texto"); aparece normalmente, o erro só ocorre com lcd.write(); a cima de 8 caracteres.

 


/*
http://www.quinapalus.com/hd44780udg.html
http://www.8051projects.net/lcd-interfacing/lcd-custom-character.php
*/
#include span style="color: #CC6600;">LiquidCrystal.h>
#define Luz_Fundo 46
LiquidCrystal lcd(53, 52, 51, 50, 49, 48);
void setup(){
lcd.clear();

//======define charset
uint8_t zero[8] = {0xe,0x1b,0x1b,0x1b,0x1b,0x1b,0xe,0x0};
uint8_t um[8] = {0x2,0x6,0xe,0x6,0x6,0x6,0x6,0x0};
uint8_t dois[8] = {0xe,0x1b,0x3,0x6,0xc,0x18,0x1f,0x0};
uint8_t tres[8] = {0xe,0x1b,0x3,0xe,0x3,0x1b,0xe,0x0};
uint8_t quatro[8] = {0x3,0x7,0xf,0x1b,0x1f,0x3,0x3,0x0};
uint8_t cinco[8] = {0x1f,0x18,0x1e,0x3,0x3,0x1b,0xe,0x0};
uint8_t seis[8] = {0xe,0x1b,0x18,0x1e,0x1b,0x1b,0xe,0x0};
uint8_t sete[8] = {0x1f,0x3,0x6,0xc,0xc,0xc,0xc,0x0};
uint8_t oito[8] = {0xe,0x1b,0x1b,0xe,0x1b,0x1b,0xe,0x0};
uint8_t nove[8] = {0xe,0x1b,0x1b,0xf,0x3,0x1b,0xe,0x0};
uint8_t a[8] = {0x0,0x0,0xe,0x3,0xf,0x1b,0xf,0x0};
uint8_t b[8] = {0x18,0x18,0x1e,0x1b,0x1b,0x1b,0x1e,0x0};
uint8_t c[8] = {0x0,0x0,0xe,0x1b,0x18,0x1b,0xe,0x0};
uint8_t d[8] = {0x1,0x1,0xf,0x1b,0x1b,0x1b,0xf,0x0};
uint8_t e[8] = {0x0,0x0,0xe,0x1b,0x1f,0x18,0xf,0x0};
uint8_t f[8] = {0x7,0xc,0x1e,0xc,0xc,0xc,0xc,0x0};


lcd.setCursor(0,0);
lcd.createChar(0, zero);
lcd.createChar(1, um);
lcd.createChar(2, dois);
lcd.createChar(3, tres);
lcd.createChar(4, quatro);
lcd.createChar(5, cinco);
lcd.createChar(6, seis);
lcd.createChar(7, sete);
lcd.createChar(8, oito);
lcd.createChar(9, nove);
lcd.createChar(10, a);
lcd.createChar(11, b);
lcd.createChar(12, c);
lcd.createChar(13, d);
lcd.createChar(14, e);
lcd.createChar(15, f);
lcd.begin(16, 2);
lcd.home();

}
void loop(){
int i = 0;
int j = 0;

lcd.clear();

while (i<16) {

lcd.setCursor(i,0);
lcd.write(j);
delay(1000);
j++;
i++;
}

}

 

Comentário de Francisco Michel de Carvalho em 22 junho 2013 às 18:07

funciona se eu usar um trimpot de 20k?

Comentário de Laboratório de Garagem em 21 junho 2013 às 18:45

Garagistas, revisamos este tutorial (LCD com Arduino), acrescentamos mais informações e também um vídeo.

Espero que tenham gostado da revisão.

Atenciosamente,

Equipe LdG.

Comentário de Cairo Batista em 2 março 2013 às 18:54

Pessoal, tem como fazer o tutorial sem o potenciometro?

Comentário de Andre Fonseca da Guia em 11 janeiro 2013 às 12:44
Ola, eu gostaria de saber se tem um jeito ou uma funçao que faça, no lcd 16x2, mudar de linha automaticamente quando a primeira linha estiver completamente "cheia" de caracteres sem usar a funçao set.Cursor( )
Comentário de Geraldo Freitas Barbosa Filho em 17 setembro 2012 às 17:28

oi, estou usando o arduino leonardo e usei esse codigo para comunicar PC e display...o problema eh que, mesmo dando o upload, o microcontrolador executa o programa que estava gravado antes. Eu preciso limpar a memoria do micro ou coisa parecida?como faco o arduino rodar o codigo atual e nao o anterior? Consegue me ajudar?

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço