#include "DHT.h"
// Định nghĩa các chân và ngưỡng nhiệt độ
#define DHTPIN 14 // Chân GPIO 14 nối với 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 17 // Chân GPIO 17 nối với nút nhấn
#define TEMP_THRESHOLD 30 // Ngưỡng nhiệt độ 30°C
DHT dht(DHTPIN, DHTTYPE);
bool alertState = false;
void setup() {
// Thiết lập các chân
pinMode(LEDPIN, OUTPUT);
pinMode(BUTTONPIN, INPUT_PULLUP); // Sử dụng điện trở kéo nội bộ
// Khởi tạo 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 nếu có lỗi trong quá trình đọc
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Kiểm tra nếu nhiệt độ vượt ngưỡng
if (temperature > TEMP_THRESHOLD && !alertState) {
alertState = true;
digitalWrite(LEDPIN, HIGH); // Bật LED cảnh báo
Serial.println("Nhiệt Độ Cao Quá ! LED ON");
}
// Kiểm tra nếu nút nhấn được nhấn
if (digitalRead(BUTTONPIN) == LOW && alertState) {
alertState = false;
digitalWrite(LEDPIN, LOW); // Tắt LED
Serial.println(" giữ nút ! LED OFF");
delay(500); // Chống rung nút nhấn
}
// Đợi 1 giây trước khi đọc lại
delay(1000);
}