/*******************************************************************************
*Include
********************************************************************************/
#include <DHT.h>
/*******************************************************************************
*Definition
********************************************************************************/
#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
#define TRIGpin 18
#define ECHOpin 19
#define LED1 0
#define LED2 2
#define SOUND_SPEED 0.0343 //Tốc độ âm thanh trong không khí khoảng 343 (m/s)= 0.0343 cm/µs.
DHT dht(DHTPIN, DHTTYPE); //Set up cảm biến nhiệt độ
/*******************************************************************************
*Set up
********************************************************************************/
void setup() {
Serial.begin(115200);
pinMode(TRIGpin, OUTPUT); // Sets the TRIGpin as an Output
pinMode(ECHOpin, INPUT); // Sets the ECHOpin as an Input
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
/*******************************************************************************
*Loop
********************************************************************************/
void loop() {
delay(2000); // Đợi 2 giây trước khi đọc dữ liệu
float h = dht.readHumidity(); // Đọc độ ẩm từ cảm biến
float t = dht.readTemperature(); // Đọc nhiệt độ từ cảm biến
digitalWrite(TRIGpin, LOW); // Clears the trigPin
delayMicroseconds(2);
digitalWrite(TRIGpin, HIGH);
delayMicroseconds(10);// Sets the TRIGpin on HIGH state for 10 micro seconds
digitalWrite(TRIGpin, LOW);
long duration = pulseIn(ECHOpin, HIGH);
float distance = (duration/2) * SOUND_SPEED;
// Cảm biến siêu âm, kiểm tra khoảng cách nếu trong vòng 1m thì đèn sáng
Serial.print("Distance (cm): ");
Serial.println(distance);
if(distance <= 100){
digitalWrite(LED2, HIGH);
} else {
digitalWrite(LED2,LOW);
}
// Cảm biến nhiệu độ, độ ấm, nếu nóng >40 độ thì đèn sáng
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT Sensor!");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%, Temperature: ");
Serial.print(t);
Serial.println("°C");
if(t > 40) {
digitalWrite(LED1, HIGH);
} else {
digitalWrite(LED1, LOW);
}
}
}
/*******************************************************************************
*EOF
********************************************************************************/