Boa tarde,

sou novo aqui e novo com o arduino  e o primeiro projeto que peguei pra mexer foi o de medir a temperatura com o DHT11. 

to usando a biblioteca do DHT como abaixo e então consegui valores em °C, °F e de Umidade, porém os valores em °C são dados inteiros (ex. hora 23 °C, hora 24 °C, ...) e os valores em Fahrenheit são dados com uma resolução maior, usando as casas decimais. Olhando o código (Também sou novo com programação) percebi que a variável principal dele é o °F e queria mudar pra usar como variável principal o  °C para pegar uma melhor resolução, alguém pode me ajudar?

(desde já agradeço e peço perdão por ser leigo e com uma dúvida boba)

Código:

#include "DHT.h"

#define DHTPIN 2

#define DHTTYPE DHT11 // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
}

void loop() {

delay(2000);

float h = dht.readHumidity();
// Read temperature as Celsius
float t = dht.readTemperature();
// Read temperature as Fahrenheit
float f = dht.readTemperature(true);

if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println("Failed to read from DHT sensor!");
return;
}

float hi = dht.computeHeatIndex(f, h);

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" *C ");
Serial.print(f);
Serial.print(" *F\t");
Serial.print("Heat index: ");
Serial.print(hi);
Serial.println(" *F");
}

Exibições: 1171

Anexos

Responder esta

Respostas a este tópico

Veja esse exemplo :

http://playground.arduino.cc/Main/DHT11Lib

Nota:
Para usar a biblioteca, crie uma pasta no seu ARDUINO \ bibliotecas com o nome DHT11 e coloque os arquivos  dht11.h e dht11.cpp  lá.  Esteja ciente de que a biblioteca será visível apenas depois de reiniciar todas as instâncias do Arduino IDE.

OI DW, boa tarde.

Veja este datasheet do DHT11.   http://robocraft.ru/files/datasheet/DHT11.pdf

Na pagina 2 ele apresenta:   Specifications  Resolution =  1.

Ou seja ele mede a temperatura de 1 em 1 grau.

Os valores em  Fahrenheit  são calculados internamente pela biblioteca usando float, e portanto os

valores podem ter casas decimais, mas a resolução é a mesma.

Rui

Olá Dean!

O método readTemperture() por padrão devolve a temperatura em Celsius(C):

float t = dht.readTemperature();

Se você quer em Fahrenheit, passe o parâmetro true:

float f = dht.readTemperature(true);

O programador é que determina qual ele quer exibir. Se você não quiser em Fahrenheit, basta retirar as linhas.


Já o valor da sensação de temperatura (computeHeatIndex), no exemplo está exibindo em Fahrenheit.

Para exibir em Celsius, passe o parâmetro false:

float s = dht.computeHeatIndex(t, h, false);

Como  o Rui falou, ambas possuem a mesma precisão(float)

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço