#include <NewPing.h>
#include <TinyDHT.h>
#define DHTPIN 7
#define DHTTYPE DHT22
#define TRIGGER_PIN_1 10
#define ECHO_PIN_1 13
#define TRIGGER_PIN_2 8
#define ECHO_PIN_2 9
#define TRIGGER_PIN_3 5
#define ECHO_PIN_3 6
#define MAX_DISTANCE 400
NewPing sonar1(TRIGGER_PIN_1, ECHO_PIN_1, MAX_DISTANCE);
NewPing sonar2(TRIGGER_PIN_2, ECHO_PIN_2, MAX_DISTANCE);
NewPing sonar3(TRIGGER_PIN_3, ECHO_PIN_3, MAX_DISTANCE);
float hum;
float temp;
float duration1;
float distance1;
float duration2;
float distance2;
float duration3;
float distance3;
float soundsp;
float soundcm;
int iterations = 7;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin (9600);
dht.begin();
}
void loop() {
delay(2000);
checkDistance();
}
void checkDistance(){
hum = dht.readHumidity();
temp= dht.readTemperature();
soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
soundcm = soundsp / 10000;
duration1 = sonar1.ping_median(iterations);
distance1 = (duration1 / 2) * soundcm;
duration2 = sonar2.ping_median(iterations);
distance2 = (duration2 / 2) * soundcm;
duration3 = sonar3.ping_median(iterations);
distance3 = (duration3 / 2) * soundcm;
Serial.print("Sound: ");
Serial.print(soundsp);
Serial.print(" m/s, ");
Serial.print("Humid: ");
Serial.print(hum);
Serial.print(" %, Temp: ");
Serial.print(temp);
Serial.print(" C, ");
Serial.print("Distance 1: ");
if (distance1 >= 400 || distance1 <= 2) {
Serial.print("Out of range");
} else {
Serial.print(distance1);
Serial.print(" cm");
}
Serial.print(", Distance 2: ");
if (distance2 >= 400 || distance2 <= 2) {
Serial.print("Out of range");
} else {
Serial.print(distance2);
Serial.print(" cm");
}
Serial.print(", Distance 3: ");
if (distance3 >= 400 || distance3 <= 2) {
Serial.print("Out of range");
} else {
Serial.print(distance3);
Serial.print(" cm");
}
Serial.println();
}