// Variable Declaration
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 14, 27, 26, 33, 32);
const int trigPin = 18;
const int echopin = 5;
const int Btn = 4;
const int relay = 25;
const int ImpulseDuration = 5000;
#define SOUND_SPEED 0.034;
long duration;
float distance;
int BtnStatus;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(relay, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echopin, INPUT);
pinMode(Btn, INPUT_PULLUP);
}
void loop() {
// Clear trigger & init btn
digitalWrite(trigPin, LOW);
digitalRead(Btn);
delay(2);
BtnStatus = digitalRead(Btn);
delay(10);
// Send pulse
digitalWrite(trigPin, HIGH);
delay(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echopin, HIGH);
distance = duration * 0.017;
lcd.setCursor(3,0);
lcd.println(distance);
if(BtnStatus != HIGH or distance > 300){
open();
delay(ImpulseDuration);
close();
}
else {
close();
delay(10);
}
// delay(100);
}
void open() {
digitalWrite(relay, HIGH);
}
void close() {
digitalWrite(relay, LOW);
}