Mostrando informações de temperatura no LCD 16×2 com o DHT11

Mostrando informações de temperatura no LCD 16×2 com o DHT11

No nosso primeiro artigo sobre o sensor de temperatura e umidade DHT11 aqui no blog FILIPEFLOP, mostramos como acompanhar as informações de temperatura e umidade no monitor serial, método ideal para quem ainda não tem um display LCD.

Para quem já tem um LCD 16×2 e quer melhorar o projeto, vamos mostrar como ligar o DHT11 juntamente com o display e mostrar nele as informações que precisamos.

DHT11

Para este circuito, você pode utilizar o módulo DHT11 ou apenas o sensor DHT11. A ligação dos dois é idêntica e utiliza apenas um pino para ligação ao Arduino.

Sensor de temperatura e umidade DHT11

Uma característica do DHT11 é que ele não fornece informações “quebradas” de temperatura. Isso significa que o sensor vai mostrar as informações de, por exemplo, 18, 20, 25 graus, mas não as casas decimais de 18,2 ou 25,6 graus. Os números fornecidos pelo sensor são redondos.

O display LCD 16×2 que vamos utilizar, baseado no controlador HD44780, é um display com backlight azul e caracteres na cor branca, com os pinos de conexão na parte superior numerados de 1 a 16. A conexão básica ao Arduino usa 6 pinos :

  • Pino 4 (RS) ligado ao pino 12 do Arduino
  • Pino 6 (E) ligado ao pino 11 do Arduino
  • Pino 11 (D4) ligado ao pino 5 do Arduino
  • Pino 12 (D5) ligado ao pino 4 do Arduino
  • Pino 13 (D6) ligado ao pino 3 do Arduino
  • Pino 14 (D7) ligado ao pino 2 do Arduino

O pino 3 do display será ligado ao pino central de um potenciômetro de 10K, que tem a função de regular o contraste. As demais ligações são feitas ao GND (pinos 1, 5 e 16) e aos 5v do Arduino (pinos 2 e 15) , e qualquer inversão pode impedir a exibição dos caracteres :

Circuito DHT11 e LCD HD44780

No programa, vamos utilizar a biblioteca LiquidCrystal para controle do LCD (esta biblioteca já vêm instalada na IDE), e também a biblioteca DHT, que pode ser baixada neste link.

Para mostrar o símbolo do grau (º), podemos utilizar um dos caracteres especiais disponíveis nesse display, usando o comando

lcd.print((char)223);

Ou criar um caractere customizado, com a forma mais arredondada. Para isso, criamos um array e desenhamos nosso próprio símbolo, e para utilizá-lo no programa, usamos o comando

lcd.createChar(valor, data);

onde valor se refere ao nome que daremos ao caractere especial, podendo ser um número de 0 a 7, e data se refere ao array criado para formar o símbolo do grau.

O comando delay no final do programa não deve ter um valor abaixo de 2000 (2 segundos), que é o valor mínimo para que o sensor possa fornecer os dados corretamente.

//Programa : Temperatura e umidade com o DHT11 e LCD 16x2
//Autor : FILIPEFLOP

#include <LiquidCrystal.h> //Carrega a biblioteca LCD
#include <DHT.h> //Carrega a biblioteca DHT

//Define a ligação ao pino de dados do sensor
#define DHTPIN A5

//Define o tipo de sensor DHT utilizado
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

//Define os pinos que serão ligados ao LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//Array simbolo grau
byte grau[8] ={ B00001100,
                B00010010,
                B00010010,
                B00001100,
                B00000000,
                B00000000,
                B00000000,
                B00000000,};

void setup()
{
Serial.begin(9600); //Inicializa a serial
lcd.begin(16,2); //Inicializa LCD
lcd.clear(); //Limpa o LCD
//Cria o caractere customizado com o simbolo do grau
lcd.createChar(0, grau);
}

void loop()
{
float h = dht.readHumidity(); //Le o valor da umidade
float t = dht.readTemperature(); //Le o valor da temperatura
lcd.setCursor(0,0);
lcd.print("Temp : ");
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(t,1);
lcd.setCursor(12,0);

//Mostra o simbolo do grau formado pelo array
lcd.write((byte)0);

//Mostra o simbolo do grau quadrado
//lcd.print((char)223);

lcd.setCursor(0,1);
lcd.print("Umid : ");
lcd.print(" ");
lcd.setCursor(7,1);
lcd.print(h,1);
lcd.setCursor(12,1);
lcd.print("%");

//Intervalo recomendado para leitura do sensor
delay(2000);
}

Gostou ? Conte-nos sua experiência com este post e visite nossa loja FILIPEFLOP !

12
Mostrando informações de temperatura no LCD 16×2 com o DHT11
43 votos, 4.28 classificação média (85% pontuação)

Formado em Ciência da Computação pela Universidade de Mogi das Cruzes, atualmente responsável pelo departamento técnico da FILIPEFLOP.

Compartilhe este Post

102 Comentários

  1. cosme costa do sacramento - 15 de abril de 2017

    o meu em vez de aperecer os valores, aparece “nan” alguém pode mim ajudar?

  2. Otávio Augusto - 12 de abril de 2017

    Alguém poderia me dizer se esse código é C ou C++?

  3. Lorenzo Gomes - 3 de março de 2017

    Boa tarde. Percebi que no código foi colocado o .0 depois das medidas para que não haja problemas de exibição quando o sensor mostrar “nan” antes de medir pela primeira vez. Há alguma maneira de editar a library do DHT11 para que ele mostre algo como “na” e portanto não comprometa a exibição de temperatura sem a casa decimal?

  4. Heitor - 2 de março de 2017

    estou com um erro no programa que não consigo resolver que é este :
    In file included from C:\Program Files\Arduino\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

    C:\Program Files\Arduino\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Mega or Mega 2560
    Biblioteca inválida encontrada em C:\Program Files\Arduino\libraries\__MACOSX: C:\Program Files\Arduino\libraries\__MACOSX
    Biblioteca inválida encontrada em C:\Program Files\Arduino\libraries\__MACOSX: C:\Program Files\Arduino\libraries\__MACOSX

  5. Marco - 25 de janeiro de 2017

    O meu esta dando este erro… Alguém pode me ajudar?
    In file included from C:\Users\Marco Antonio\SketchBook\libraries\DHT-sensor-library-master\DHT_U.cpp:22:0:

    C:\Users\Marco Antonio\SketchBook\libraries\DHT-sensor-library-master\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

  6. Luiz Felipe - 9 de dezembro de 2016

    Opa. Queria saber se tem como modificar esse codigo e mudar para usar em um Sensor de Gas ou MQ….
    Estou querendo montar um projeta, para que o arduino leia o Sensor e envie a porcentagem para o Display. Se estiver como, poderia me responder, caso tenha que mudar algo nesta biblioteca, me ajude, sou leigo no assunto, nao entendo muita coisa. Obrigado!

  7. samuel - 25 de novembro de 2016

    Ola, eu quero q quando passe de 25 graus um rele seja acionado, qual a modificação deve ser feita no codigo?

    • Luiz - 28 de novembro de 2016

      ola eu sou novo no mundo do arduino mas acho que posso te ajudar…
      coloque um if no codigo por exemplo:
      if(t >= 25){ //neste caso ele liga se a temp for igual ou maior que 25º
      digitalWrite(rele, HIGH);
      }
      espero ter ajudado :)

  8. Leonardo Barros - 9 de novembro de 2016

    Boa noite, obrigado pelas dicas ate agora, sempre acompanho o site!
    Estou precisando piscar um LED enquanto a temperatura estiver maior que 30°C, por exemplo. Porem, não quero que a programação se interrompa, preciso que o LED pisque simultaneamente com a leitura e impressão no display enquanto estiver acima de certo valor.

    Tentei usar um “if”, mas logo apos atingir a temperatura o LED começa a piscar e o display do LCD aparece uns caracteres estranhos. O “while”também não seria uma opção, pois irá parar toda a programação.

    Estou usando um senso de temperatura DS18B20 e um LCD 16×2

    #include
    #include
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    OneWire ds(10);

    void setup(void) {
    Serial.begin(9600);
    lcd.begin(16, 2);
    pinMode(52, OUTPUT);

    }

    void loop(void) {
    byte i;
    byte present = 0;
    byte type_s;
    byte data[12];
    byte addr[8];
    float celsius;

    if ( !ds.search(addr)) {
    Serial.println();
    ds.reset_search();
    delay(250);
    return;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44,1);

    delay(1000);

    present = ds.reset();
    ds.select(addr);
    ds.write(0xBE);

    for ( i = 0; i < 9; i++) {
    data[i] = ds.read();

    }

    unsigned int raw = (data[1] << 8) | data[0];
    if (type_s) {
    raw = raw << 3;
    if (data[7] == 0x10) {

    raw = (raw & 0xFFF0) + 12 – data[6];
    }
    } else {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw << 3;
    else if (cfg == 0x20) raw = raw << 2;
    else if (cfg == 0x40) raw = raw << 1;

    }
    celsius = (float)raw / 16.0;
    Serial.print("Temperatura = ");
    Serial.print(celsius);
    Serial.write(176);
    Serial.print("C");

    lcd.print("Temp. = ");
    lcd.print(celsius);
    lcd.print((char)223);
    lcd.print("C");
    delay(250);
    lcd.setCursor(0, 0);

    }

  9. FAGNER LEITE - 23 de abril de 2016

    Arduino: 1.6.6 (Windows 7), Placa:”Arduino/Genuino Uno”

    lcd_teste.ino:13: error: ‘DHT’ does not name a type

    DHT dht(DHTPIN, DHTTYPE);

    ^

    C:\Users\fagner\Documents\Arduino\lcd_teste\lcd_teste.ino\lcd_teste.ino.ino: In function ‘void loop()':

    lcd_teste.ino:39: error: expected primary-expression before ‘.’ token

    float h = dht.readHumidity(); //Le o valor da umidade

    ^

    lcd_teste.ino:40: error: expected primary-expression before ‘.’ token

    float t = dht.readTemperature(); //Le o valor da temperatura

    ^

    olá, aparceu este erro de compilação!!!
    Foram encontradas múltiplas bibliotecas para “LiquidCrystal.h”
    Usado: C:\Users\fagner\Documents\Arduino\libraries\LiquidCrystal
    Não usado: C:\Program Files\Arduino\libraries\LiquidCrystal
    exit status 1
    ‘DHT’ does not name a type

    Este relatório deveria ter mais informações
    “Mostrar saída verbosa durante a compilação”
    habilitado em Arquivo > Preferências.

    • Higor - 27 de julho de 2016

      Olá. Espero que já tenha resolvido seu problema, mas para quem está com o mesmo problema (e pelo que eu li a reincidência acontece na linha 13 do código postado pelo autor). O código está correto, como de costume desta página (PARABÉNS). A dica é rever se baixou a biblioteca do sensor DHT e se copiou correto na pasta “libraries” do arquivos de programas/arduino/libraries. Reforçando, se tiver com outro código do IDE do arduino aberto, é melhor fechar todas as janelas e começar do 0 o código desta página. Se ainda assim acontecer, feche o arquivo salvando e abra-o de novo (O DHT DA LINHA 13 DEVERÁ FICAR LARANJA).

  10. Alexandre - 15 de março de 2016

    Boa noite

    Amigo eu sempre usei pic´s..e agora estou com um projeto para montar um rário FM com arduíno uno R3, e implementar nele um relógio e um termômetro….estou usando o ds1307, o dht11, o display nokia 5110, e um keypad para controle das funções….alguém pode me ajudar na programação?
    Eu tenho as bibliotecas mas eu não consigo fazer funcionar…se alguém puder me ajudar ou realizar a programação eu até estou disposto a pagar, porque eu faço projetos em casa mas não tenho familiaridade com o Arduíno, eu estou começando agora…quem puder me envia e-mail que eu passo meu contato telefônico.
    Obrigado a todos.

  11. Thiago - 25 de outubro de 2015

    Olá, estou com o seguinte problema, se eu rodar o seu código funciona normal, porém eu coloquei seu código junto de um algoritmo para salvar em uma base de dados, por algum motivo ele não exibe no display, porém salva no banco normalmente. Aparentemente não consigo encontrar nada de errado no algoritmo, saberia me dizer se estou esquecendo de alguma coisa? Obrigado.

    CÓDIGO ABAIXO

    #include
    #include
    #include
    #include

    #define DHTPIN A5
    #define DHTTYPE DHT11

    DHT dht(DHTPIN, DHTTYPE);
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress server(192,168,1,6);
    EthernetClient client;

    byte grau[8] ={ B00001100,
    B00010010,
    B00010010,
    B00001100,
    B00000000,
    B00000000,
    B00000000,
    B00000000,};

    bool connected = false;

    void setup(){
    Serial.begin(9600);

    lcd.begin(16,2);
    lcd.clear();
    lcd.createChar(0, grau);

    if (Ethernet.begin(mac) == 0) {
    Serial.println(“Failed to configure Ethernet using DHCP”);
    }
    }

    void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    lcd.setCursor(0,0);
    lcd.print(“Temp : “);
    lcd.print(” “);
    lcd.setCursor(7,0);
    lcd.print(t,1);
    lcd.setCursor(12,0);

    //Mostra o simbolo do grau formado pelo array
    lcd.write((byte)0);

    lcd.setCursor(0,1);
    lcd.print(“Umid : “);
    lcd.print(” “);
    lcd.setCursor(7,1);
    lcd.print(h,1);
    lcd.setCursor(12,1);
    lcd.print(“%”);

    if (!connected) {
    Serial.println(“Not connected”);

    if (client.connect(server, 80)) {
    Serial.println(“Connected”);
    connected = true;

    client.print(“GET /ethernet/mysql2.php?”);
    Serial.print(“GET /ethernet/mysql2.php?”);

    client.print(“t=”);
    Serial.print(“t=”);
    client.print(t);
    Serial.print(t);
    client.print(“&”);
    Serial.print(“&”);
    client.print(“h=”);
    Serial.print(“h=”);
    client.print(h);
    Serial.print(h);

    client.println(” HTTP/1.0″);
    Serial.println(” HTTP/1.0″);

    client.println();
    } else {
    Serial.println(“Cannot connect to server”);
    }
    } else {
    delay(500);

    while (client.connected() && client.available()) {
    char c = client.read();
    Serial.print(c);
    }

    Serial.println();

    client.stop();
    connected = false;
    }

    delay(5000);
    }

  12. Danilo - 18 de outubro de 2015

    Olá, gosto muito deste site e já tirei vários exemplos para projetos.No momento estou precisando de uma ajuda,criar um Menu com Botões pulsantes,está muito difícil encontrar exemplos.Alguém sabe de algum ?

    • FILIPEFLOP - 21 de outubro de 2015

      Bom dia Danilo,

      Que tipo de menu seria ? pode explicar melhor ?

      Abraço

      Adilson – Equipe FILIPEFLOP

      • Danilo - 30 de outubro de 2015

        Navegar em um menu através de botões : Up, down, enter e Menu daí vai para a tela desejada
        Ex: Menu 1 = Monitorar Temperatura e umidade
        Menu 2 = Ligar e desligar uma lampada com rele
        Menu 3 = Controlar a umidade atraves de uma bomba d’agua, aí vc digita o valor min e o max. Min liga a bomba e max desliga a bomba (com rele )

        Valew , muito Obrigado

  13. Jefferson Valiente - 3 de setembro de 2015

    gostaria de saber porque na hora de verificar aparece erro nessa parte DHT dht(DHTPIN, DHTTYPE); ?

  14. Rafael silva - 1 de setembro de 2015

    Consigo ligar mais de um sensor e utilizando uma tela 16×4 exibir a informação desses dois sensores? Abraços.

  15. Brendo - 27 de agosto de 2015

    Eu conseguiria conectar o sensor DHT 11, o display LCD, o módulo do cartao SD e o módulo RTC em somente um arduino? Como devo proceder?
    Desde já obrigado!!!!

  16. Gustavo - 27 de agosto de 2015

    Primeiramente parabéns pelo blog e pelos produtos!

    Estou tentado fazer um projeto para um terario para repteis, no entanto ele tem que ficar numa determinada temperatura no dia e uma outra durante a noite! para manter a temperatura utilizo lampadas especificas q esquenta para não ficar frio.
    Gostaria de por exemplo das 6 as 19h fica acesa a luz “dia” e o restante a luz “noite” controlando a temperatuna de por exemplo 25graus liga 30 graus desliga!

    Teria como me ajudar por favor!!

    Att

  17. Brendo - 22 de agosto de 2015

    Posso por exemplo : Se a temperatura for maior que determinada temperatura acender um LED na protoboard? É muito dificil?

  18. Gilberto Leonel - 4 de agosto de 2015

    Bom dia, Filipe! Estou tentando unificar dois projetos seu, o de temperatura e umidade e o do relógio em tempo real num único display 20×4 e estou tendo algumas dificuldades. Tem como você me informar se há essa possibilidade e uma dica de que ponto posso partir? Obrigado.

  19. Gustavo - 29 de junho de 2015

    Olá, gostaria de saber qual sensor de temperatura mostra os valores exatos… ex 35.5º. Obrigado

  20. Luiz - 15 de junho de 2015

    Olá! Tentei implementar esse código, mas o meu DHT11 só envia 0ºC e 0 de umidade também. O problema deve estar no sensor, certo?

  21. antonio - 11 de junho de 2015

    eu to com um problema e nao consigo entender o por que , eu fiz refiz vaarias vezes as ligaçoes mais quando eu coloco o programa pra rodar , a tela fica inteira azul e nao escreve nada, alguem conseguil resolver esse problema /?

  22. Gold - 3 de junho de 2015

    Boa tarde, Gostaria de saber sobre como utilizar um sistema de horário no arduino, só consigo com módulo RTC? Tenho um Display Lcd 1602 Modulo Shield Arduino C/ Botões e gostaria de saber se existe uma bilbioteca para isso.

    Obrigado.

  23. Henrique - 25 de maio de 2015

    Boa tarde!

    Gostaria de saber se existe limite para a extensão do cabo para ligar o sensor ao arduino?

    Explico: vou colocar o sensor dentro de um abrigo meteorológico, e colocar o arduino dentro de casa. Distância de uns 20 metros mais ou menos.

    Obrigado!

    • FILIPEFLOP - 3 de junho de 2015

      Bom dia Henrique,

      Não temos essa informação, mas pode ser interessante pensar em alguma solução via wireless, como por exemplo o módulo NRF24L01 ou até mesmo o kit RF433 MHz.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  24. Mario - 15 de abril de 2015

    Desejo monitorar temperatura e umidade no mesmo barramento serial, de varios sensores DTH11, visto que a comunicacao e I2C.
    Como posso diferenciar cada sensor???? Tem um ID?

    • FILIPEFLOP - 22 de maio de 2015

      Boa noite Mario,

      O DHT11 não utiliza comunicação I2C. Você terá que ligar cada um em uma porta diferente e efetuar as alterações no programa.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  25. Guilherme - 15 de abril de 2015

    Eu poderia ligar o display e o sensor diretamente no microcontrolador (protoboard). Pelo que eu entendi, as ligações mudariam um pouco (Sou novato no assunto).
    O pino de dados do sensor iria no pino 24 do micro
    Rs iria no 18 do micro.
    E iria no 17
    D4 no pino 6 do micro
    D5 no pino 11
    D6 no pino 12
    D7 no pino 13
    Está correto isso ?
    Me baseei nesta imagem: http://www.chicoree.fr/w/images/9/95/ATmega328P_vs_Arduino_pin_mapping.png

  26. everton dzba - 30 de março de 2015

    gostaria de saber no kit arduino beginning vem o sensor DHT11

  27. josimar - 19 de março de 2015

    bom dia,
    este sensor só serve para arduino ,ou posso utilizalo em micro c,,estou com projeto de umidificador a facu ,queria utilizar este sensor,,o meu micro controlador vai ser um pic 18f4520.abs

  28. Derlon - 15 de março de 2015

    Testei o mesmo programa sou cliente do site, mas o codigo não funciona,
    DHT não lê a linha e fica dando erro.
    Já importei a biblioteca e mesmo assim persiste o erro.

  29. erick kuroda - 11 de março de 2015

    Estou fazendo um projeto de irrigação controlado por arduino e irei utilizar dois sensores adquiridos aqui, o dht11 e o sensor de umidade do solo, fiz algumas simulações em um software porém só consigo simular o sensor de umidade do solo cuja saída é analógica, porém o sensor de temperatura tem uma saída de dados que eu não consigo simular, existe alguma forma de simular os dados deste sensor utilizando este programa proposto, ou só conseguirei testar mesmo na bancada montando o circuito? Utilizo o proteus para simulação.

  30. Iago Queiroz Costa - 6 de março de 2015

    Boa noite,

    Estou com um projeto na faculdade de sistemas distribuídos, e optei por fazer um medidor de temperatura e umidade com display, e que dê pra acessar as informações também via rede. Tem como colocar pra funcionar todas essas funções ? A barreira é só colocar em rede.

    Meu trabalho vai ser implementado no meu emprego, numa sala de servidor refrigerada de um cartório.

    Att,

    Iago Costa

  31. Bruno - 17 de fevereiro de 2015

    Boa noite galera, comprei um kit já tem uns dois anos que está parado, tudo isso na esperança de conseguir fazer um servo motor acompanhar o movimento da pessoa tanto para os lados como para baixo e para cima. Alguém pode me dar essa forcinha?

  32. Anderson Carvalho - 17 de fevereiro de 2015

    Boa noite, alguém pode me ajudar? Tenho um aquário com duas lampadas diferentes e gostaria que elas acendessem e apagassem em tempos diferentes simulando iluminação solar, e se possível um display pra indicar a temperatura da água.

  33. Anderson - 19 de janeiro de 2015

    Bom dia,
    Editei esse programa a fim de deixar compatível com o meu LCD ligado com um modulo I2C, poré eu não tenho um controle do brilho do backlight.

    Teria um jeito de fazer isso vi programa ou só colocando um resistor mesmo?
    O meu modulo I2C e LCD são os mesmos que estes.
    http://www.arduinoecia.com.br/2014/12/modulo-i2c-display-16×2-arduino.html

  34. Bruno - 16 de janeiro de 2015

    Boa noite a todos, venho pedir uma ajuda referente ao codigo para ler temperatura e humidade e mostrar no LCD de 16×2 utilizando Arduino UNO e semsor DHT11.

    Bem a questao começa logo quase no inicio da leitura do codigo que me da erro assinalado em baixo entre ==========:

    //Programa : Temperatura e umidade com o DHT11 e LCD 16×2
    //Autor : FILIPEFLOP

    #include //Carrega a biblioteca LCD
    #include //Carrega a biblioteca DHT

    //Define a ligação ao pino de dados do sensor
    #define DHTPIN 7

    //Define o tipo de sensor DHT utilizado
    #define DHTTYPE DHT11

    ==============DHT dht(DHTPIN, DHTTYPE); ==========

    //Define os pinos que serão ligados ao LCD
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    //Array simbolo grau
    byte grau[8] ={ B00001100,
    B00010010,
    B00010010,
    B00001100,
    B00000000,
    B00000000,
    B00000000,
    B00000000,};

    void setup()
    {
    Serial.begin(9600); //Inicializa a serial
    lcd.begin(16,2); //Inicializa LCD
    lcd.clear(); //Limpa o LCD
    //Cria o caractere customizado com o simbolo do grau
    lcd.createChar(0, grau);
    }

    void loop()
    {
    float h = dht.readHumidity(); //Le o valor da umidade
    float t = dht.readTemperature(); //Le o valor da temperatura
    lcd.setCursor(0,0);
    lcd.print(“Temp : “);
    lcd.print(” “);
    lcd.setCursor(7,0);
    lcd.print(t,1);
    lcd.setCursor(12,0);

    //Mostra o simbolo do grau formado pelo array
    lcd.write((byte)0);

    //Mostra o simbolo do grau quadrado
    //lcd.print((char)223);

    lcd.setCursor(0,1);
    lcd.print(“Umid : “);
    lcd.print(” “);
    lcd.setCursor(7,1);
    lcd.print(h,1);
    lcd.setCursor(12,1);
    lcd.print(“%”);

    //Intervalo recomendado para leitura do sensor
    delay(2000);
    }

    Alguem pode dar uma ajuda???

    Obrigado a todos.

  35. Bruno Martini - 8 de dezembro de 2014

    Olá, tudo bem? Ao invés de utilizar o potenciômetro que serve para regular o brilho da tela, eu não poderia utilizar um resistor diretamente? Obrigado.

  36. Marco Antunes - 2 de dezembro de 2014

    O projeto funcionou perfeitamente mas eu querei optimiza-lo.
    Estou a fazer um projecto que é basicamente uma maquete de uma estufa, e eu queria que quando a humidade chega-se a um determinado valor liga-se um motor de puxar agua (12v) e quando a temperatura desce-se uma um led acendesse e quando subisse umas ventoinhas começassem a trabalhar.

  37. Anderson - 1 de dezembro de 2014

    Brother tenho um raspberry pi posso ter o mesmo sucesso com a Prototype Shield para Raspberry Pi + o Sensor DTH11 ?

  38. Fernanda - 25 de novembro de 2014

    Boa noite,
    Conectei tudo conforme o post, mas não aparece simplesmente nada no meu lcd

  39. Diego - 30 de setembro de 2014

    boa tarde,

    estou com problemas na hora de compilar ai apresenta o seguinte erro ;
    sketch_sep30a:10: error: ‘DHT’ does not name a type
    sketch_sep30a.ino: In function ‘void loop()':
    sketch_sep30a:36: error: ‘dht’ was not declared in this scope

  40. Franklyn - 6 de setembro de 2014

    Olá. gostaria de saber se é necessário ter o potenciômetro para que a tela lcd funcione no Arduíno, pois comprei o restante dos itens e quando montei não apareceu texto, porém a tela fica ligada.

  41. Rafael Pelicioni - 1 de setembro de 2014

    comprei o sensor DHT11 com vcs,e acabou de chegar,fui fazer o projeto e no display só marca como temperatura 0.0 e como umidade man% ,queria saber qual seria o problema

  42. Arthur - 26 de agosto de 2014

    Olá Pessoal!!
    Comprei o material necessário para realizar esse projeto com vocês e estou aguardando a entrega.
    Enquanto isso, gostaria de tirar uma dúvida.
    Qual sensor eu poderia “acoplar” na parte externa de um objeto para monitorar sua temperatura dentro de um freezer?? Teria que ser um sensor que suportasse temperaturas baixas sem estragar… E outra dúvida: que material posso usar para prender esse sensor no objeto em questão de modo que isole a temperatura do freezer e mostre somente a temperatura do objeto que o sensor está acoplado?? Se vocês tiverem alguma sugestão, agradeço muito!!
    Muito obrigado pela atenção de vocês.
    Aguardo!!
    Abraços.

  43. Controle de Acesso usando Leitor RFID com Arduino | Blog FILIPEFLOP - 21 de agosto de 2014

    […] no circuito o Display 16×2 HD44780 com ligação semelhante ao do artigo Mostrando informações de temperatura no LCD 16×2 com o DHT11. Trocamos apenas os pinos 12 do Arduino Uno pelo pino 6, e o 11 pelo 7, pois os mesmos já estão […]

  44. Kehium - 12 de agosto de 2014

    Não estou obtendo sucesso, o meu DHT11 já veio com a plaquinha, com um resistor de 10k embarcado, mas acho que não mudaria nada, ele simplesmente não traz nenhum valor nas medidas, 0,0 Temperatura, e Umidade varia de uma sigla nan e 0,0 no vizor, o que pode ter acontecido, como eu tiro a prova do sensor se ele realmente esta funcionando, a alguma medição que eu possa fazer diretamente nele com multímetro para verificar sua integridade?

    • FILIPEFLOP - 14 de agosto de 2014

      Boa tarde,

      O ideal seria você testar com outro DHT11. Você comprou esse módulo aqui na FILIPEFLOP ?

      Grato.

      Adilson – Equipe FILIPEFLOP

    • Fernando Queiroz - 14 de novembro de 2014

      O meu sensor também veio em uma plaquinha e como o do pessoal que reclamou, o meu também não funcionou de primeira.
      Então eu observei que o meu sensor possuía apenas três pernas e não quatro como a da figura apresentada. Então eu observei que a pinagem que o meu seguia era a seguinte: Com o sensor visto de frente(parte azul para frente): porta analógica, 5v, gnd

  45. Celio - 17 de julho de 2014

    a programação esta apresentando o seguinte erro:

    sketch_jul17a:13: error: ‘DHT’ does not name a type
    sketch_jul17a.ino: In function ‘void loop()':
    sketch_jul17a:39: error: ‘dht’ was not declared in this scope

    como faço para solucionar esse problema?

  46. Alymoha - 15 de julho de 2014

    O meu sensor dht11 veio pronto na placa, porem creio que nao exista diferenca , pois segui conforme ah pinagem , mais mesmo assim não consegui =/ kkkk

  47. Controle de acesso usando leitor RFID Mifare Mfrc522 | Blog FILIPEFLOP - 30 de junho de 2014

    […] no circuito o display 16×2 HD44780 com ligação semelhante ao do artigo Mostrando informações de temperatura no LCD 16×2 com o DHT11. Trocamos apenas os pinos 12 do Arduino pelo pino 6, e o 11 pelo 7, pois os mesmos já estão […]

  48. rodrigo - 16 de maio de 2014

    Filipe, estou com uma duvida, e acho que você pode me ajudar.
    Estou exibindo um valor no display de 0-1023 (valor da leitura de um potenciometro)
    o problema é quando ele está lendo digamos 24 fica normal, quando lê 100 e volta pra 24 fica 240
    se ele lê os 1023 e volta pra 900 fica 9003 entende? o ultimo numero está ficando ‘preso’ sei lá, tentei com um lcd.clear(); mas fica piscando -.-

    • FILIPEFLOP - 20 de maio de 2014

      Boa tarde Rodrigo,

      Realmente com o lcd.clear() o display fica piscando, e não fica uma coisa “apresentável”.

      O que eu costumo fazer é apagar apenas o espaço aonde vai o número. Por exemplo, digamos que o valor máximo de 1024 vai ser apresentado na linha 0, coluna 0. Antes de apresentar o valor, eu preencho esse espaço com caracteres em branco. Fica mais ou menos assim :

      lcd.setCursor(0,0);
      lcd.print(” “); //4 caracteres em branco
      lcd.setCursor(0,0);
      lcd.print(“1234″); //Imprimo o valor ou variável no mesmo espaço

      São algumas linhas de comando a mais, mas o resultado compensa. Espero ter ajudado. Abraço !

      Adilson – Equipe FILIPEFLOP

  49. manoel barros - 19 de abril de 2014

    //Programa : Temperatura e umidade com o DHT11 e LCD 16×2
    //Autor : FILIPEFLOP

    #include //Carrega a biblioteca LCD
    #include //Carrega a biblioteca DHT

    //Define a ligação ao pino de dados do sensor
    #define DHTPIN A5

    //Define o tipo de sensor DHT utilizado
    #define DHTTYPE DHT11

    DHT dht(DHTPIN, DHTTYPE);

    //Define os pinos que serão ligados ao LCD
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

    //Array simbolo grau
    byte grau[8] ={ B00001100,
    B00010010,
    B00010010,
    B00001100,
    B00000000,
    B00000000,
    B00000000,
    B00000000,};

    void setup()
    {
    Serial.begin(9600); //Inicializa a serial
    lcd.begin(16,2); //Inicializa LCD
    lcd.clear(); //Limpa o LCD
    //Cria o caractere customizado com o simbolo do grau
    lcd.createChar(0, grau);
    }

    void loop()
    {
    float h = dht.readHumidity(); //Le o valor da umidade
    float t = dht.readTemperature(); //Le o valor da temperatura
    lcd.setCursor(0,0);
    lcd.print(“Temp : “);
    lcd.print(” “);
    lcd.setCursor(7,0);
    lcd.print(t,1);
    lcd.setCursor(12,0);

    //Mostra o simbolo do grau formado pelo array
    lcd.write((byte)0);

    //Mostra o simbolo do grau quadrado
    //lcd.print((char)223);

    lcd.setCursor(0,1);
    lcd.print(“Umid : “);
    lcd.print(” “);
    lcd.setCursor(7,1);
    lcd.print(h,1);
    lcd.setCursor(12,1);
    lcd.print(“%”);

    //Intervalo recomendado para leitura do sensor
    delay(2000);

    porem nao consigo programa ele da erro

  50. manoel barros - 19 de abril de 2014

    comprei um sensor de temperatura
    mas eu não consigo roda o programa da erro o
    sensor de chuva que eu comprei funcionou legal peguei o programa aqui
    e deu certo mas esse não e eu não sei porque eu to tentando aprender ja comprei alguns
    componente de sua
    loja inclusive os sensores e o Arduino queria um programa pra eu usa aqui com o sensor de temperatura DHT11

  51. Felipe Gadé - 16 de abril de 2014

    Amigo qual software você utiliza para a montagem virtual e simulação deste circuito?

    • FILIPEFLOP - 13 de maio de 2014

      Boa noite Felipe,

      Para montagem virtual utilizamos o Fritzing. Os circuitos são todos montados e testados na bancada, para garantir o funcionamento dos posts apresentados.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  52. Christian Raimundo Afonso Barbosa - 15 de abril de 2014

    Achei muito interessante e totalmente ao nível de qualquer pessoa fazer esse projeto, graças ao código simples e bem elaborado por vocês. Preciso fazer um projeto pra medir a temperatura da água, esse sensor pode ser colocado na água?

    • FILIPEFLOP - 13 de maio de 2014

      Boa noite Christian,

      Esse sensor não é indicado para ser colocado na água. Uma alternativa seria o uso, com vedação adequada, do LM35 ou do DS18B20, que são sensores exclusivos para medir temperatura.

      Um abraço e obrigado por visitar o blog FILIPEFLOP !

      Adilson – Equipe FILIPEFLOP

Deixe uma resposta