#include <DHT.h>
#define DHTPIN 2 // DHT22 data pin
#define DHTTYPE DHT22 // DHT22 sensor
#define TRIG_PIN 3
#define ECHO_PIN 4
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
// Read temperature
float tempC = dht.readTemperature();
if (isnan(tempC)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Calculate speed of sound in cm/µs
float speedOfSound = (331.4 + 0.6 * tempC) * 100 / 1000000; // cm/µs
// Trigger ultrasonic sensor
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
// Calculate distance in cm
float distance = (duration * speedOfSound) / 2.0;
Serial.print("Temperature: "); Serial.print(tempC); Serial.print(" C, ");
Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm");
delay(1000);
}