Display gráfico LCD 128×64 – ST7920
Displays LCD são itens indispensáveis para quem mexe com Arduíno. São componentes relativamente baratos e oferecem, dependendo do uso, uma forma mais eficaz do que o serial monitor para acompanhamento de dados. Neste post você verá que o uso de um display gráfico LCD 128×64 com Arduino levanta possibilidades de configuração interessantes para o seu projeto.
Já utilizei displays LCD em muitos artigos aqui no Arduino e Cia, seja mostrando indicadores de temperatura e umidade em um LCD Nokia 5110, ou as distâncias lidas por um sensor ultrasônico, em um LCD 16×2.
O display gráfico LCD 128×64
Vou mostrar para vocês um outro display LCD gráfico, este com resolução de 128×64 pixels, baseado no chip ST7920.
Este display tem backlight azul e escrita branca, e com ele (e a biblioteca certa) você consegue efeitos gráficos muito legais como rotação de tela, mudança de fontes de texto, rotação de texto e, claro, desenhar. Publiquei um pequeno vídeo no Youtube mostrando algumas dessas funções:
O display tem 20 pinos, numerados da direita para a esquerda, conforme podemos ver na foto abaixo. Ele pode ser utilizado para se comunicar com o Arduino tanto de forma serial como paralela. Neste artigo, onde a velocidade de atualização do LCD não é um ponto crítico, vamos utilizar a comunicação serial, ocupando apenas 4 portas do Arduino:
Informações mais detalhadas sobre a pinagem do LCD podem ser encontradas no datasheet do produto.
Atualizado: Veja como ligar este display em modo paralelo no artigo Display gráfico LCD 128×64 ST7920 em modo 8 bits.
Atualizado: Monte um relógio analógico/digital com esse display. Veja no post Relógio com Display LCD 128×64 e módulo RTC DS3231.
Circuito display 128×64 com Arduino
O circuito usa um potenciômetro (utilizei um de 50K) para regulagem do contraste do display, e a alimentação é feita pelos 5v do Arduino. Para alimentar o backlight, eu usei os 3.3v do Arduino Uno R3 (mas segundo as especificações, também pode ser ligado em 5v):
Abaixo temos uma tabela com as funções dos pinos desse display:
A biblioteca que vamos usar é a U8glib , uma biblioteca bem completa (e complexa, às vezes), com muitos exemplos de utilização. Recomendo uma visita à página da u8glib (em inglês) , onde você vai encontrar instruções sobre o funcionamento da biblioteca e também informações detalhadas sobre a utilização de cada comando. Vale a pena explorar.
Para instalar a biblioteca U8glib, acesse o menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Dentro do Gerenciador de Bibliotecas procure por “u8glib”, instalando a U8glib by oliver, conforme imagem abaixo:
Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.
Com a biblioteca instalada, vamos ao programa, que é baseado no exemplo “GraphicsTest” e que já vem com a biblioteca. Conforme as instruções do desenvolvedor, conservei o cabeçalho com as informações de direitos autorais:
/* GraphicsTest.pde >>> Before compiling: Please remove comment from the constructor of the >>> connected graphics display (see below). Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ Copyright (c) 2012, [email protected] All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "U8glib.h" // A linha abaixo define as ligacoes e deve ser // ajustada conforme o display utilizado. U8GLIB_ST7920_128X64_1X u8g(6, 5, 4 ,7); //Enable, RW, RS, RESET int display = 1; void u8g_prepare() { u8g.setFont(u8g_font_6x10); u8g.setFontRefHeightExtendedText(); u8g.setDefaultForegroundColor(); u8g.setFontPosTop(); } void u8g_Tela1() //Tela 1 - Arduino e Cia - Retangulos { u8g.setFont(u8g_font_unifont); u8g.drawStr( 11, 35, "Arduino e Cia"); u8g.drawStr( 12, 35, "Arduino e Cia"); u8g.drawFrame(0,0,128,64); u8g.drawFrame(2,2,124,60); } void u8g_Tela2() //Tela 2 - Moldura e relógio { u8g.drawRFrame(0,0,128,64,3); u8g.drawStr( 3, 10, "Hor.: 13:00"); u8g.drawStr( 3, 25, "Temp: 27"); char s[2] = " "; s[0] = 176; u8g.drawStr(51, 25, s); u8g.drawStr( 3, 40, "Umid: 25%"); u8g.drawCircle(95,32,28); u8g.drawCircle(95,32,29); u8g.drawLine(95, 9, 95, 4); u8g.drawLine(123, 32, 118, 32); u8g.drawLine(95, 55, 95, 60); u8g.drawLine(67, 32, 72, 32); u8g.drawLine(95, 32, 95, 12); u8g.drawLine(95, 32, 100.8, 21.87 ); u8g.setFont(u8g_font_04b_03); u8g.drawStr(89,43, "Tag"); u8g.drawStr(85,50, "Heuer"); } void u8g_Tela3() //Tela 3 - Caracteres Ascii - Pag. 1 { char s[2] = " "; u8g.drawStr( 0, 0, "ASCII page 1"); for(int y = 0; y < 6; y++ ) { for(int x = 0; x < 16; x++ ) { s[0] = y*16 + x + 32; u8g.drawStr(x*7, y*10+10, s); } } } void u8g_Tela4() //Tela 3 - Caracteres Ascii - Pag. 2 { char s[2] = " "; uint8_t x, y; u8g.drawStr( 0, 0, "ASCII page 2"); for( y = 0; y < 6; y++ ) { for( x = 0; x < 16; x++ ) { s[0] = y*16 + x + 160; u8g.drawStr(x*7, y*10+10, s); } } } void u8g_Tela5() //Tela 5 - Arduino e Cia - Retangulo preenchido { u8g.setFont(u8g_font_unifont); u8g.drawBox(0,0,128,64); u8g.drawBox(2,2,124,60); u8g.setColorIndex(0); u8g.drawStr( 11, 35, "Arduino e Cia"); u8g.drawStr( 12, 35, "Arduino e Cia"); u8g.drawFrame(2,2,124,60); } void u8g_Tela6() //Tela 6 - Arduino e Cia em 0, 90 e 270 graus { u8g.setFont(u8g_font_helvB08); u8g.drawStr(50,31, " Arduino"); u8g.drawStr90(50,31, " e"); u8g.drawStr270(50,31, " Cia"); } void u8g_Tela7() //Tela 7 - Fontes diferentes { u8g.setFont(u8g_font_robot_de_niro); u8g.drawStr(5,13, "Arduino e Cia !"); u8g.setFont(u8g_font_helvB08); u8g.drawStr(5,25, "Arduino e Cia !"); u8g.drawBox(5,31, 118,11); u8g.setColorIndex(0); u8g.setFont(u8g_font_8x13); u8g.drawStr(5,41, "Arduino e Cia !"); u8g.setColorIndex(1); u8g.setFont(u8g_font_ncenB10); u8g.drawStr(5,60, "Arduino e Cia !"); } void draw() //Rotina Desenho { u8g_prepare(); switch(display) //Carrega a tela correspondente { case 1: u8g_Tela1(); break; case 2: u8g_Tela2(); break; case 3: u8g_Tela3(); break; case 4: u8g_Tela4(); break; case 5: u8g_Tela5(); break; case 6: u8g_Tela6(); break; case 7: u8g_Tela7(); break; } } void setup() { // flip screen, if required //u8g.setRot180(); // assign default color value if ( u8g.getMode() == U8G_MODE_R3G3B2 ) u8g.setColorIndex(255); // white else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) u8g.setColorIndex(1); // max intensity else if ( u8g.getMode() == U8G_MODE_BW ) u8g.setColorIndex(1); // pixel on //u8g.setContrast(0x30); } void loop() { // picture loop for (display =1; display < 8; display++) //Carrega as telas de 1 a 7 { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); delay(3000); //Pausa de 3 segundos e reinicia o processo } }
Um último detalhe sobre esta biblioteca é que ela suporta vários tipos de displays e controladores, bastando para isso mudar os parâmetros de comunicação dentro do programa. Para uma lista completa dos dispositivos suportados e respectiva configuração, acesse este link.
Gostou do post sobre display gráfico LCD 128×64 com Arduino? Então confira outros posts sobre displays aqui mesmo no Arduino e Cia!
Otimo tutorial! Obrigado!
Valeu Daniel !
Estou pesquisando uma maneira de transformar o arduino + o display gráfico em um monitor de serial RS 232 ou USB.
Onde eu possa receber os dados como no serial monitor e escrever dados pelo teclado touch.
Alguém se arrisca a ajudar…
Hola puedes usar el convertidor MAX232 que es un convertidor de RS232 a ttl, existe en modulo para arduino.
Parabéns cara muito bom me ajudou muito, estava sem nenhuma informação desse display, você poderia fazer um tutorial de como comunicar ele com o arduino MEGA sem ser através da serial ?
grato
Valeu ! Vou verificar essa possibilidade. Boa idéia. Abraço !
OMG I don't know portuguese hehe but this was really helpful! It worked perfectly THANKSSSS!!! with an arduino MEga adk it works well, this was the only code that worked, it's perfect thanks a lot!
Hi ! Thank you for visiting. Glad to help. If I can help with anything else, feel free to leave a message. Best regards !
Hi I have problem about connection between LCD 12864 ST7920 and arduino mega
I do several attempt but does not work
I have to operate in parallel mode and I work with librery U8GLIB
With arduino uno it work fine
Pls can you show me your connection
I have tried with this config but nothing to do
U8GLIB_ST7920_128X64_4X u8g(22, 23, 24, 25, 26, 27, 28, 29, 37, 36, 35);
Tks a lot Gianni
does not work
Hi Gianni,
I´ve tested this display in parallel mode with Arduino Uno. With the code used in this post (using serial) your display works ?
Regards,
dae
nao estou conseguindo imprimir variaveis como millis , somente texto , sabe como fazer?
Boa tarde. Use o comando u8g.print ao inves do u8g.drawStr. Fiz um teste modificando esta parte do código para imprimir a variavel time :
void u8g_Tela7() { //Tela 7 – Fontes diferentes
time = 123456;
u8g.setColorIndex(1);
u8g.setPrintPos(5, 10);
u8g.print(time);
}
Abraço !
Como você faz para ter noção das posições ? Tentariva e erro ?
Boa noite. Exatamente. Até conseguiria montar algum esquema pra simular, já que é uma matriz de 128 x 64 pontos, mas por tentativa e erro é mais rápido. rs. Abraço !
Boas pessoal
Tenho um arduino uno e comprei este display:http://www.buydisplay.com/default/5-2-inch-24064-lcd-240×64-t6963c-controller-module-display-black-on-white.html
So que não consigo colocar a dar imagem, a unica coisa que aparece é uma linha ao comprido, passado 1 segundo aparece outra linha (noutra posição do display)
O que esta errado?
Obrigado
Boa noite Hugo,
Em texto ele funciona normalmente ?
Abraço.
Boas
É de salientar que sou novato nestas coisas, tenho o arduino á 2 dias 🙂
Mas não dá nada,nem imagem, nem texto. Só aparece uma linha na horizontal, em que aparece, desaparece, volta a aparecer (noutra posição do display) e desaparece, isto num segundo apenas
Ja corrigi a pinagem porque encontrei num site, este http://www.mikroe.com/download/eng/documents/compilers/mikrobasic/pro/pic/help/t6963c_graphic_lcd_library.htm
Ja tirei as telas 2,3,4,5,6 da libraria (so fiquei com o texto) e dá o mesmo
Na libraria do site do display:http://www.buydisplay.com/download/democode/ERM24064-1_DemoCode.txt
Dá erro e nada feito
Está mau para realizar o projecto que tinha em mente porque estou a ficar sem ideias
Queria mudar o TID do Opel Astra (Chevroulet Astra no Brasil) mantendo as funções originais (info do radio, data, horas, temperatura exterior) e adicionar temp. interior, velocimetro, spectrum do som, voltagem, etc. O acerto de horas e data pasava a ser feito na manete do limpa vidros
Exemplos: http://www.etlweb.com/?ref=prod_decodtool_edemulator
http://www.youtube.com/watch?v=SvBacxqNV5c
http://veramon.czweb.org/en_pp_astra_g_mid.html
Bom dia Hugo !
Legal, o seu projeto pelo jeito vai ser um pouco complexo, pra interligar tudo isso, mas o resultado vale a pena. Bacana. 😎
Infelizmente eu não tenho um display desses para testar, mas me parece, pela pinagem e pelo que você descreveu, que o problema está no hardware mesmo.
Você tem condições de devolver esse display e pegar um outro ?
Abraço.
Sabe me dizer se tem como eu fazer essa mesma ligacao mas usando GLCD ?
Boa tarde Eduardo,
Ainda não tentei a ligação deste display usando essa biblioteca, mas pretendo tentar em breve.
Abraço !
Boa noite, estou usando o arduino uno e o lcd grafico e quando conecto todos os fios o arduino desliga , acho que o uno não está aguentando a corrente
Boa noite Ana,
Eu fiz esse experimento com um Arduino Uno e um display gráfico, e não tive problemas.
Se o Arduino está desligando, acho mais provável que seja alguma ligação invertida, que aciona o sistema de proteção do Arduino e faz com que ele desligue.
Abraço !
Ola Boa Noite? Esse esquema e código funciona com LCD WINSTAR WG12864A?
Boa noite,
Eu não tenho esse LCD para testar, mas olhando o datasheet vi que a pinagem é a mesma. Creio que você não terá problemas quanto à ligação.
Datasheet : http://www.winstar.com.tw/download.php?ProID=48
Abraço !
ola, estou tendo um problema na hora de conctar o vcc e o cs1, eles curtam circuitam e desligam o arduino, em fato os dois estao ligados pelo proprio lcd, ha algum problema com ele ou é outra cooisa. estou usando o lcd QC12864B com o controlador ST7920
Boa noite Vitor,
Não sei se o esquema de ligação do seu display é o mesmo, mas no circuito que eu usei o CS1 e o Vss vão no GND. Apenas o Vdd vai nos 5v do Arduino.
Dê uma olhadinhas nas suas ligações porque estou achando que o problema é apenas a inversão de algum pino.
Abraço !
Boa noite Vitor, estou tendo o mesmo problema, alguma solução?
teste com um voltimetro se ha um curto circuito entre o vcc e o cs1, se houver provavelmente o lcd esta com problema de fabricaçao, foi isso que o distribuidor me informou, ele trocou e tudo funcionou perfeitamente.
Boa noite Vitor !
Obrigado pelo retorno. Ainda bem que a solução é relativamente simples.
Abraço !
possuo lcd QC12864B com o controlador ST7920, somente precisa remover SMD R9 de 0ohm.
Estou com o mesmo problema relatado pela Ana, alguém alguma luz?
Passei pelo mesmo problema. Havia uma conecção permanente do pino 15 em HIGH (uso paralelo), via resistor R9. Foi só retirar o resistor e funcionou normal.
opa fera
estou com problema para compilar o arquivo eu tenho boa experiência em eletrônica mas muito pouca em programação a minha duvida é além do arquivo .pde e o de inclusão .h no caso U8glib.h
e necessário de mais algum ? pois não compila sempre da algum erro
abç !
Boa tarde,
No programa eu utilizo apenas a biblioteca U8glib mesmo. Que erro está apresentando ?
Abraço.
Ola, fiz todas as ligaçoes correspondentes, porem somente a tela liga e nenhum caracter aparece. Estou usando um potenciometro de 10k. só funcona com 50k?
Boa noite Kályston,
Não precisa ser necessariamente de 50 K. Nesse post eu usei o potenciômetro que estava disponível, mas pode ser de 10 K, 50 K, 1 Mega… é só para ajuste do contraste mesmo. Creio que seja alguma ligação invertida, ou alguma marcação errada na placa. Isso acontece com uma certa frequencia.
Abraço !
Olá Amigo!
Onde posso baixar o arquivo deste display para simular no Protheus?
Bom dia,
Qual arquivo/formato você precisa ?
Abraço !
Acredito que sejam dois arquivos (LIB e IDX). Ainda não tenho o display e quero testar o código antes, simulando o mesmo no proteus. Obrigado!
Boa tarde,
Não achei esses arquivos não… 🙁
Boa tarde,
estou tentando conectar uma lcd 128×63 (QC12864B) onde o pino 15 é o PSB. Utilizei o exemplo do site e outros exemplos da internet, mas sem nenhum sucesso. Gostaria de uma ajuda para conectar com o Arduino UNO ou NANO. Esse display com o PIC funciona, mas com o arduino estou tendo dificuldades. Estou utilizando o U8GLIB_ST7920_128X64_1X u8g(6, 5, 4 ,7); //Enable, RW, RS, RESET, mas nada aparece no display. Pode me ajudar?
Boa tarde,
Como você está ligando o pino PSB ?
Abraço.
quando clico em verificar na ide do arduino dar esse erro: TextRotX:159: error: 'u8g' was not declared in this scope
Boa tarde,
Parece ser algum problema com a biblioteca u8glib, por favor reveja a instalação da biblioteca.
Abraço.
Heloo,
I have an LCD identical to it
Can you help me to make connections:
// Software SPI (slower updates, more flexible pin options):
// pin 7 – Serial clock out (SCLK)
// pin 6 – Serial data out (DIN)
// pin 5 – Data/Command select (D/C)
// pin 4 – LCD chip select (CS)
// pin 3 – LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
Hi !
What kind of display do you have ? Can you send me a link ?
Regards !
Boa tarde,
É possível ter algum tipo de animação na tela ?
Por exemplo, um desenho assim por exemplo, represtentando uma face: O O
—–
E os olhos teriam uma simulação de piscar.
Abraços e Parabéns pelo blog, que já me ajudou em muitos projetos
Cleiton
Bom dia Cleiton,
É possível sim, só recomendo que vc não desenhe a tela inteira novamente, já que provavelmente o efeito ficará lento devido à frequencia de atualização do display. Uma opção também é utilizar o display ligado em modo parelalo (eu falo sobre isso no final do post).
Abraço e obrigado !
Bom dia.
Estou tentando fazer este projeto utilizando um display AGM-12864A-801, porém não estou obtendo nenhum resultado. Vejo que a pinagem é a mesma, porém deve haver outro fator que esteja impedindo o sucesso do projeto. Já conferi e re-conferi as ligações e tentei nos modos serial e paralelo. É como se somente o BL ficasse aceso, e o contraste totalmente inoperante pelo potenciômetro, sendo que a variação de tensão ocorre perfeitamente.
Bom dia João,
Eu olhei o datasheet desse seu display, e parece que há uma diferença de pinagem nos pinos 15 e 16, talvez esteja aí o problema.
Infelizmente não tenho nenhum display desse modelo aqui para testar… Sabe me dizer qual o controlador do seu display ?
Abraço !
O meu AGM usa o controlador NT7108. Estou apanhando pra fazer funcionar aqui.
Boa noite Vítor!
Estou com um LCD igual a este e estou usando ele para exibir as informações do módulo RTC DS3231! Quanto a isso não tenho problemas!
Acrescentei no projeto o módulo DHT11 , mas não consigo colocar para exibir no LCD!
Na serial,coloco para printar a temperatura e a umidade e os dados são exibidos normalmente !
Tem alguma outra forma ? Os dados tem que ser em byte?
Obrigado
boa tarde, eu fiz a ligacao do jeito q diz na imagem, mas nao ta aparecendo nada.
Boa tarde,
Seu display é do mesmo modelo desse que eu usei no post ?
Abraço!
12864b, segundo oq eu pesquisei eh o mesmo controlador tb.
Tenho no proteus AMPIRE128x64 E LGM12641BS1R qual o esquema para ligação 4 bits e 8 bits e a programação dos pinos E, R/W, RST, DI, CSS2, CSS1?
Boa tarde, parabens pelo post primeiramente.
Conectei o display a um sensor DHT11, e eu gostaria de mostrar ele na tela, ja declarei a variavel, porem mesmo assim ainda não consigo, qual a função e como faço para conectar um sensor e fazer ele mostrar na tela?
Bom tarde.
Tente os comandos u8g.setPrintPos para setar a posição, e u8g.print para mostrar na tela. Exemplo:
//Obtem os dados do sensor
temperatura = analogRead(A0)
//Define a posicao na tela
u8g.setPrintPos(30, 50);
//Mostra o valor da variavel Temperatura na posicao especificada
u8g.print(temperatura);
Abraço !
mto bom mano!! nao tem o model e a lib desse display para rodar no proteus? no proteus tem LGM12641BS1R e o ampire128X64 ambos com KS0108 128×64 mas nao consegui rodar nenhum!!!
Ola.
Estamos estudando alternativas para um projeto de automação embarcada.
Seria possível ligar de 4 a seis displays deste em um Mega (em serial)?
Cada um exibindo as informações de um grupo de sensores, em texto e gráficos tipo BAR ou Gauge.
Abç.
Boa tarde,
Acho que o ideal nesse caso seria um módulo I2C para display gráfico, mas é um módulo que eu ainda não achei para comprar, pelo menos não aqui no Brasil.
Com ele, você pode ligar vários displays utilizando apenas 2 pinos do Arduino.
Abraço!
Ola Pessoal,
Gostaria de saber qual é o comando para eu atualizar a tela, não gostaria de usar um laço while para isso
Gostaria de saber, alguém poderia dar uma luz!!
Boa tarde amigos do Arduino e Cia, estou usando esta biblioteca para o respectivo Display, gostaria de saber qual o comando que ele utiliza para limpar a tela, pois quando eu vou mudar de tela ele sobrepoe e acaba nao limpando os caracteres da tela anterior.
Bom dia Marlon,
Vou ficar te devendo essa, por enquanto, mas é uma boa sugestão para um próximo post.
Abraço!
Ola, comprei este display ( http://www.eletrodex.com.br/display-lcd-grafico-128×64-c-back-azul.html) que creio ser o mesmo, porem o codigo nao funciona.
Sera que temos algum tipo de controlador diferente neste meu display??
Bom dia Eron,
O display é muito parecido, mas o controlador é outro. Tente verificar o comando para o controlador KS0108 (foi o mais próximo que eu achei), nesta página:
https://code.google.com/p/u8glib/wiki/device
Abraço!
Boa tarde, eu estou usando o Proteus para emular o LCD e o arduino, mas os displays que eu encontrei na biblioteca de componentes nao tem nada a ver com esse( os terminais sao muito diferenes) como faço para ligar ele??
Essa é a pinagem dele:
1-Vss
2-Vdd
3-Vo
4-C/D
5-RD
6-WR
7-D0
8-D1
9-D2
10-D3
11-D4
12-D5
13-D6
14-D7
15-CE
16-RST
17-VEE
18-MD2
19-MS1
20-HALT
Bom dia Matheus,
No Proteus vou ficar te devendo. Vamos ver se os outros leitores do blog conseguem te ajudar.
Abraço!
Olá Amigo! Estou com o lcd "MGD12864H-NS(W)-BBS-01" ( http://www.eletrodex.com.br/display-lcd-grafico-128×64-c-back-azul.html ) . No site tem a datasheet ao qual, juntamente com sua tabela, me baseei para a ligação dos pinos no arduino UNO. No entanto usando o código que você forneceu aqui, no obtive sucesso ( a tela fica apenas acesa ). Sou marinheiro de primeira viajem com relação ao arduino, assim me desculpa se falar alguma besteria, mas você acha que, no meu caso seria essa biblioteca que não funciona com essa tela? Outra duvida, pelo que entendi la da datasheet, os pinos RW,RS e Enable não são usados para efetivamente "passar" os dados do arduino pra o lcd, mas sim mais para controle, ficando o pino 16 do lcd ( Data input/output) aparentemente mais com essa função, você acha que meu problema poderia ser esse ? No seu código, os dados são passado pelo pino RW? Mais uma vez me desculpe o texto grande, é que ganhei esse lcd de um amigo que havia comprado nessa loja, e também não conseguiu botar para funcionar! Obrigado!!
Boa noite Leonardo,
O display é muito parecido, mas o controlador é outro. Tente verificar o comando para o controlador KS0108 (foi o mais próximo que eu achei), nesta página:
https://code.google.com/p/u8glib/wiki/device
Abraço!
Ola, Primeiro parabens pelo blog e pelo post.. gostaria de verificar se voce ja utilizou esta biblioteca para comunicar o arduino com o display tb6560 240×148, tanto faz a placa de controle mega, uno ou nano.
Oi Bruno,
Obrigado. Infelizmente ainda não fiz esse teste, mas se eu conseguir um display desses posto os resultados aqui.
Abraço!
Ola Pessoal,
Gostaria de saber qual é o comando para eu atualizar a tela, não gostaria de usar um laço while para isso
SERIA POSSÍVEL LIGAR DIRETAMENTE O ARDUINO UNO R3 COM ESSE LCD SEM O USO DA PROTOBOARD? VC TERIA UM TUTORIAL ESPECIFICO OU SEMELHANTE?
Bom dia Luiz,
Você pode usar o mesmo esquema de ligação mostrado neste post. Você pode soldar os fios diretamente no LCD.
Abraço!
Bom dia, você tem exemplos desse mesmo display com o arduino uno gerando um gráfico na tela? Obrigada!
Olá,
Não tenho, mas é uma boa sugestão de post. Que tipo de grafico você gostaria de gerar ?
Abraço!
Como faço para mudar o tamanho da fonte?
Boa noite,
Dê uma olhada nessa tabela de fontes da biblioteca u8glib:
https://github.com/olikraus/u8glib/wiki/fontsize
Abraço!
Obrigado pelo post, me ajudou bastante!
Valeu Michelly! Abraço… 🙂
olá alguém sabe como faço para exibir essa imagem do Arduino na tela? Tem que adicionar algum arquivo?
Amigo, por favor poderia me ajudar? Toda vez que for utilizar esse lcd preciso criar uma nova função void para cada tela que eu quiser utilizar? não haveria uma forma de utilizar o mesmo de forma similar a biblioteca LiquidCrystal?
Alguém sabe como posso usar essa biblioteca para exibição de mensagens de maneira similar aos displays 20×4? Vou usar no meu TCC.
Tentei usar da maneira assim mas sempre preciso definir um loop e não consigo exibir as mensagens simultaneamente. Ele fica trocando as telas.
Olá, alguma ideia para ligar um Display 640×200 Seiko TW2294V-0 G648D Rev2? Aqui (http://www.projekte.daleske.de/mcp/48_CPD-Modul_LCDController/LCDController.htm) tem alguma coisa sobre ligações e tal, mas o problema é biblioteca para o arduino… Tens ideia de algo? Muito grato pela tenção e pelo conteúdo do post!
Amigo para quem nao tem o chield do relogio mas tem o ci e oscilador como ficaria as entradas e saidas no arduino saberia me responder?
obrigado.
Olá,
Como vc fez para simular esse display?
Olá estou tentando ligar este Display usando um adaptador I2C, o LCD acende mas não aparece n enchumaço carácter. Imagina o que pode estar acontecendo? O I2C é da robotdyn.
Boa noite,
Vou ficar te devendo essa por enquanto. Meu adaptador da Robotdyn ainda não chegou… 🙂
Abraço!
Adilson
Bom dia,
O seu adptador ja chegou arduino e cia?
Até mais!
Fala Hernandes!
Por acaso chegou essa semana. Vou testar. 🙂
Abraço!
Adilson
bom dia! não consigo ligar o dosplay só acenda o led nada de iamgem, o que pode ser?
fiz tudo certo o arduino compila certinho o dispay esta aceso mas nao aparece nada nem pontinhos e o display esta ok
Boa noite, você poderia fazer um tutorial de comunicação deste lcd com I2C? Tenho este LCD e um módulo MCP23017 mas não consigo fazer aparecer nada na tela 🙁
Boa tarde,
Pretendo fazer isso em breve. Meu módulo já chegou. 🙂
Abraço!
Adilson
nao precisa conectar ao arduino os pinos de dados? D0-D3
Boa tarde,
Nessa configuração mostrada, não é necessário.
Abraço!
Adilson
Porque você é seletivo ao responder os comentários? alguns possuem dúvidas e você ignora.
Oi Marcus,
Não sei bem se "seletivo" seria a palavra correta. Muitas dúvidas eu deixo para a comunidade se ajudar, seja por falta de tempo para testar a solução, seja por não saber mesmo. rs
Na medida do possível, tento responder sim.
Abraço!
Adilson
Entendo. É que tive umas dúvidas com relação a um LCD em 2016 e ninguém respondeu meu comentário. De qualquer forma agradeço sua sinceridade e atenção.
Muito obrigado! 😀
good news and congratulations on this project.
can you explain how I could to add one button to make the change from screen1 to screen2 thanks in advance.
it may be my simple question but for me I'm a novice
Hi!
Can you have a look to this post: https://www.arduinoecia.com.br/2015/12/relogio-arduino-display-128×64-rtc-ds3231.html
In that one, I show how to change the values on display using a push button… 😉
Best regards!
Adilson
¿POR QUÉ PSB ME GENERA CORTO CIRCUITO?, ARROJA 5 VOLTS ESE PIN Y OBVIAMENTE AL PONERLO A GND GENERA CORTO CIRCUITO, ¿POR QUE SUCEDE ESO?
Funciona no Arduino Due?
Bom dia,
Funciona, mas use um conversor de nível lógico nos pinos de sinal, já que esse display trabalha com 5V, e o Arduino Due com 3.3V nos pinos, ok?
Abraço!
Adilson
Estou fazendo um projeto e por mais que eu modifique as configurações a tela não funciona por inteira, ou seja, todos os bits de 128×64.. ela só funciona os 128 x 9… ou seja, apenas uma parcela pequena da tela.. quando eu coloco o seu código para carregar no arduino ela funciona corretamente, ou seja não é um problema de Hardware.. existe alguma configuração que faça essa tela ficar cortando?
Boa noite,
A sua tela é a mesma que eu usei no post, com controlador ST7920?
Abraço!
Adilson
é a mesma sim!
Good and good Christmas. I want to ask if your design will work with arduino mega
Hi Giannhs!
Happy New Year! 😀
Yes, it works with Arduino Mega.
Best regards!
Adilson
Good evening. I can use its analogue doors arduino To connect it Lcd
Hi Giannhs,
Yes, you can use the analog ports.
Best regards!
Adilson
Thanks
She can work and Mega 2560 PRO MINI??
Hi!
Never tested, but I think it works without problem. 🙂
Best regards!
Adilson
thank you,best regards from Serbia POZDRAV