#include <DHT.h>
#define DHTPIN 21
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int trigPin = 17;
const int echoPin = 16;
const int buzzerPin = 12;
const int DISTANCE_THRESHOLD = 20; // Adjust this threshold as needed
long duration;
float distanceCm;
float distanceInch;
void setup() {
Serial.begin(9600);
Serial.println(F("DHT22 and Ultrasonic Buzzer Example"));
dht.begin();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
// Initialize LEDC
ledcSetup(0, 5000, 8); // LEDC channel 0, 5000 Hz, 8-bit resolution
ledcAttachPin(buzzerPin, 0); // Attach buzzerPin to channel 0
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(F("°F Heat Index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
// Ultrasonic
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * 0.034 / 2; // Speed of sound is 0.034 cm/microsecond
distanceInch = distanceCm * 0.393701; // Convert distance to inches
Serial.print("Distance (cm):");
Serial.println(distanceCm);
Serial.print("Distance (inch):");
Serial.println(distanceInch);
// Buzzer control based on distance
if (distanceCm < DISTANCE_THRESHOLD) {
ledcWrite(0, 128); // Activate the buzzer at 50% duty cycle
} else {
ledcWrite(0, 0); // Deactivate the buzzer
}
}