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:
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:
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!