21/06/13
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:
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
Comentar
O povo não lê antes de perguntar!!! Camilo Olhe meu comentario exatamente abaixo do seu!!!!
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
Achei o erro! No programa aqui do site falta o "=0" na função TEMP!
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?
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++;
}
}
funciona se eu usar um trimpot de 20k?
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.
Pessoal, tem como fazer o tutorial sem o potenciometro?
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?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)