// Khai báo các biến và chân kết nối
const int btnpin = 35; // Chân kết nối với nút nhấn
const int ledpin = 4; // Chân kết nối với đèn LED 1
const int ledpin1 = 2; // Chân kết nối với đèn LED 2
int led1state; // Biến lưu trữ trạng thái của đèn LED 1
int ledstate; // Biến lưu trữ trạng thái của đèn LED 2
int btnstate; // Biến lưu trữ trạng thái của nút nhấn
#include "DHT.h" // Bao gồm thư viện DHT.h để sử dụng cảm biến DHT22
#define DHTPIN 14 // Định nghĩa chân kết nối với cảm biến DHT22
#define DHTTYPE DHT22 // Định nghĩa loại cảm biến là DHT22
DHT dht(DHTPIN, DHTTYPE); // Khởi tạo đối tượng cảm biến DHT22
float h, t; // Biến lưu trữ giá trị độ ẩm (h) và nhiệt độ (t)
void setup() {
// Khởi tạo kết nối Serial với tốc độ baud là 115200
Serial.begin(115200);
// Cấu hình chân kết nối với đèn LED 1 và nút nhấn
pinMode(ledpin, OUTPUT);
pinMode(btnpin, INPUT);
// Đặt trạng thái ban đầu của đèn LED 1 là LOW (Tắt đèn LED)
digitalWrite(ledpin, LOW);
// Khởi động cảm biến DHT22
dht.begin();
// In ra thông điệp "Bat Dau" trên Serial Monitor để hiển thị rằng chương trình đã bắt đầu hoạt động
Serial.println("Bat Dau");
}
void ReadingDHT22() {
// Đọc giá trị độ ẩm và nhiệt độ từ cảm biến DHT22
h = dht.readHumidity(); // Đọc độ ẩm
t = dht.readTemperature(); // Đọc nhiệt độ
// Kiểm tra nếu giá trị đọc được không hợp lệ (NaN)
if (isnan(h) || isnan(t)) {
// In ra thông điệp "failed!!!" trên Serial Monitor
Serial.println("failed!!!");
// Kết thúc hàm
return;
}
}
void loop() {
// Gọi hàm ReadingDHT22() để đọc giá trị từ cảm biến DHT22
ReadingDHT22();
// Đọc trạng thái của nút nhấn
btnstate = digitalRead(btnpin);
// Kiểm tra nếu nút nhấn được nhấn (trạng thái HIGH)
if (btnstate == HIGH) {
// Kiểm tra nếu độ ẩm lớn hơn hoặc bằng 70%
if (h >= 70) {
// Đặt trạng thái của đèn LED 1 là HIGH (bật đèn)
ledstate = HIGH;
} else {
// Nếu độ ẩm nhỏ hơn 70%, đặt trạng thái của đèn LED 1 là LOW (tắt đèn)
ledstate = LOW;
}
// Ghi trạng thái của đèn LED 1 và LED 2 lên chân kết nối
digitalWrite(ledpin, ledstate);
digitalWrite(ledpin1, led1state);
// In ra giá trị độ ẩm và nhiệt độ lên Serial Monitor
Serial.println("do am:");
Serial.print(h);
Serial.println("%");
Serial.println("nhiet do:");
Serial.print(t);
Serial.println("°c");
}
// Kiểm tra trạng thái của đèn LED 1 để in ra thông điệp tương ứng
if (ledstate == HIGH) {
Serial.println("do am tren 70");
Serial.println("sang den");
} else {
Serial.println("do am duoi 70");
Serial.println("tat den");
}
// In ra dòng phân cách để phân biệt các lần lặp
Serial.println("--------------------------------------------------");
// Delay 1 giây trước khi tiếp tục lặp
delay(1000);
}