#include <Arduino.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 22
#define DHTTYPE DHT22
#define LDR_AO_PIN 34 // Analog Output pin of LDR module
#define LDR_DO_PIN 35 // Digital Output pin of LDR module (optional)
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
// Initialize the DHT sensor
Serial.println("DHT22 test!");
dht.begin();
// Initialize the LDR pins
pinMode(LDR_AO_PIN, INPUT);
pinMode(LDR_DO_PIN, INPUT); // Optional, if using the digital output
// Create FreeRTOS tasks
xTaskCreatePinnedToCore(readTemperature, "Read Temperature", 2048, NULL, 1, NULL, 1); // Increase stack size
xTaskCreatePinnedToCore(readLightIntensity, "Read Light Intensity", 1024, NULL, 1, NULL, 1);
}
void loop() {
// Do nothing here
}
void readTemperature(void * parameter) {
for (;;) {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
} else {
Serial.println("Failed to read from DHT sensor!");
}
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
void readLightIntensity(void * parameter) {
for (;;) {
int ldrValue = analogRead(LDR_AO_PIN);
Serial.print("Light Intensity: ");
Serial.println(ldrValue);
int ldrDigitalValue = digitalRead(LDR_DO_PIN); // Optional, if using the digital output
Serial.print("Digital Light Intensity: ");
Serial.println(ldrDigitalValue);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}