// include the library code:
#include <LiquidCrystal_I2C.h>
#include "DHT.h";
#include "NewPing.h"
// include the library code:
#include <LiquidCrystal_I2C.h>
// Define Constants
#define DHTPIN 7 // DHT-22 Output Pin connection
#define DHTTYPE DHT11 // DHT Type is DHT 22 (AM2302)
#define TRIGGER_PIN 10
#define ECHO_PIN 13
#define MAX_DISTANCE 400
// Define I2C Address - change if reqiuired
const int i2c_addr = 0x27;
int solenoid_pin = 11;
LiquidCrystal_I2C lcd(i2c_addr, 16,2);
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
float duration, distance_1, distance_2, penetration;
// Define Variables
float hum; //Stores humidity value
float temp; //Stores temperature value
void setup()
{
lcd.begin(16,2);
Serial.begin(9600);
dht.begin();
lcd.setCursor(2, 0);
lcd.print("MEASUREMENTS:");
duration = sonar.ping();
// Determine distance from duration
// Use 343 metres per second as speed of sound
distance_1 = (duration / 2) * 0.0343;
// Send results to Serial Monitor
if (distance_1 >= 400 || distance_1 <= 2) {
Serial.println("Out of range");
}
else {
Serial.print(distance_1);
Serial.println(" cm");
lcd.setCursor(0, 1);
lcd.print("D1:");
lcd.print(distance_1);
}
Serial.println(" ");
delay(100);
//solenoid code to push the botton for 5 seconds i.e 5 second hold
digitalWrite(solenoid_pin, LOW);
delay(100);
digitalWrite(solenoid_pin, HIGH);
delay(5000);
digitalWrite(solenoid_pin, LOW);
delay(1000);
duration = sonar.ping();
// Determine distance from duration
// Use 343 metres per second as speed of sound
distance_2 = (duration / 2) * 0.0343;
// Send results to Serial Monitor
if (distance_2 >= 400 || distance_2 <= 2) {
Serial.println("Out of range");
}
else {
Serial.print("distance_2 ");
Serial.print(distance_2);
Serial.print(" cm, ");
Serial.print("distance_1 ");
Serial.print(distance_1);
Serial.print(" cm, ");
lcd.setCursor(9, 1);
lcd.print("D2:");
lcd.print(distance_2);
delay(1000);
penetration=abs((distance_1)-(distance_2));
Serial.print("Penetration: ");
Serial.print(penetration);
Serial.print(" 1/10mm");
delay(1000);
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(5, 1);
lcd.print("P:");
lcd.print(penetration);
//lcd.setCursor(9, 1);
//lcd.print("T:");
//lcd.print(temp);
}
Serial.println(" ");
}
void loop()
{
}