When I press the "#" button, I want it to define a random 4-digit password for the password and this new password will be valid for 2 hours. I want that password will be invalid password on the system after 2 hours. I tried hard myself but unfortunately I couldn't do it, I need your help.
There is my code, and my Project.
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <Servo.h>
Servo servo;
LiquidCrystal lcd(9,8,7,6,5,4);
char password[4];
char pass[4],pass1[4];
int i=0;
char customKey=0;
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {A0,A1,A2,15};
byte colPins[COLS] = {10,A5,3};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
int led = 12;
int leds = 13;
int m11;
int m12;
void setup() {
servo.attach(2);
Serial.begin(9600);
pinMode(11, OUTPUT);
lcd.begin(16,2);
pinMode(led, OUTPUT);
pinMode(leds, OUTPUT);
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
lcd.print("Arduino");
Serial.print("Arduino");
lcd.setCursor(0,1);
lcd.print("doorlock");
Serial.print("doorlock");
delay(2000);
lcd.clear();
lcd.print("Enter Password:");
Serial.println("Enter Password:");
lcd.setCursor(0,1);
for(int j=0;j<4;j++)
EEPROM.write(j,j+49);
for(int j=0;j<4;j++)
pass[j]=EEPROM.read(j);
}
void loop() {
int lightValue = analogRead(A4);
lightValue = map(lightValue, 0, 1023, 0, 180);
servo.write(lightValue);
digitalWrite(11, LOW);
customKey = customKeypad.getKey();
if(customKey=='#')
change();
if (customKey)
{
password[i++]=customKey;
lcd.print(customKey);
Serial.print(customKey);
}
if(i==4)
{
delay(200);
for(int j=0;j<4;j++)
pass[j]=EEPROM.read(j);
if(!(strncmp(password, pass,4)))
{
digitalWrite(led, HIGH);
lcd.clear();
lcd.print("Accepted");
Serial.println("Accepted");
digitalWrite(11, HIGH);
delay(2000);
lcd.setCursor(0,1);
lcd.print("#Change Password");
Serial.println("#Change Password");
delay(2000);
lcd.clear();
lcd.print("Enter Password");
Serial.println("Enter Password");
lcd.setCursor(0,1);
i=0;
digitalWrite(led, LOW);
digitalWrite(leds, LOW);
}
else
{
digitalWrite(11, LOW);
digitalWrite(led, LOW);
digitalWrite(leds, HIGH);
lcd.clear();
lcd.print("WRONG PASSWORD");
Serial.println("WRONG PASSWORD");
lcd.setCursor(0,1);
lcd.print("#Change Password");
Serial.println("#Change Password");
delay(2000);
lcd.clear();
lcd.print("Enter Password:");
Serial.println("Enter Password:");
lcd.setCursor(0,1);
i=0;
digitalWrite(led, LOW);
digitalWrite(leds, LOW);
}
}
}
void change()
{
int j=0;
lcd.clear();
lcd.print("Enter Curr Pass");
Serial.println("Enter Curr Pass");
lcd.setCursor(0,1);
while(j<4)
{
char key=customKeypad.getKey();
if(key)
{
pass1[j++]=key;
lcd.print(key);
Serial.print(key);
}
key=0;
}
delay(500);
if((strncmp(pass1, pass, 4)))
{
lcd.clear();
lcd.print("WRONG PASSWORD...");
Serial.println("WRONG PASSWORD...");
lcd.setCursor(0,1);
lcd.print("Try Again");
Serial.println("Try Again");
delay(1000);
}
else
{
j=0;
lcd.clear();
lcd.print("Enter New Pass:");
Serial.println("Enter New Pass:");
lcd.setCursor(0,1);
while(j<4)
{
char key=customKeypad.getKey();
if(key)
{
pass[j]=key;
lcd.print(key);
Serial.print(key);
EEPROM.write(j,key);
j++;
}
}
lcd.print("Success..");
Serial.println("Success..");
delay(1000);
}
lcd.clear();
lcd.print("Enter Password:");
Serial.println("Enter Password:");
lcd.setCursor(0,1);
customKey=0;
}
DoorLock_Final.pdsprj.zip (46.6 KB)