#include <DHT.h>
// Khai báo chân kết nối và kiểu cảm biến
#define DHTPIN 4
#define DHTTYPE DHT22
// Khai báo chân đèn LED
#define RED_LED 6
#define GREEN_LED 7
#define YELLOW_LED 8
// Tạo đối tượng cảm biến DHT
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Khởi tạo serial monitor
Serial.begin(9600);
// Khởi tạo cảm biến DHT
dht.begin();
// Khởi tạo chân LED làm output
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(YELLOW_LED, OUTPUT);
}
void loop() {
// Đọc giá trị nhiệt độ và độ ẩm
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Kiểm tra xem việc đọc có thành công không
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Lỗi khi đọc dữ liệu từ cảm biến DHT11!");
return;
}
// In nhiệt độ và độ ẩm ra serial monitor
Serial.print("Nhiệt độ: ");
Serial.print(temperature);
Serial.print(" *C, Độ ẩm: ");
Serial.print(humidity);
Serial.println(" %");
// Task 1: Điều khiển LED theo nhiệt độ
if (temperature > 25) {
// Nhiệt độ > 25°C, bật LED đỏ
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(YELLOW_LED, LOW);
} else if (temperature < 23) {
// Nhiệt độ < 23°C, bật LED xanh
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, LOW);
digitalWrite(YELLOW_LED, HIGH);
} else {
// Nhiệt độ trong khoảng 23°C đến 25°C, bật LED vàng
digitalWrite(RED_LED, LOW);
digitalWrite(GREEN_LED, HIGH);
digitalWrite(YELLOW_LED, LOW);
}
//Task 2: Điều khiển LED theo độ ẩm
if (humidity > 50) {
// Độ ẩm lớn hơn 50% => chớp LED đỏ 2 lần
for (int i = 0; i < 2; i++) {
digitalWrite(RED_LED, HIGH);
delay(500);
digitalWrite(RED_LED, LOW);
delay(500);
}
} else if (humidity < 50) {
// Độ ẩm nhỏ hơn 50% => chớp LED xanh 2 lần
for (int i = 0; i < 2; i++) {
digitalWrite(GREEN_LED, HIGH);
delay(500);
digitalWrite(GREEN_LED, LOW);
delay(500);
}
}
delay(2000); // Chờ 2 giây trước khi lặp lại
}