No post anterior, falamos do famoso sensor de temperatura DHT11, um componente barato e muito fácil de usar. Neste post, vamos mostrar como você pode usar o display lcd Nokia 5110 com o DHT11, mostrando as informações de temperatura e umidade na tela.

Conexão do display Nokia 5110 com DHT11 e Arduino

Na imagem abaixo temos uma placa Arduino Uno, onde conectamos o display nos pinos digitais de 8 a 12, e o sensor de temperatura e umidade DHT11 no pino analógico 1:

lcd nokia 5110 e dht11 arduino

Atenção ao pino de backlight, onde temos um resistor para limitar a corrente e evitar danos ao display. Usei um de 330 ohms que nos meus testes foram suficientes, mas você pode usar outros valores de acordo com os resistores que tiver em mãos.

Basicamente eu juntei os 2 post que eu fiz sobre o assunto, e, ao invés de mandar o resultado para o monitor serial, estou enviando para o display, gerando o resultado abaixo:

LCD Nokia 5110 Arduino e DHT11

O display Nokia é um display bem interessante para esse tipo de montagem. Ele possui backlight e além disso é gráfico, ou seja, você pode mostrar nesse display tanto texto como gráficos.

O controlador do Nokia 5110 é o PCD8544. Maiores informações você encontra no datasheet.

Carregue o programa abaixo no Arduino, que usa as bibliotecas Adafruit_GFX e Adafruit_PCD8544.

No programa usei 4 variáveis para armazenamento dos valores máximo e mínimo de  temperatura e umidade, mostrando-as no final da tela. Usei também a função da biblioteca (display.drawRect) para desenho da borda.

//Programa : Display Nokia 5110 e sensor de temperatura DHT11
//Autor : Arduino e Cia

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <dht.h>

#define dht_dpin A1 //Pino DATA do Sensor ligado na porta Analogica A1

dht DHT;

// pin 8 - Serial clock out (SCLK)
// pin 9 - Serial data out (DIN)
// pin 10 - Data/Command select (D/C)
// pin 11 - LCD chip select (CS/CE)
// pin 12 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);

// Variáveis que guardam a temperatura máxima e mínima
int maxtemp = -100,mintemp = 100;

// Variáveis que guardam a umidade máxima e mínima 
int maxhum = -100, minhum = 100; 
int temperatura,umidade;


static unsigned char PROGMEM grau[] =
{ B00001100, B00010010, B00001100, B00000000,}; //Array simbolo grau

void setup()
{
  Serial.begin(9600);
  display.begin();
  display.setContrast(50); //Ajusta o contraste do display
  display.clearDisplay();   //Apaga o buffer e o display
  display.setTextSize(1);  //Seta o tamanho do texto
  display.drawRect(0,0, 84,48, BLACK); //Desenha o retangulo da borda
  display.drawRect(1,1, 82,46, BLACK); //Desenha o retangulo da borda
  display.display();
}

void loop()
{
  DHT.read11(dht_dpin); //Lê as informações do sensor
  temperatura = DHT.temperature;
  umidade = DHT.humidity;

  //Armazena a temperatura máxima na variável maxtemp
  if(temperatura > maxtemp) {maxtemp = temperatura;} 

  //Armazena a temperatura minima na variável mintemp
  if(temperatura < mintemp) {mintemp = temperatura;} 

  //Armazena a umidade máxima na variável maxhum
  if(umidade > maxhum) {maxhum = umidade;} 

  //Armazena a umidade minima na variável minhum
  if(umidade < minhum) {minhum = umidade;} 

  display.setTextColor(BLACK,WHITE); //Seta a cor do texto
  display.setCursor(3,5);  //Seta a posição do cursor
  display.print("Temp : ");  
  display.print(temperatura);
  //Desenha o simbolo do grau na posicao 56,5
  display.drawBitmap(56,5, grau, 8, 4, BLACK); 
  display.setCursor(65,5);
  display.println("C");
  display.setCursor(3,13);
  display.print("Umid : ");
  display.print(umidade);
  display.println(" %\n");

  display.setCursor(3,24);
  display.print("Max:");
  display.print(maxtemp);
  display.drawBitmap(37,24, grau, 8, 4, BLACK);
  display.setCursor(46,24);
  display.print("C/");
  display.print(maxhum);
  display.println(" %");
  display.setCursor(3,32);
  display.print("Min:");
  display.print(mintemp);
  display.drawBitmap(37,32, grau, 8, 4, BLACK);
  display.setCursor(46,32);
  display.print("C/");
  display.print(minhum);
  display.println(" %");
  display.display();

  delay(2000); //Aduarda 2 segundos e reinicia o processo
 }

Por ser um display gráfico, você consegue posicionar os caracteres no pixel desejado, não ficando restrito ao espaço de um caracter. Repare nas linhas contendo “display.setCursor”, onde se pode usar qualquer valor  para posicionar o texto no display e evitar as bordas.

Gostou? Confira outros posts com display Nokia 5110 aqui mesmo no Arduino e Cia!

4/5 - (1 vote)