Neste post veremos utilizar o Display Nokia 5110. Esse display é extremamente simples de programar e versátil, além de possuir um custo bastante acessível.
Materiais Necessários
Os materiais necessários para esse tutorial são:
- Arduino Nano / Uno
- Display Nokia 5110
- Protoboard
- Jumpers
Montagem do Circuito
As seguintes conexões devem ser feitas entre o Arduino e os pinos do Display Nokia 5110:
Arduino | Display |
D12 | RST |
D11 | CE |
D10 | DC |
D9 | Din |
D8 | Clk |
5V | Vcc |
D2 | BL |
GND | Gnd |
É importante verificar a tensão de trabalho do seu Display Nokia 5110. Geralmente, os displays com PCB de cor Azul aceitam tanto 3,3V quanto 5V enquanto os de PCB Vermelha trabalham apenas com 3,3V e, portanto, não são apropriados para utilização com o Arduino.
Bibliotecas e Funções
Para esse tutorial serão necessárias as seguintes bibliotecas, que podem ser instaladas através do gerenciador de bibliotecas da IDE do Arduino ou dos links abaixo:
As principais funções utilizadas para interagir com o Display Nokia 5110, suas atribuições e parâmetros são:
Função | Atribuição | Parâmetros |
begin | Inicializa o display | – |
setContrast | Define o contraste | contraste (valor de 0 a 100) |
clearDisplay | Limpa a tela | – |
drawBitmap | Exibe uma imagem na tela | posição x, posição y, array com a imagem, largura, altura |
display | Exibe as informações na tela | – |
setTextSize | Define a fonte | Tamanho da fonte |
setTextColor | Define a cor do texto | BLACK – texto preto
ou WHITE, BLACK – fundo preto texto branco |
setCursor | Posiciona o cursor | posição x, posição y |
Imprime um texto na tela | texto |
É importante lembrar que sempre que desejar que as informações que aparecem na tela sejam atualizadas para as definidas no código é necessário chamar a função display().
Bitmap
Para exibição de imagens, utilizaremos o programa Image2Code para transformar a imagem em um vetor com os códigos hexadecimais que descrevem a imagem. Para isso é necessário que a imagem seja um bitmap preto e branco, com tamanho máximo de 84X84. O programa pode ser baixado nesse link e a imagem pode ser editada com o Paint para atender as especificações de formato e tamanho.
Primeiro abrimos o programa e clicamos em Browse para selecionar o arquivo da imagem.
Depois selecionamos a terceira opção da esquerda para direita – que diz MSB LSB. Então clicamos em Convert e esperamos que o arquivo com o vetor seja aberto no Bloco de Notas.
Depois, utilizamos a ferramenta de substituição para retirar as chaves { }.
PROGMEM const unsigned char img[] = {texto_do_bloco_de_notas};
Código
O código abaixo é uma breve demonstração das capacidades do Display e das funções usadas para operá-lo.
/* #-------------------------# | DISPLAY | | NOKIA | | Ítalo Coelho | #-------------------------# */ #include <SPI.h> #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> #define BLpin 2 //Pino que controla a luz de fundo // CLK, DIN, DC, CE, RST Adafruit_PCD8544 display = Adafruit_PCD8544(8,9,10,11,12); PROGMEM const unsigned char img[] = { 0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x00,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 , 0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00 , 0x3F,0xFF,0xFF,0x3E,0xCE,0x19,0xE7,0xC7,0xF0,0xF3,0xE0 , 0x3F,0xFF,0xFF,0x3E,0xCE,0x19,0xEF,0xC7,0xF0,0xF3,0xE0 , 0x7F,0xFF,0xFF,0x30,0xCE,0x19,0xEE,0x04,0x30,0xF3,0x60 , 0x78,0x1E,0x00,0x30,0xCE,0x19,0xEC,0x04,0x30,0xF3,0x20 , 0x70,0x1E,0x00,0x30,0xCE,0x19,0xEC,0x04,0x30,0xF3,0x20 , 0x70,0x1E,0x00,0x30,0xCE,0x19,0xEC,0x04,0x30,0xF3,0x60 , 0x70,0x1E,0x00,0x3C,0xCE,0x19,0xEF,0x87,0x30,0xF3,0xE0 , 0x70,0x1E,0x00,0x3C,0xCE,0x19,0xCF,0x87,0x30,0xF3,0xE0 , 0x70,0x1E,0x00,0x30,0xCE,0x19,0x8C,0x04,0x30,0xF3,0x00 , 0x70,0x1E,0x00,0x30,0xCE,0x19,0x8C,0x04,0x30,0xF3,0x00 , 0x70,0x3E,0x00,0x30,0xCE,0x19,0x8C,0x04,0x30,0xF3,0x00 , 0x7F,0xFE,0x00,0x30,0xCE,0x19,0x8C,0x04,0x30,0xF3,0x00 , 0x7F,0xFE,0x00,0x30,0xCF,0x99,0x8F,0xC4,0x3E,0xF3,0x00 , 0x7F,0xF0,0x00,0x30,0xC3,0x99,0x83,0xC4,0x0E,0x63,0x00 }; void setup() { pinMode(BLpin, OUTPUT); digitalWrite(BLpin, HIGH); display.begin(); //Inicializa o Display display.setContrast(56); //Define o contraste } void loop() { display.clearDisplay(); //Limpa a tela display.drawBitmap( 0, 0, img, 84, 25, BLACK); //Exibe imagem Bitmap display.display(); //Exibe no display delay(5000); display.clearDisplay(); display.setTextSize(1); //Tamanho da fonte display.setTextColor(BLACK); //Texto Preto display.setTextColor(WHITE, BLACK); //Texto Branco com fundo Preto display.setCursor(0,0); //Posição do Cursor display.print("ITALO"); //Escreve o Texto display.setCursor(0,20); display.setTextSize(1); display.print("Display Nokia 5110"); display.display(); //Pisca a luz de fundo static bool backLight = LOW; backLight = !backLight; digitalWrite(BLpin, backLight); delay(5000); }
Conclusão
Agora que você já sabe como usar o Display Nokia 5110 com o Arduino, que tal fazer um dos projetos aqui do nosso blog? Acesse os post abaixo e escolha o que mais gostar:
- Jogue Snake com Arduino!
- Medidor de corrente não invasivo com Arduino
- Estação Meteorológica com Arduino
- Enviando SMS e Fazendo Chamadas com o Arduino GSM Shield
Gostou de aprender como utilizar o Display Nokia 5110? Não se esqueça de deixar um comentário nos contando o que achou!
Pessoal, criei uma mini aplicação web pra desenhar e exportar os bitmaps compatíveis com o display nokia 5110 (PCD 8544)
https://pcd8544designer.web.app/
Olá!
Show, obrigado por compartilhar conosco!
Abraços!
Vinícius – Equipe MakerHero
Tem como usar simultaneamente na mesma placa arruíno 2 displays nokia 5110 desses? tentei fazer assim e não deu certo
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);
Adafruit_PCD8544 display2 = Adafruit_PCD8544(3, 4, 5, 6, 7);
porem quando muda o nome display para display2 ela muda de cor na ide do arruíno de laranja pra preto.
será que tem essa possibilidade?
Olá Robert!
O caso do display aparecer em laranja é porque ele está marcado como palavra chave em alguma biblioteca, por isso aparece realçado em laranja. Mas nesse caso ele é utilizado como nome de variável. Não há problema nenhum em o display2 ficar em preto.
Quanto à conectar os dois, você pode sim, e para “economizar” saídas, você pode utilizar os mesmos pinos, deixando apenas o CS/CE diferente. Esse pino é responsável por dizer qual display deve mostrar aquela informação.
Abraços!
Vinícius – Equipe MakerHero
bom dia Italo pode me dar uma força , sou novo com arduino então…. qdo usei o seu código…. deu a seguinte mensagem de erro ( o que devo fazer.?) peço sua ajuda:
Arduino: 1.8.13 (Windows 7), Placa:”Arduino Nano, ATmega328P”
Foram encontradas múltiplas bibliotecas para “Adafruit_GFX.h”
In file included from C:\Users\FERNANDO\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.cpp:20:0:
C:\Users\FERNANDO\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_GrayOLED.h:30:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
#include
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Usado: C:\Users\FERNANDO\Documents\Arduino\libraries\Adafruit_GFX_Library
Não usado: C:\Users\FERNANDO\Documents\Arduino\libraries\Adafruit-GFX-Library-master
Foram encontradas múltiplas bibliotecas para “Adafruit_PCD8544.h”
Usado: C:\Users\FERNANDO\Documents\Arduino\libraries\Adafruit_PCD8544_Nokia_5110_LCD_library
Não usado: C:\Users\FERNANDO\Documents\Arduino\libraries\Adafruit-PCD8544-Nokia-5110-LCD-library-master
exit status 1
Erro compilando para a placa Arduino Nano
Olá Fernando,
Vá na pasta libraries do Arduino e veja se as bibliotecas não foram instaladas mais de uma vez.
Abraço!
Rosana – Equipe MakerHero