Неточные показания датчика dht22
Прогал компактную метеостанцию на dht22,при выводе показаний на монитор порта показывает очень странные показания не соответствующие реальности,пробовал разные библиотеки,не спасло.
#include <GyverTM1637.h>
#include <TinyDHT.h>
#define CLK 3
#define DIO 4
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define TEMPTYPE 1
GyverTM1637 disp(CLK, DIO);
void setup() {
disp.clear();
disp.brightness(7); // яркость, 0 - 7 (минимум - максимум)
Serial.begin(115200);
dht.begin(); // Initialize DHT Teperature Sensor
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if ( t == BAD_TEMP || h == BAD_HUM ) { // if error conditions
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
disp.displayInt(h);
}
Не обращайте внимание на команды для экранчика)

Ответы (1 шт):
Автор решения: Николай
→ Ссылка
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
float temp2=0;
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
dht.begin();
}
void loop()
{
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
if (t > 1000){ temp2 = (t - 3276.7); } else{ temp2 = t; }
Serial.print(temp2);
Serial.println(" *C ");
}
Вопрос был решен полным переписыванием кода, включая переустановку библиотек. А так же, извлечением металлического шарика из корпуса сенсора. При показании отрицательной температуры показывает -3276, строчка с if призвана это решить (но не решает).



