ultrasonic sensor in code not working
the code is supposed to be if correct password enterd door(servo) will open and led on and sensor will detect the person passing through door. until no one is detected by sensor door will close and led will turn off i also tried integrating outside code but remains the same .
#include <SR04.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define Password_Length 5
Servo myservo;
LiquidCrystal_I2C lcd(0x27, 16, 2);
int pos = 0;
int LED = 13;
int trigPin = 11;
int echoPin = 10;
long distance;
long duration;
char Data[Password_Length];
char Master[Password_Length] = "1234";
byte data_count = 0, master_count = 0;
bool Pass_is_good;
bool door = false;
char customKey;
/*---preparing keypad---*/
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {0, 1, 2, 3};
byte colPins[COLS] = {4, 5, 6, 7};
Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
/*--- Main Action ---*/
void setup()
{
myservo.attach(9);
ServoClose();
lcd.begin(16, 2);
lcd.backlight();
lcd.print("Protected Door");
loading("Loading");
lcd.clear();
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
if (door == true)
{
customKey = customKeypad.getKey();
if (customKey == '#')
{
lcd.clear();
ServoClose();
lcd.print("Door is closed");
delay(3000);
door = false;
}
}
else
Open();
}
void loading(char msg[])
{
lcd.setCursor(0, 1);
lcd.print(msg);
for (int i = 0; i < 9; i++)
{
delay(1000);
lcd.print(".");
}
}
void clearData()
{
while (data_count != 0)
{
Data[data_count--] = 0;
}
return;
}
void ServoClose()
{
for (pos = 90; pos >= 0; pos -= 10)
{
myservo.write(pos);
digitalWrite(LED, 0);
delay(15);
}
}
void ServoOpen()
{
for (pos = 0; pos <= 90; pos += 10)
{
myservo.write(pos);
digitalWrite(LED, 1);
delay(15);
}
}
v
oid ultra_sonic()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration*0.034/2;
}
void Open()
{
lcd.setCursor(0, 0);
lcd.print("Enter Password");
customKey = customKeypad.getKey();
if (customKey)
{
Data[data_count] = customKey;
lcd.setCursor(data_count, 1);
lcd.print(Data[data_count]);
data_count++;
}
if (data_count == Password_Length - 1)
{
Data[data_count] = '\0'; // Null-terminate the data
if (strcmp(Data, Master) == 0)
{
lcd.clear();
ServoOpen();
lcd.print(" Door is Open ");
door = true;
delay(5000);
loading("Waiting");
lcd.clear();
lcd.print(" Time is up! ");
delay(1000);
ServoClose();
door = false;
}
else
{
lcd.clear();
lcd.print(" Wrong Password ");
door = false;
}
delay(1000);
lcd.clear();
clearData();
}
}