#include "DHT.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels
#define DHTPIN 12
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
#define buzzer 32
#define LED 25 // Pin for LED
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
pinMode(LED, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(115200);
dht.begin();
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("ไม่สามารถเชื่อมต่อกับจอได้"));
while (1);
}
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
delay(2000);
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.print("Humidity: " + String(humidity, 2) + "%");
oled.setCursor(0, 10);
oled.print("Temperature: " + String(temperature, 2) + "C ");
oled.display();
if (humidity < 70) {
tone(buzzer, 500);
} else {
noTone(buzzer);
}
if (temperature > 28) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}