#include <DHT.h> // Thêm thư viện DHT
#define DHTPIN 4 // Định nghĩa chân kết nối với cảm biến DHT
#define DHTTYPE DHT22 // Định nghĩa loại cảm biến DHT (DHT22)
DHT dht(DHTPIN, DHTTYPE); // Khởi tạo đối tượng DHT với chân kết nối và loại cảm biến
float h, t; // Khai báo biến lưu trữ độ ẩm và nhiệt độ
const int buttonPin = 35; // Định nghĩa chân kết nối với nút nhấn
const int ledPin = 2; // Định nghĩa chân kết nối với đèn LED
int ledState; // Trạng thái của đèn LED
int buttonState; // Trạng thái của nút nhấn
void setup() {
Serial.begin(115200); // Khởi tạo giao tiếp serial với tốc độ baud 115200
pinMode(ledPin, OUTPUT); // Thiết lập chân ledPin là đầu ra
pinMode(buttonPin, INPUT); // Thiết lập chân buttonPin là đầu vào
digitalWrite(ledPin, LOW); // Tắt đèn LED ban đầu
dht.begin(); // Khởi động cảm biến DHT
Serial.print("Bat dau!"); // In ra thông điệp xuất phát trên cổng serial
}
void readingDHT22() {
h = dht.readHumidity(); // Đọc độ ẩm từ cảm biến DHT
t = dht.readTemperature(); // Đọc nhiệt độ từ cảm biến DHT
if (isnan(h) || isnan(t)) { // Kiểm tra lỗi khi đọc dữ liệu từ cảm biến DHT
Serial.println(F("Faile to read.....")); // In ra thông báo lỗi nếu không đọc được dữ liệu
return; // Trả về nếu có lỗi xảy ra
}
}
void loop() {
delay(10); // Chờ một khoảng thời gian ngắn
readingDHT22(); // Đọc dữ liệu từ cảm biến DHT
buttonState = digitalRead(buttonPin); // Đọc trạng thái của nút nhấn
if (buttonState == HIGH) { // Nếu nút nhấn được nhấn
Serial.println("Kiem tra"); // In ra thông điệp kiểm tra
if (h >= 70) { // Nếu độ ẩm lớn hơn hoặc bằng 70%
ledState = HIGH; // Bật đèn LED
} else { // Nếu độ ẩm nhỏ hơn 70%
ledState = LOW; // Tắt đèn LED
}
digitalWrite(ledPin, ledState); // Đặt trạng thái của đèn LED
Serial.println("Data log"); // In ra thông điệp ghi log dữ liệu
Serial.print("Do am: "); // In ra thông số độ ẩm
Serial.print(h); // In ra giá trị độ ẩm
Serial.println("%"); // In ra đơn vị
Serial.print("Nhiet do: "); // In ra thông số nhiệt độ
Serial.print(t); // In ra giá trị nhiệt độ
Serial.println("°C"); // In ra đơn vị
}
if (ledState == HIGH) { // Nếu đèn LED đang bật
Serial.println("Do am tren 70%"); // In ra thông điệp độ ẩm lớn hơn 70%
Serial.println("Sang Led"); // In ra thông điệp bật đèn LED
} else { // Nếu đèn LED đang tắt
Serial.println("Do am duoi 70%"); // In ra thông điệp độ ẩm nhỏ hơn 70%
Serial.println("Tat Led"); // In ra thông điệp tắt đèn LED
}
Serial.println("-------------------------------"); // In ra dấu phân tách cuối cùng
}