#include "DHT.h"
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
int ledPin = 13;
int pirPin = 2;
int pirState = LOW;
int val = LOW;
#define TRIG_PIN 8
#define ECHO_PIN 7
void setup() {
Serial.begin(115200);
Serial.println(F("DHT22, PIR Motion Sensor, and Ultrasonic Sensor Example!"));
dht.begin();
pinMode(ledPin, OUTPUT);
pinMode(pirPin, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
val = digitalRead(pirPin);
if (val == HIGH) {
Serial.println("Motion detected!");
digitalWrite(ledPin, HIGH);
if (pirState == HIGH) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(ledPin, LOW);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(temperature) || isnan(humidity)) {
Serial.println(F("Failed to read from DHT sensor!"));
} else {
Serial.print(F("Humidity: "));
Serial.print(humidity);
Serial.print(F("% Temperature: "));
Serial.print(temperature);
Serial.println(F("°C"));
}
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.034 / 2;
Serial.print(F("Distance: "));
Serial.print(distance);
Serial.println(F(" cm"));
delay(2000);
}