#include "DHTesp.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
#define NTP_SERVER "pool.ntp.org"
#define UTC_OFFSET 7
#define UTC_OFFSET_DST 0
#define LED 2
int sensor = 4;
int val = 0; // variable to store the sensor status (value)
int state = LOW; // by default, no motion detected
const float THRESHOLD = 10;
const int DHT_PIN = 15;
DHTesp dhtSensor;
void printTempAndHumidity() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
LCD.setCursor(0, 0);
LCD.println("Temp: " + String(data.temperature, 2) + "C");
LCD.setCursor(0, 1);
LCD.println("Humidity: " + String(data.humidity, 1) + "%");
if(data.temperature > THRESHOLD) {
digitalWrite(LED, HIGH);
delay(3000);
} else {
digitalWrite(LED, LOW);
delay(100);
}
val = digitalRead(sensor);
if (val == HIGH) { // check if the sensor is HIGH
digitalWrite(LED, HIGH); // turn LED ON
delay(100); // delay 100 milliseconds
if (state == LOW) {
Serial.println("Motion detected!");
state = HIGH; // update variable state to HIGH
}
}
else {
digitalWrite(LED, LOW); // turn LED OFF
delay(200); // delay 200 milliseconds
if (state == HIGH){
Serial.println("Motion stopped!");
state = LOW; // update variable state to LOW
}
}
}
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED, OUTPUT);
pinMode(sensor, INPUT);
LCD.init();
LCD.backlight();
}
void loop() {
printTempAndHumidity();
delay(250);
}