/* CODE FOR PENETRATION TEST OF BITUMEN*/
// Include DHT Libraries from Adafruit
// Dependant upon Adafruit_Sensors Library
#include "DHT.h";
// Include NewPing Library
#include "NewPing.h"
// include the library code:
#include <LiquidCrystal_I2C.h>
// Define Constants
#define DHTPIN 7 // DHT-22 Output Pin connection
#define DHTTYPE DHT22 // DHT Type is DHT 22 (AM2302)
#define TRIGGER_PIN 10
#define ECHO_PIN 12
#define MAX_DISTANCE 400
// Define I2C Address - change if reqiuired
const int i2c_addr = 0x27;
int solenoid_pin = 13;
LiquidCrystal_I2C lcd(i2c_addr, 16,2);
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
// Define Variables
float penetration; // Stores calculated penetration in cm
float distance_1; // Stores calculated distance in cm
float hum; // Stores humidity value in percent
float temp; // Stores temperature value in Celcius
float duration; // Stores HC-SR04 pulse duration value
float distance_2; // Stores calculated distance in cm
float soundsp; // Stores calculated speed of sound in M/S
float soundcm; // Stores calculated speed of sound in cm/ms
int iterations = 5;
// Initialize DHT sensor for normal 16mhz Arduino
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
Serial.begin (9600);
pinMode(solenoid_pin, OUTPUT);
dht.begin();
// Print a message to the LCD.
lcd.setCursor(2, 0);
lcd.print("MEASUREMENTS:");
// measurement of first distance i.e initial position of nidle.
delay(500); // Delay so DHT-11 OR 22 sensor can stabalize
hum = dht.readHumidity(); // Get Humidity value
temp= dht.readTemperature(); // Get Temperature value
// Calculate the Speed of Sound in M/S
soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
// Convert to cm/ms
soundcm = soundsp / 10000;
duration = sonar.ping_median(iterations);
// Calculate the distance
distance_1 = (duration / 2) * soundcm;
if (distance_1 >= 400 || distance_1 <= 2)
{
Serial.print("Out of range!");
}
else
{
Serial.print(" ");
//delay(500);
}
Serial.println(" ");
//solenoid code to push the botton for 5 seconds i.e 5 second hold
digitalWrite(solenoid_pin, HIGH);
delay(5000);
digitalWrite(solenoid_pin, LOW);
delay(100);
}
void loop()
{
// measurement of second distance i.e Final position of nidle.
delay(500); // Delay so DHT-22 OR 11 sensor can stabalize
hum = dht.readHumidity(); // Get Humidity value
temp= dht.readTemperature(); // Get Temperature value
// Calculate the Speed of Sound in M/S
soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
// Convert to cm/ms
soundcm = soundsp / 10000;
duration = sonar.ping_median(iterations);
// Calculate the distance
distance_2 = (duration / 2) * soundcm;
// Send results to Serial Monitor
// 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("Distance1: ");
Serial.print( distance_1);
Serial.print(" cm, ");
Serial.print(" Distance2: ");
if (distance_2 >= 400 || distance_2 <= 2)
{
lcd.clear();
Serial.print("Out of range ");
Serial.println("repeat experiment value out of range!!!");
lcd.setCursor(0, 2);
lcd.print("out of range!");
}
else
{
Serial.print( distance_2);
Serial.print(" cm, ");
delay(500);
penetration=abs((distance_1)-(distance_2));
Serial.print("Penetration: ");
Serial.print(penetration);
Serial.print(" cm");
lcd.setCursor(0, 1);
lcd.print("P:");
lcd.print(penetration);
lcd.setCursor(9, 1);
lcd.print("T:");
lcd.print(temp);
}
Serial.println(" ");
}