#include<LiquidCrystal.h>
#include<Servo.h>
#include <Keypad.h>
#include<Arduino.h>
LiquidCrystal lcd(12,11,7,6,5,4);
const byte ROWs = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'O','0','#'}
};
byte rowPins[ROWS] = {A0,A1,A2,A3};
byte colPins[COLS] = {3,2,1};
Keypad kpd = keypad(makeKeymap(keys),rowPins,colPins,ROWs,COLS);
const unsigned long password = 16072003;
long Number = -1;
char key,key1;
boolean result = false, result1 = false;
int mode;
const int Button = 13;
int hide = 0;
Servo myServo;
int pos = 0;
const int trigPin = 10;
const int echoPin = 8;
int duration;
int D_cm;
void setup(){
Serial.begin(9600);
lcd.begin(16,2);
pinMode(trigPin, INPUT);
pinMode(echoPin, OUTPUT);
pinMode(Button, INPUT_PULLUP);
myServo.attach(10);
}
void OpenDoor(){
for(pos=0; pos<=90; pos++) {
myServo.write(pos);
delay(15);
}
}
void CloseDoor(){
for(pos=90; pos>=0; pos--) {
myServo.write(pos);
delay(15);
}
}
void Measure_Distance(){
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
D_cm = duration / 58;
}
void EnterPassword(){
if(key == '0'){
if(Number == 0) Number = 0;
else Number = Number*10 + 0;
}
if(key == '1'){
if(Number == 0) Number = 1;
else Number = Number*10 + 1;
}
if(key == '2'){
if(Number == 0) Number = 2;
else Number = Number*10 + 2;
}
if(key == '3'){
if(Number == 0) Number = 3;
else Number = Number*10 + 3;
}
if(key == '4'){
if(Number == 0) Number = 4;
else Number = Number*10 + 4;
}
if(key == '5'){
if(Number == 0) number = 5;
else Number = Number*10 + 5;
}
if(key == '6'){
if(Number == 0) Number = 6;
else Number = Number*10 + 6;
}
if(key == '7'){
if(Number == 0) Number = 7;
else Number = Number*10 + 7;
}
if(key == '8'){
if(Number == 0) Number = 8;
else Number = Number*10 + 8;
}
if(key == '9'){
if(Number == 0) Number = 9;
else Number = Number*10 + 9;
}
if(key == 'O'){
Number = 0;
result = false;
}
if(key == '#'){
result = true;
}
}
void DisplayLCD(){
key = kpd.getKey();
EnterPassword();
lcd.setCursor(0,0);
}
void PressToEnter(){
if(key1 == '0' || key1 == '1' || key1 == '2' || key1 == '3' || key1 == '4' || key1 == '5' || key1 == '6' || key1 == '7' || key1 == '8' || key1 == '9' || key1 == 'O'){
mode = 0;
}
if(key1 == '#'){
mode = 1;
lcd.clear();
}
if(mode == 1){
lcd.setCursor(0,0);
lcd.print("Enter password");
lcd.setCursor(3,1);
lcd.print("[");
lcd.setCursor(12,1);
lcd.print("]");
}
}
void DisplayPassword(){
if(Number>=0 && Number<10){
lcd.setCursor(4,1);
lcd.print("*");
}
if(Number>=10 && Number<100){
lcd.setCursor(4,1);
lcd.print("**");
}
if(Number>=100 && Number<1000){
lcd.setCursor(4,1);
lcd.print("***");
}
if(Number>=1000 && Number<10000){
lcd.setCursor(4,1);
lcd.print("****");
}
if(Number>=10000 && Number<10000){
lcd.setCursor(4,1);
lcd.print("*****");
}
if(Number>=10000 && Number<100000){
lcd.setCursor(4,1);
lcd.print("******");
}
if(Number>=100000 && Number<1000000){
lcd.setCursor(4,1);
lcd.print("*******");
}
if(Number>=1000000 && Number<10000000){
lcd.setCursor(4,1);
lcd.print("********");
}
}
void HiddenPassword(){
if(digitalRead(Button) == LOW){
delay(20);
if(digitalRead(Button) == LOW){
hide++;
if(hide == 2) hide = 0;
}
}
while(digitalRead(Button) == LOW);
}
void loop(){
key = kpd.getKey();
key1 = kpd.getKey();
MeasureDistance();
if(D_cm < 5) {
lcd.setCursor(0,0);
lcd.print("WELCOME");
lcd.setCursor(0,1);
lcd.print("Press # to get in");
PressToEnter();
Enter
}
}