#include <Arduino.h>
#include "DHT.h"
#define DHT_PIN 4
#define DHT_TYPE DHT22
#define LED_PIN 2
DHT dht(DHT_PIN, DHT_TYPE);
// ─── FreeRTOS Task ─────────────────────────────
void dht22Task(void *pvParameters) {
for (;;) {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("[DHT22] Read failed! Check wiring.");
digitalWrite(LED_PIN, LOW);
}
else {
float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
Serial.printf("Temp: %.1f°C | Humidity: %.1f%% | Heat Index: %.1f°C\n",
temperature, humidity, heatIndex);
// LED condition
if (humidity > 60 && temperature > 35) {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED ON (High Temp & Humidity)");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("LED OFF");
}
}
vTaskDelay(pdMS_TO_TICKS(2000));
}
}
// ─── Setup ─────────────────────────────
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
dht.begin();
xTaskCreate(
dht22Task,
"DHT22_Task",
2048,
NULL,
1,
NULL
);
}
void loop() {
vTaskDelete(NULL);
}