Documente Academic
Documente Profesional
Documente Cultură
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Incio
Arduino
Robtica
Apostila Arduino Bsico
Sobre Ns
Contato
Loja
Incio
Arduino
Robtica
Apostila Arduino Bsico
Sobre Ns
Contato
Loja
ARDUINO / ARDUINO INTERMEDIRIO
8 COMMENTS
FOLLOW:
NEXT STORY
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
1/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
uma imagem
PREVIOUS STORY
LDR
como utiliz-lo com o Arduino.Apesar de muito til, esse tipo de telapossui suas
limitaes. Caso voc queira que a experincia do usurio com o seu projeto seja
melhor atravs de funes grficas esteticamente mais agradveis, como por
CATEGORIAS
Arduino
Arduino Avanado
Vamos l?
Arduino Bsico
Arduino Intermedirio
Conceitos Bsicos
Construindo um rob
Eletrnica Bsica
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
2/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Microcontroladores
Outros
Robtica
ARDUINO / ARDUINO
INTERMEDIRIO
Fig 1 Exemplo de Interface Homem Mquina (IHM)
ARDUINO / ARDUINO
INTERMEDIRIO
3/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
VidadeSilcio
Fig 2 Nokia 5110
O Nokia 5110 foi um popular telefone celular lanado pela Nokia em 1998 e fez
bastante sucesso por diversos motivos: permitia a troca da tampa frontal por
outras de cores diferentes, era de fcilutilizaoe tinha novas funcionalidades,
26,414likes
LikePage
ShopNow
Bethefirstofyourfriendstolikethis
A tela no era colorida, porm,tinha uma tima resoluo para poca e deu vida
ao clssico jogo Snake que fez sua primeira apario justamente no modelo
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
4/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Neste tutorial ser ensinado como utilizar um display LCD grfico do Nokia 5110
usando as bibliotecas criadas por Henning Karlsen do site Rinky-Dink Eletronics.
Para baixar as bibliotecas clique aqui. Depois adicione ela sua IDE Arduino
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
5/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Para saber como incluir uma biblioteca na IDE Arduino, visite o post Sensores DHT e
Uso de Bibliotecas.
Montando o projeto
Agorairemosconectar os componentes do projeto. Para isso, desligue o cabo
USB de seu Arduino e monte seu circuito conforme a figura a seguir.
Para o display de placa azul que opera a 5V teremos o seguinte esquema:
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
6/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Resistor
Arduino
Cor
1 RST
Pino 12
Amarelo
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
7/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
2 CE
Pino 11
Verde
3 DC
Pino 10
Azul
4 DIN
Pino 9
Laranja
5 CLK
Pino 8
Roxo
6 VCC
5v
Vermelho
7 LIGHT
220R
5v
Vermelho
8 GND
GND
Preto
Para o display de placa vermelha que opera a 3.3V, precisamos colocar resistores
de 10k Ohm nas entradas de sinaluma vez quea sada do Arduino UNO de 5V.
Nesse caso, teremos uma queda de tenso no resistor, diminuindo a tenso que
chegar aomdulo.
Veja o esquema:
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
8/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Resistor
Arduino
Cor
1 RST
10K
Pino 12
Amarelo
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
9/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
2 CE
3 DC
10K
10K
Pino 11
Pino 10
Verde
Azul
4 DIN
10K
Pino 9
Laranja
5 CLK
10K
Pino 8
Roxo
6 VCC
3.3v
Vermelho
7 LIGHT
220R
GND
Marrom
8 GND
GND
Preto
Nota: Caso o LCD 5110 de placa vermelha seja utilizado com um Arduino Due
no ser necessrio o uso dos resistores de 10K pois suas portas operam a 3.3V!
Veja como ficou a nossa montagem:
Arduino Uno com display placa azul
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
10/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
11/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
12/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Programando
Crie um programa (sketch) e salve com o nome de modulo_5110_ex1.
Com o seu programa salvo, adicione a biblioteca LCD5110_Basic.h
Caso ainda no tenha feito, baixe as bibliotecas clicando aqui. Para saber como
incluir uma biblioteca na IDE Arduino, visite o post Sensores DHT e Uso de Bibliotecas.
Em seguida,insiranele o cdigo conforme escrito abaixo:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include
LCD5110tela(8,9,10,12,11);
/*CriaobjetodaclasseLCD5110
CLKPino8
DINPino9
DCPino10
RSTPino12
CEPino11
*/
//Obtendoasfontes
externuint8_tSmallFont[];
externuint8_tMediumNumbers[];
externuint8_tBigNumbers[];
voidsetup()
{
tela.InitLCD();//Inicializandoodisplay
}
voidloop()
{
24
tela.setFont(SmallFont);//Definindoafonte
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
13/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
tela.setFont(SmallFont);//Definindoafonte
//Escreveapalavravidaalinhadaesquerdacomeandonalinha0
tela.print("Vida",LEFT,0);
delay(500);
tela.clrScr();//Apagaocontudoqueestivernatela
tela.print("de",CENTER,20);
delay(500);
tela.clrScr();
tela.print("Silicio",RIGHT,40);
delay(500);
tela.clrScr();
delay(1000);
tela.print("VIDA",LEFT,0);
tela.print("DE",CENTER,20);
tela.print("SILICIO",RIGHT,40);
delay(1000);
tela.clrScr();
tela.print("Numeromedio:",LEFT,0);
tela.setFont(MediumNumbers);
tela.printNumI(123,CENTER,16);
delay(2000);
tela.clrScr();
tela.setFont(SmallFont);
tela.print("Numerogrande:",LEFT,0);
tela.setFont(BigNumbers);
tela.printNumI(123,CENTER,16);
delay(2000);
tela.clrScr();
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
14/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Aps escrever o cdigo, clique em Upload para que o programa seja transferido
para seu Arduino.
Colocandopara funcionar
Se tudo deu certo, o resultado deve ser o mesmo apresentado abaixo:
Fig 9 Exemplo 1
Entendendo oHardware
Quando o assunto displays importante entendermos como feita a
organizao da tela e as informaes que sero impressas nela. Em resumo,
uma tela composta por uma matriz de pixels que esto organizados lado a
lado. Cada pixel pode assumir uma cor, no caso de uma tela monocromtica,
cada pixel pode assumir uma cor opaca ou transparente.
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
15/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
16/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Entendendo o Software
Para o uso do mdulo display Nokia 5110 temos que entender o uso de suas
bibliotecas. Para esse exemplo, explicaremos a biblioteca que foi usada no
exemplo 1, a biblioteca LCD5110_Basic.
Biblioteca LCD5110_Basic
LCD5110
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
17/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
LCD5110tela(8,9,10,12,11);
/*CriaobjetodaclasseLCD5110
CLKPino8
DINPino9
DCPino10
RSTPino12
CEPino11
*/
LCD5110(CLK,DIN,DC,RST,CE);
//CLK:pinodosinaldeClock;
//DIN:pinoparatransfernciadedados;
//DC:pinodeseleoderegistros(dados/comandos);
//RST:pinopararesetar;
//CE:pinoparaseleodochip.
Em alguns modelos do LCD 5110 o pino CLK pode aparecer como SCK, o pino
DIN como MOSI e o pino CE como CS.
InitLCD(valorContraste)
Inicializa o LCD. Deve ser chamada antes de qualquer outra funo da classe. O
valor de contraste opcional. Caso nenhum valor seja informado ser usada o
valor padro que igual a 70. O valor do contraste pode ser definido de 0 a 127.
1
2
3
voidsetup()
{
tela.InitLCD();//Inicializandoodisplay
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
18/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
setContrast(nmero)
Caso voc queira alterar o valor do contraste da tela no meio do programa, voc
poder usar essa funo. Ela altera o valor de contraste para o valor informado (0
a 127).
1
?
tela.setConstrastLCD();//Alterandoovalordecontrastedodisplay
setFont(nomedaFonte)
Esta funo dever ser usada antes de print, printNumF e PrintNumI para definir
qual fonte ser usada.
1
tela.setFont(nomedafonte);//Definindoafonte
tela.setFont(SmallFont);//Definindoafonte
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
19/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
print(texto,coluna,linha)
Com esta funo voc poder colocar um texto na tela. O texto dever estar
entre aspas e os valores de coluna e linha definiro emqualposio o texto ir
comear na tela.
1
2
?
//Escreveapalavravidaalinhadaesquerdacomeandonalinha0
tela.print("Vida",LEFT,0);
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
20/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
tela.print("Vida",LEFT,0);
printNumI(nmero inteiro,coluna,linha)
Com esta funo voc poder colocar um nmero inteiro na tela. Seu uso
semelhante ao print().
1
2
tela.print(nmero,coluna,linha);
tela.print(nmero,alinhamento,linha);
tela.print(nmero,coluna,linha);
tela.print(nmero,alinhamento,linha);
clrScr()
Apaga o buffer e o que estiver na tela.
1
tela.clrScr();//Apagaocontudoqueestivernatela
Outras funes
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
21/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
clrRow(coluna_inicio, coluna_fim)
Apaga um intervalo definido de uma coluna.
invert(modo)
Funo para inverter a tela, caso o valor informado seja true ela inverter a
tela, caso seja falso deixar a tela no modo normal.
update()
Esta funo serve para atualizar a tela, ela ser necessria toda vez que alguma
alterao na tela seja feita.
Programando
Crie um programa (sketch) e salve com o nome de modulo_5110_ex2.
Com o seu programa salvo, adicione a biblioteca LCD5110_Graph.h
Caso ainda no tenha feito, baixe as bibliotecas clicandoaqui.Para saber como
incluir uma biblioteca na IDE Arduino, visite o post Sensores DHT e Uso de Bibliotecas.
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
22/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
03
LCD5110tela(8,9,10,12,11);
04
/*DefineospinosdoDisplay5110e
05
criaoobjetodaclasseLCD5110
06
CLKPino8
07
DINPino9
08
DCPino10
09
RSTPino12
10
CEPino11
11
*/
12
13
voidsetup()
14
{
15
tela.InitLCD();//Inicializandoodisplay
16
}
17
18
voidloop()
19
{
20
tela.clrScr();//limpandoatela
21
tela.drawRect(0,0,83,47);//desenhandooretangulo
22
tela.update();//atualizandoatelacomosdadosescritosnobuffer
23
delay(500);
24
tela.drawLine(0,23,41,0);//desenhandoumalinhadiagonalcom
25
//ascoordenadas(0,23)e(41,0)
26
tela.drawLine(0,23,41,47);
27
tela.drawLine(41,0,83,23);
28
tela.drawLine(41,47,83,23);
29
tela.update();
30
delay(500);
31
tela.drawCircle(41,23,14);//desenhandoumcirculocentralizadocomdimetrode14pixels
32
tela.update();
33
delay(500);
34
tela.drawLine(28,21,56,21);//desenhandoumalinharetamantendo
35
//asmesmascoordenadasdaslinhas
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
23/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
35
36
37
38
39
//asmesmascoordenadasdaslinhas
tela.drawLine(28,25,56,25);
tela.update();
delay(3000);
}
Aps escrever o cdigo, clique em Upload para que o programa seja transferido
para seu Arduino.
Colocandopara funcionar
Se tudo deu certo, o resultado deve ser o mesmo apresentado abaixo:
Entendendo o Software
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
24/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Biblioteca LCD5110_Graph
Para as funes de desenho a seguir os valores mximos so 83 para coluna e
47 para linha.
drawLine(coluna_inicio, linha_inicio, coluna_fim, linha_fim)
Desenha uma linha de acordo com as coordenadas informadas. Deve-se
informar as coordenadas doponto inicial X0,Y0 e o ponto Final X,Y
1
tela.drawLine(Xo,Yo,X,Y);
?
tela.drawLine(0,23,41,0);//desenhandoumalinhadiagonalcom
//ascoordenadas(0,23)e(41,0)
tela.clrLine(0,23,41,0);//apagaumalinhadiagonalcom?
//ascoordenadas(0,23)e(41,0)
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
25/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
tela.drawRect(Xo,Yo,X,Y);//desenhandoumretangulo
tela.drawRect(0,0,83,47);//desenhandoumretangulo
tela.clrRect(Xo,Yo,X,Y);//apagandooretangulo
tela.clrRect(0,0,83,47);//apagandooretangulo
//desenhandoumretangulocomcantosarredondados
tela.RoundRect(Xo,Yo,X,Y);
tela.RoundRect(0,0,83,47);
//apagandoumretangulocomcantosarredondados
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
26/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
1
2
//apagandoumretangulocomcantosarredondados
tela.clrRoundRect(Xo,Yo,X,Y);
tela.clrRoundRect(0,0,83,47);
tela.drawCircle(X0,Y0,D);
?
//desenhandoumcirculocentralizadonoponto(41,23)comdimetrode14pixels
tela.drawCircle(41,23,14);
tela.clrCircle(X0,Y0,D);
?
//apagandoumcirculocentralizadonoponto(41,23)comdimetrode14pixels
tela.clrCircle(41,23,14);
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
27/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Fig 16 Bnus
Desafio
1. Imprima na tela o valor de distancia lido por um sensor ultrassom;
2. Usando um DHT11 ou um LM35, imprima o valor de temperatura lido;
Esperamos que tenham gostado, deixe seu comentrio com dvidas, sugestes
ou com a foto ou vdeo de seu projeto!!
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
28/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Relacionado
Tags:
5110
Arduino
display
lcd
nokia
William Lima
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
29/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Usando Transistor no
Arduino
Entradas e Sadas
Analgicas PWM
12 JUL, 2014
9 MAIO, 2014
8Comentrios
Recomendar 1
VidadeSilcio
Compartilhar
Servomotores
8 JUN, 2014
Entrar
OrdenarporMaisvotados
Participardadiscusso...
FernandoBM2mesesatrs
Amigo,seuartigoestbemcompleto,parabns.Masestequivocadoquantoao
usodaplacavermelha.Elaaceitasomente3.3vnaalimentao,masnosoutros
pinostolerade3.3va5v.Noesquemadafigura6,voccolocaresistoresde10k
emsrie,quesservemparalimitaracorrente,sequisessebaixarde5vpara3.3v
teriaquefazerdivisoresdetenso.Nafigura8notemessemontederesistores,
nodpraentenderoquefoifeitol...Dequalquerforma,achoquevaleapenadar
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
30/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
nodpraentenderoquefoifeitol...Dequalquerforma,achoquevaleapenadar
umaverificadanissoecorrigirafigura.Abrao
Responder Compartilhar
R.Peetzaka.legaCy2mesesatrs
DICA:Seoseudisplayestivercomummontedepixelpretomisturadocomotexto
ouotextoestivercompixelbranconomeiosajustarocontraste.euestava
tendoesseproblemacomomeueresolviajustandoocontrastepara60logono
tela.InitLCD(60)
Responder Compartilhar
AndreRocha5mesesatrs
Pessoalboanoite!Precisodeumaajuda,tenhoumacentraldealarmeresidencial
comfrequncia433,92aqualtrabalhacomoDECODIFICADORHT6P20B,a
dificuldadeestemfazeroarduinoconversarcomessedecodificador.
Tenhotransmissorereceptordoarduino,tenteiconfiguraloscomoumcontrole
gravandoocodigodetransmisso,pormnodeucerto.Algumjpassoupor
isso?Oupoderiaauxiliar?
Responder Compartilhar
GuilhermeEuler9mesesatrs
Cara,excelentepost!!Explicoumuitacoisae"esmiuou"todasaspartes!
Minhadvidaquantoessedisplay:temalgumaformade"desligar"odisplay
apsalgumtempoetornaraligloapertandoumboto?Porexemplo...querofazer
umrelgiocominformaesdeumidadeetemperatura...masseeudeixarligadoo
tempointeiro,vaiconsumirmuitaenergiaeavidatildodisplayvaiproespao.
Existealgumaformadedesligar/ligarodisplayviasoftware?Eobacklight?
Responder Compartilhar
Lucasdantasumanoatrs
OlWillian,eugostariasesabersetemcomofazeresseprocedimentocomum
displayde4polegadas?Deumaparelholumia520.
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
Responder
Compartilhar
31/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
Responder Compartilhar
ThiagoPassamaniumanoatrs
WilliamfuncionaparaRaspberryPi?
Responder Compartilhar
GuilhermeBorgesumanoatrs
Halgumadiferenaquantosaosrecursosincludosnessasduasbibliotecas
comparandocomasdaAdafruit(Adafruit_GFX.heAdafruit_PCD8544.h)Halguma
facilidadequeexistaemumaequeaoutranopossua,ouambaspossuemos
mesmorecursos??
Responder Compartilhar
WilliamLima>GuilhermeBorgesumanoatrs
OlGuilhermeBorges!
Temalgumasdiferenasnousodasfunes.AsbibliotecasdaAdafruit
possuemalgumasfunesadicionaiscomoadedesenhartringulospor
exemplo.
ParaousodeimagensachoabibliotecadoHenninKarlsenmaisfcilde
usarpoisasuafunodrawBitmapsuportaoarraygeradopeloprograma
LCDAssistant(oquenoocorrecomamesmafunodabibliotecada
Adafruit).Outropontointeressantedelasooscaracteresnumricos
mdiosegrandes.
1
Responder Compartilhar
Incio
Arduino
Robtica
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
32/33
10/11/2016
DisplayLCDNokia5110AprendacomoutilizlocomseuArduinoVidadeSilcio
http://blog.vidadesilicio.com.br/arduino/displaylcdnokia5110/
33/33