#include "DHT.h"
// Định nghĩa các chân và kiểu cảm biến
#define DHTPIN 14 // Chân GPIO 15 nối với Data của DHT22
#define DHTTYPE DHT22 // Loại cảm biến DHT22
#define LEDPIN 5 // Chân GPIO 5 nối với LED
#define BUTTONPIN 4 // Chân GPIO 4 nối với nút nhấn
DHT dht(DHTPIN, DHTTYPE);
float thresholdTemperature = 28.0; // Ngưỡng nhiệt độ mặc định
void setup() {
// Thiết lập các chân
pinMode(LEDPIN, OUTPUT);
pinMode(BUTTONPIN, INPUT_PULLUP); // Kích hoạt điện trở pull-up cho nút nhấn
// Khởi tạo cảm biến DHT22
dht.begin();
// Khởi tạo UART
Serial.begin(115200);
}
void loop() {
// Đọc nhiệt độ từ DHT22
float temperature = dht.readTemperature();
// Kiểm tra lỗi đọc cảm biến
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Hiển thị nhiệt độ hiện tại trên Serial Monitor
Serial.print("Current Temperature: ");
Serial.print(temperature);
Serial.println("°C");
// Điều khiển LED dựa trên ngưỡng nhiệt độ
if (temperature > thresholdTemperature) {
digitalWrite(LEDPIN, HIGH); // Bật LED (quạt)
Serial.println("Fan ON");
} else {
digitalWrite(LEDPIN, LOW); // Tắt LED (quạt)
Serial.println("Fan OFF");
}
// Kiểm tra nút nhấn để thay đổi ngưỡng nhiệt độ
if (digitalRead(BUTTONPIN) == LOW) { // Nếu nút nhấn được nhấn
delay(200); // Chờ để tránh bounce
thresholdTemperature += 1.0; // Tăng ngưỡng nhiệt độ
Serial.print("New Threshold Temperature: ");
Serial.print(thresholdTemperature);
Serial.println("°C");
// Đợi để tránh nhiều lần tăng ngưỡng do một lần nhấn
while (digitalRead(BUTTONPIN) == LOW) {
delay(10);
}
}
// Đợi 5 giây trước khi đọc nhiệt độ tiếp theo
delay(5000);
}