#include <LiquidCrystal.h>
#include <Servo.h>
#include <EEPROM.h>
const int rs = 33, en = 35, d4 = 25, d5 = 27, d6 = 29, d7 = 31;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Servo door;
int trig = 34;
int echo = 32;
int threshold = 100;
float receiveSend() {
delayMicroseconds(24000);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
float time = pulseIn(echo, HIGH);
float distance = (0.5 * time * 0.00034);
return(distance);
}
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
door.attach(39);
threshold = EEPROM.read(0);
}
void loop() {
//threshold = EEPROM.read(0);
if (Serial.available() > 0) {
int enteredThreshold = Serial.readStringUntil("\n").toInt();
EEPROM.write(0, enteredThreshold);
}
Serial.println(threshold);
Serial.println("\n");
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
float time = pulseIn(echo, HIGH);
int distance = (0.5 * time * 0.034);
if (distance != 0.00) {
int distancePrint = distance;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print("cm");
if (distance < threshold) {
door.write(90);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print("cm");
lcd.setCursor(0, 1);
lcd.print("Open");
}
else if (distance >= 100) {
door.write(0);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print("cm");
lcd.setCursor(0, 1);
lcd.print("Closed");
}
}
}