// C++ code
//
#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
int seconds = 0;
int x = 0;
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
Servo servo_27;
Servo servo_26;
long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}
void setup() {
LCD.init();
LCD.backlight();
pinMode(23, INPUT);
pinMode(12, OUTPUT);
pinMode(14, OUTPUT);
servo_27.attach(27, 500, 2500);
LCD.setCursor(0, 0);
LCD.print("IoT Smart House");
LCD.setCursor(0, 1);
LCD.print("Door Is");
}
void loop()
{
x = 0.01723 * readUltrasonicDistance(23, 23);
if (x > 200) {
digitalWrite(12, HIGH);
digitalWrite(14, LOW);
servo_27.write(90);
LCD.setCursor(8, 1);
LCD.print("Open ");
} else {
digitalWrite(12, LOW);
digitalWrite(14, HIGH);
servo_27.write(0);
LCD.setCursor(8, 1);
LCD.print("Close");
}
delay(3000); // Wait for 3000 millisecond(s)
}