#include "DHT.h"
#include <Servo.h>
#define DHTPINa 12
#define DHTPINb 8
#define DHTTYPE DHT22
DHT dhta (DHTPINa, DHTTYPE);
DHT dhtb (DHTPINb, DHTTYPE);
Servo servo; // Объект для управления сервоприводом
int angle; // Угол
float getHumidityFromTable(float dryTemp, float tempDifference) {
// Определение относительной влажности на основе таблицы
if (dryTemp == 5.0) {
if (tempDifference == 0.5) return 91.0;
if (tempDifference == 1.0) return 83.0;
if (tempDifference == 1.5) return 75.0;
if (tempDifference == 2.0) return 66.0;
if (tempDifference == 2.5) return 58.0;
if (tempDifference == 3.0) return 50.0;
if (tempDifference == 3.5) return 42.0;
if (tempDifference == 4.0) return 34.0;
if (tempDifference == 4.5) return 26.0;
if (tempDifference == 5.0) return 19.0;
} else if (dryTemp == 6.0) {
if (tempDifference == 0.5) return 92.0;
if (tempDifference == 1.0) return 84.0;
if (tempDifference == 1.5) return 76.0;
if (tempDifference == 2.0) return 67.0;
if (tempDifference == 2.5) return 60.0;
if (tempDifference == 3.0) return 52.0;
if (tempDifference == 3.5) return 45.0;
if (tempDifference == 4.0) return 37.0;
if (tempDifference == 4.5) return 30.0;
if (tempDifference == 5.0) return 22.0;
if (tempDifference == 5.5) return 15.0;
} else if (dryTemp == 7.0) {
if (tempDifference == 0.5) return 92.0;
if (tempDifference == 1.0) return 84.0;
if (tempDifference == 1.5) return 77.0;
if (tempDifference == 2.0) return 69.0;
if (tempDifference == 2.5) return 62.0;
if (tempDifference == 3.0) return 54.0;
if (tempDifference == 3.5) return 47.0;
if (tempDifference == 4.0) return 40.0;
if (tempDifference == 4.5) return 33.0;
if (tempDifference == 5.0) return 26.0;
if (tempDifference == 5.5) return 19.0;
} else if (dryTemp == 8.0) {
if (tempDifference == 0.5) return 92.0;
if (tempDifference == 1.0) return 85.0;
if (tempDifference == 1.5) return 78.0;
if (tempDifference == 2.0) return 70.0;
if (tempDifference == 2.5) return 63.0;
if (tempDifference == 3.0) return 56.0;
if (tempDifference == 3.5) return 49.0;
if (tempDifference == 4.0) return 42.0;
if (tempDifference == 4.5) return 36.0;
if (tempDifference == 5.0) return 29.0;
if (tempDifference == 5.5) return 22.0;
if (tempDifference == 6.0) return 16.0;
} else if (dryTemp == 9.0) {
if (tempDifference == 0.5) return 93.0;
if (tempDifference == 1.0) return 86.0;
if (tempDifference == 1.5) return 79.0;
if (tempDifference == 2.0) return 71.0;
if (tempDifference == 2.5) return 65.0;
if (tempDifference == 3.0) return 58.0;
if (tempDifference == 3.5) return 51.0;
if (tempDifference == 4.0) return 45.0;
if (tempDifference == 4.5) return 38.0;
if (tempDifference == 5.0) return 32.0;
if (tempDifference == 5.5) return 25.0;
if (tempDifference == 6.0) return 19.0;
} else if (dryTemp == 10.0) {
if (tempDifference == 0.5) return 93.0;
if (tempDifference == 1.0) return 86.0;
if (tempDifference == 1.5) return 79.0;
if (tempDifference == 2.0) return 73.0;
if (tempDifference == 2.5) return 66.0;
if (tempDifference == 3.0) return 60.0;
if (tempDifference == 3.5) return 53.0;
if (tempDifference == 4.0) return 47.0;
if (tempDifference == 4.5) return 41.0;
if (tempDifference == 5.0) return 34.0;
if (tempDifference == 5.5) return 28.0;
if (tempDifference == 6.0) return 22.0;
} else if (dryTemp == 11.0) {
if (tempDifference == 0.5) return 93.0;
if (tempDifference == 1.0) return 87.0;
if (tempDifference == 1.5) return 80.0;
if (tempDifference == 2.0) return 74.0;
if (tempDifference == 2.5) return 67.0;
if (tempDifference == 3.0) return 61.0;
if (tempDifference == 3.5) return 55.0;
if (tempDifference == 4.0) return 49.0;
if (tempDifference == 4.5) return 43.0;
if (tempDifference == 5.0) return 37.0;
if (tempDifference == 5.5) return 31.0;
if (tempDifference == 6.0) return 26.0;
if (tempDifference == 6.5) return 20.0;
} else if (dryTemp == 12.0) {
if (tempDifference == 0.5) return 93.0;
if (tempDifference == 1.0) return 87.0;
if (tempDifference == 1.5) return 81.0;
if (tempDifference == 2.0) return 75.0;
if (tempDifference == 2.5) return 69.0;
if (tempDifference == 3.0) return 63.0;
if (tempDifference == 3.5) return 57.0;
if (tempDifference == 4.0) return 51.0;
if (tempDifference == 4.5) return 45.0;
if (tempDifference == 5.0) return 40.0;
if (tempDifference == 5.5) return 34.0;
if (tempDifference == 6.0) return 28.0;
if (tempDifference == 6.5) return 23.0;
if (tempDifference == 7.0) return 18.0;
} else if (dryTemp == 13.0) {
if (tempDifference == 0.5) return 94.0;
if (tempDifference == 1.0) return 88.0;
if (tempDifference == 1.5) return 82.0;
if (tempDifference == 2.0) return 76.0;
if (tempDifference == 2.5) return 70.0;
if (tempDifference == 3.0) return 64.0;
if (tempDifference == 3.5) return 58.0;
if (tempDifference == 4.0) return 53.0;
if (tempDifference == 4.5) return 47.0;
if (tempDifference == 5.0) return 42.0;
if (tempDifference == 5.5) return 36.0;
if (tempDifference == 6.0) return 31.0;
if (tempDifference == 6.5) return 26.0;
if (tempDifference == 7.0) return 20.0;
} else if (dryTemp == 14.0) {
if (tempDifference == 0.5) return 94.0;
if (tempDifference == 1.0) return 88.0;
if (tempDifference == 1.5) return 82.0;
if (tempDifference == 2.0) return 76.0;
if (tempDifference == 2.5) return 71.0;
if (tempDifference == 3.0) return 65.0;
if (tempDifference == 3.5) return 60.0;
if (tempDifference == 4.0) return 54.0;
if (tempDifference == 4.5) return 49.0;
if (tempDifference == 5.0) return 44.0;
if (tempDifference == 5.5) return 39.0;
if (tempDifference == 6.0) return 33.0;
if (tempDifference == 6.5) return 28.0;
if (tempDifference == 7.0) return 23.0;
if (tempDifference == 7.5) return 18.0;
} else if (dryTemp == 15.0) {
if (tempDifference == 0.5) return 94.0;
if (tempDifference == 1.0) return 88.0;
if (tempDifference == 1.5) return 83.0;
if (tempDifference == 2.0) return 77.0;
if (tempDifference == 2.5) return 72.0;
if (tempDifference == 3.0) return 66.0;
if (tempDifference == 3.5) return 61.0;
if (tempDifference == 4.0) return 56.0;
if (tempDifference == 4.5) return 51.0;
if (tempDifference == 5.0) return 46.0;
if (tempDifference == 5.5) return 41.0;
if (tempDifference == 6.0) return 36.0;
if (tempDifference == 6.5) return 31.0;
if (tempDifference == 7.0) return 26.0;
if (tempDifference == 7.5) return 21.0;
if (tempDifference == 8.0) return 18.0;
} else if (dryTemp == 16.0) {
if (tempDifference == 0.5) return 94.0;
if (tempDifference == 1.0) return 89.0;
if (tempDifference == 1.5) return 83.0;
if (tempDifference == 2.0) return 78.0;
if (tempDifference == 2.5) return 73.0;
if (tempDifference == 3.0) return 68.0;
if (tempDifference == 3.5) return 63.0;
if (tempDifference == 4.0) return 57.0;
if (tempDifference == 4.5) return 52.0;
if (tempDifference == 5.0) return 48.0;
if (tempDifference == 5.5) return 43.0;
if (tempDifference == 6.0) return 38.0;
if (tempDifference == 6.5) return 33.0;
if (tempDifference == 7.0) return 29.0;
if (tempDifference == 7.5) return 24.0;
if (tempDifference == 8.0) return 20.0;
} else if (dryTemp == 17.0) {
if (tempDifference == 0.5) return 95.0;
if (tempDifference == 1.0) return 89.0;
if (tempDifference == 1.5) return 84.0;
if (tempDifference == 2.0) return 79.0;
if (tempDifference == 2.5) return 74.0;
if (tempDifference == 3.0) return 69.0;
if (tempDifference == 3.5) return 64.0;
if (tempDifference == 4.0) return 59.0;
if (tempDifference == 4.5) return 54.0;
if (tempDifference == 5.0) return 49.0;
if (tempDifference == 5.5) return 45.0;
if (tempDifference == 6.0) return 40.0;
if (tempDifference == 6.5) return 35.0;
if (tempDifference == 7.0) return 31.0;
if (tempDifference == 7.5) return 27.0;
if (tempDifference == 8.0) return 22.0;
if (tempDifference == 8.5) return 19.0;
} else if (dryTemp == 18.0) {
if (tempDifference == 0.5) return 90.0;
if (tempDifference == 1.0) return 84.0;
if (tempDifference == 1.5) return 79.0;
if (tempDifference == 2.0) return 74.0;
if (tempDifference == 2.5) return 70.0;
if (tempDifference == 3.0) return 65.0;
if (tempDifference == 3.5) return 60.0;
if (tempDifference == 4.0) return 55.0;
if (tempDifference == 4.5) return 51.0;
if (tempDifference == 5.0) return 47.0;
if (tempDifference == 5.5) return 42.0;
if (tempDifference == 6.0) return 37.0;
if (tempDifference == 6.5) return 33.0;
if (tempDifference == 7.0) return 29.0;
if (tempDifference == 7.5) return 24.0;
if (tempDifference == 8.0) return 21.0;
if (tempDifference == 8.5) return 17.0;
} else if (dryTemp == 19.0) {
if (tempDifference == 0.5) return 90.0;
if (tempDifference == 1.0) return 85.0;
if (tempDifference == 1.5) return 80.0;
if (tempDifference == 2.0) return 75.0;
if (tempDifference == 2.5) return 70.0;
if (tempDifference == 3.0) return 66.0;
if (tempDifference == 3.5) return 61.0;
if (tempDifference == 4.0) return 57.0;
if (tempDifference == 4.5) return 52.0;
if (tempDifference == 5.0) return 48.0;
if (tempDifference == 5.5) return 44.0;
if (tempDifference == 6.0) return 39.0;
if (tempDifference == 6.5) return 35.0;
if (tempDifference == 7.0) return 31.0;
if (tempDifference == 7.5) return 27.0;
if (tempDifference == 8.0) return 23.0;
if (tempDifference == 8.5) return 19.0;
} else if (dryTemp == 20.0) {
if (tempDifference == 0.5) return 90.0;
if (tempDifference == 1.0) return 85.0;
if (tempDifference == 1.5) return 81.0;
if (tempDifference == 2.0) return 76.0;
if (tempDifference == 2.5) return 71.0;
if (tempDifference == 3.0) return 67.0;
if (tempDifference == 3.5) return 63.0;
if (tempDifference == 4.0) return 58.0;
if (tempDifference == 4.5) return 54.0;
if (tempDifference == 5.0) return 50.0;
if (tempDifference == 5.5) return 45.0;
if (tempDifference == 6.0) return 41.0;
if (tempDifference == 6.5) return 37.0;
if (tempDifference == 7.0) return 33.0;
if (tempDifference == 7.5) return 29.0;
if (tempDifference == 8.0) return 25.0;
if (tempDifference == 8.5) return 22.0;
if (tempDifference == 9.0) return 18.0;
} else if (dryTemp == 21.0) {
if (tempDifference == 0.5) return 90.0;
if (tempDifference == 1.0) return 85.0;
if (tempDifference == 1.5) return 81.0;
if (tempDifference == 2.0) return 77.0;
if (tempDifference == 2.5) return 72.0;
if (tempDifference == 3.0) return 68.0;
if (tempDifference == 3.5) return 64.0;
if (tempDifference == 4.0) return 59.0;
if (tempDifference == 4.5) return 55.0;
if (tempDifference == 5.0) return 51.0;
if (tempDifference == 5.5) return 47.0;
if (tempDifference == 6.0) return 43.0;
if (tempDifference == 6.5) return 39.0;
if (tempDifference == 7.0) return 35.0;
if (tempDifference == 7.5) return 31.0;
if (tempDifference == 8.0) return 28.0;
if (tempDifference == 8.5) return 24.0;
if (tempDifference == 9.0) return 21.0;
if (tempDifference == 9.5) return 17.0;
} else if (dryTemp == 22.0) {
if (tempDifference == 0.5) return 91.0;
if (tempDifference == 1.0) return 85.0;
if (tempDifference == 1.5) return 82.0;
if (tempDifference == 2.0) return 77.0;
if (tempDifference == 2.5) return 73.0;
if (tempDifference == 3.0) return 69.0;
if (tempDifference == 3.5) return 64.0;
if (tempDifference == 4.0) return 61.0;
if (tempDifference == 4.5) return 56.0;
if (tempDifference == 5.0) return 52.0;
if (tempDifference == 5.5) return 48.0;
if (tempDifference == 6.0) return 44.0;
if (tempDifference == 6.5) return 41.0;
if (tempDifference == 7.0) return 37.0;
if (tempDifference == 7.5) return 33.0;
if (tempDifference == 8.0) return 30.0;
if (tempDifference == 8.5) return 26.0;
if (tempDifference == 9.0) return 23.0;
} else if (dryTemp == 23.0) {
if (tempDifference == 0.5) return 91.0;
if (tempDifference == 1.0) return 86.0;
if (tempDifference == 1.5) return 82.0;
if (tempDifference == 2.0) return 78.0;
if (tempDifference == 2.5) return 74.0;
if (tempDifference == 3.0) return 70.0;
if (tempDifference == 3.5) return 65.0;
if (tempDifference == 4.0) return 62.0;
if (tempDifference == 4.5) return 58.0;
if (tempDifference == 5.0) return 54.0;
if (tempDifference == 5.5) return 50.0;
if (tempDifference == 6.0) return 46.0;
if (tempDifference == 6.5) return 42.0;
if (tempDifference == 7.0) return 39.0;
if (tempDifference == 7.5) return 35.0;
if (tempDifference == 8.0) return 32.0;
if (tempDifference == 8.5) return 28.0;
if (tempDifference == 9.0) return 25.0;
if (tempDifference == 9.5) return 21.0;
if (tempDifference == 10.0) return 18.0;
} else if (dryTemp == 24.0) {
if (tempDifference == 0.5) return 91.0;
if (tempDifference == 1.0) return 87.0;
if (tempDifference == 1.5) return 83.0;
if (tempDifference == 2.0) return 78.0;
if (tempDifference == 2.5) return 74.0;
if (tempDifference == 3.0) return 70.0;
if (tempDifference == 3.5) return 66.0;
if (tempDifference == 4.0) return 62.0;
if (tempDifference == 4.5) return 59.0;
if (tempDifference == 5.0) return 55.0;
if (tempDifference == 5.5) return 51.0;
if (tempDifference == 6.0) return 48.0;
if (tempDifference == 6.5) return 44.0;
if (tempDifference == 7.0) return 40.0;
if (tempDifference == 7.5) return 37.0;
if (tempDifference == 8.0) return 33.0;
if (tempDifference == 8.5) return 30.0;
if (tempDifference == 9.0) return 27.0;
if (tempDifference == 9.5) return 24.0;
if (tempDifference == 10.0) return 20.0;
} else if (dryTemp == 25.0) {
if (tempDifference == 0.5) return 91.0;
if (tempDifference == 1.0) return 87.0;
if (tempDifference == 1.5) return 83.0;
if (tempDifference == 2.0) return 79.0;
if (tempDifference == 2.5) return 75.0;
if (tempDifference == 3.0) return 71.0;
if (tempDifference == 3.5) return 67.0;
if (tempDifference == 4.0) return 63.0;
if (tempDifference == 4.5) return 60.0;
if (tempDifference == 5.0) return 56.0;
if (tempDifference == 5.5) return 52.0;
if (tempDifference == 6.0) return 49.0;
if (tempDifference == 6.5) return 45.0;
if (tempDifference == 7.0) return 42.0;
if (tempDifference == 7.5) return 38.0;
if (tempDifference == 8.0) return 35.0;
if (tempDifference == 8.5) return 32.0;
if (tempDifference == 9.0) return 29.0;
if (tempDifference == 9.5) return 26.0;
if (tempDifference == 10.0) return 22.0;
if (tempDifference == 10.5) return 19.0;
}
// Если нет соответствующих данных
return -1; // -1 - отъебнулись датчики температуры
}
void setup() {
Serial.begin(9600);
dhta.begin(); // Инициализируем датчик 1
dhtb.begin(); // Инициализируем датчик 2
servo.attach(5); // приводы
}
void loop() {
// Пример использования функции
float dryTemp = dhta.readTemperature();
float vlagt = dhtb.readTemperature();
float tempDifference = dryTemp - vlagt ;
float humidity = getHumidityFromTable(dryTemp, tempDifference);
if (humidity != -1) {
Serial.print("Температура сухого термометра: ");
Serial.print(dryTemp);
Serial.println("°C");
Serial.print("Температура влажного термометра: ");
Serial.print(vlagt);
Serial.println("°C");
Serial.print("Разность показания термометров: ");
Serial.print(dryTemp - vlagt);
Serial.println("°C");
Serial.print("Относительная влажность: ");
Serial.print(humidity);
Serial.println("%");
} else {
Serial.println("Пиздец всему.");
}
if (humidity <=94){
for (angle = 0; angle <= 90; angle++) {
servo.write(angle);
delay(20);
Serial.println("Заслонки открыты");
break;}
}
if (humidity >=95){
for (angle = 90; angle >= 0; angle--) {
servo.write(angle);
delay(20);
Serial.println("Заслонки закрыты");
break;}
}
Serial.println("---------END---------");
delay(2000);
}