#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <HCSR04.h>
#include "SonicSens.h"
#define DHTTYPE DHT22
#define DHTPIN 6
const int echo = 2;
const int trig = 3;
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
SonicSensor mysensor(trig,echo);
float echoTime = 0;
float temperature = 0;
float soundSpeed = 0;
float distance = 0;
int i = 0;
void setup() {
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
dht.begin();
lcd.init();
lcd.backlight();
setStartLCD();
Serial.begin(115200);
}
void loop() {
temperature = dht.readTemperature();
soundSpeed = calcSoundSpeed(temperature);
echoTime = getEchoTime();
distance = calcDistanceCM(soundSpeed, echoTime);
lcd.setCursor(0,0);
lcd.print("Temp : ");lcd.print(temperature,1);
lcd.setCursor(0,1);
lcd.print("Echo: ");lcd.print(mysensor.getEchoTim(),0);
lcd.setCursor(0,2);
lcd.print("Speed : ");lcd.print(mysensor.getSoundSpeed(temperature));
lcd.setCursor(0,3);
lcd.print("Dist: ");lcd.print(mysensor.getDistance(temperature));
}
void setStartLCD()
{
lcd.begin(20,4); //Initialisation LCD 20 columns 4 Rows
lcd.backlight(); //backlight on
}
float getEchoTime()
{
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
return (pulseIn(echo, HIGH));
}
float calcDistanceCM(float speed, float echo) {
speed /= 10000; //Umrechnung m/s -> cm/us
return (echo * speed / 2);
}
float calcSoundSpeed(float temp)
{
return (331.5 + 0.6 * temp);
}