#include <Adafruit_SSD1306.h>
#include <DHT.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
#define DHTPIN1 4
#define DHTPIN2 16
#define DHTPIN3 17
#define DHTTYPE DHT22
DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
DHT dht3(DHTPIN3, DHTTYPE);
#define LED_PIN 2
#define TEMP_THRESHOLD 60
#define HUMIDITY_THRESHOLD 70
void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display();
dht1.begin();
dht2.begin();
dht3.begin();
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
}
void loop() {
float temperature1 = dht1.readTemperature();
float humidity1 = dht1.readHumidity();
float temperature2 = dht2.readTemperature();
float humidity2 = dht2.readHumidity();
float temperature3 = dht3.readTemperature();
float humidity3 = dht3.readHumidity();
if (isnan(temperature1) || isnan(humidity1)) {
Serial.println(F("Failed to read from DHT sensor 1!"));
}
if (isnan(temperature2) || isnan(humidity2)) {
Serial.println(F("Failed to read from DHT sensor 2!"));
}
if (isnan(temperature3) || isnan(humidity3)) {
Serial.println(F("Failed to read from DHT sensor 3!"));
}
Serial.print(F("Temperature 1: ")); Serial.print(temperature1); Serial.println(" °C");
Serial.print(F("Humidity 1: ")); Serial.print(humidity1); Serial.println(" %");
Serial.print(F("Temperature 2: ")); Serial.print(temperature2); Serial.println(" °C");
Serial.print(F("Humidity 2: ")); Serial.print(humidity2); Serial.println(" %");
Serial.print(F("Temperature 3: ")); Serial.print(temperature3); Serial.println(" °C");
Serial.print(F("Humidity 3: ")); Serial.print(humidity3); Serial.println(" %");
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(F("S1 Temp: "));
display.print(temperature1);
display.println(F(" C"));
display.print(F("S1 Humidity: "));
display.print(humidity1);
display.println(F(" %"));
display.print(F("S2 Temp: "));
display.print(temperature2);
display.println(F(" C"));
display.print(F("S2 Humidity: "));
display.print(humidity2);
display.println(F(" %"));
display.print(F("S3 Temp: "));
display.print(temperature3);
display.println(F(" C"));
display.print(F("S3 Humidity: "));
display.print(humidity3);
display.println(F(" %"));
display.display();
if (temperature1 > TEMP_THRESHOLD || humidity1 > HUMIDITY_THRESHOLD ||
temperature2 > TEMP_THRESHOLD || humidity2 > HUMIDITY_THRESHOLD ||
temperature3 > TEMP_THRESHOLD || humidity3 > HUMIDITY_THRESHOLD) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
delay(2000);
}