#include <LiquidCrystal.h>
#include <Servo.h>
#include <EEPROM.h>
// Assign pins for LCD Screen
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Servo servo;
// Setup Code
void setup() {
// Initialize LCD and print message
lcd.begin(16, 2);
lcd.print("ENEL 301");
delay(500);
lcd.clear();
// Begin serial for debugging
Serial.begin(9600);
Serial.println("SERIAL");
// TRIG
pinMode(47, OUTPUT);
// ECHO
pinMode(49,INPUT);
// PWM
pinMode(45, OUTPUT);
servo.attach(45);
}
// Main Code
void loop() {
// Get Time from Sensor
delayMicroseconds(2);
digitalWrite(47, HIGH);
delayMicroseconds(10);
digitalWrite(47, LOW);
double time = pulseIn(49, HIGH);
double cm = (time*0.017);
lcd.print("DISTANCE: "+String(cm));
if (Serial.available()){
int input = Serial.readStringUntil('\n').toInt();
EEPROM.write(0,input);
}
double distance = EEPROM.read(0);
Serial.print(distance);
if (cm <= distance){
lcd.setCursor(0, 1);
lcd.print("OPEN");
servo.write(180);
delay(500);
lcd.clear();
}
else{
lcd.setCursor(0, 1);
lcd.print("CLOSED");
servo.write(0);
delay(500);
lcd.clear();
}
}