Capstone Code
Capstone Code
h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#ifndef PASSWORD_H
#define PASSWORD_H
class Password {
public:
/**
* @param pass
*/
Password(char* pass);
/**
* @param pass
*/
void set(char* pass);
/**
* @param pass
* @return true
* @return false
*/
/**
* @param character
* @return true
* @return false
*/
/**
*/
void reset();
/**
* @return true
* @return false
*/
bool evaluate();
//char* getPassword();
//char* getGuess();
//operators
/**
*/
/**
*/
/**
*/
/**
*/
private:
char* target;
byte currentIndex;
};
#endif
Password::Password(char* pass) {
set(pass);
reset();
byte i = 0;
guess[i] = pass[i];
i++;
return evaluate();
if (currentIndex + 1 == MAX_PASSWORD_LENGTH) {
return false;
} else {
guess[currentIndex++] = character;
return true;
void Password::reset() {
currentIndex = 0;
guess[currentIndex] = STRING_TERMINATOR;
}
bool Password::evaluate() {
return true; // both strings ended and all previous characters are equal
(STRING_TERMINATOR == guessed)) {
pass = target[i];
guessed = guess[i];
set(pass);
return *this;
return *this;
#define buzzer 11
Servo servo;
byte a = 5;
byte maxPasswordLength = 6;
byte currentPasswordLength = 0;
char keys[ROWS][COLS] = {
};
byte rowPins[ROWS] = {2, 3, 4, 5};
void setup() {
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
servo.attach(10);
servo.write(50);
lcd.init();
lcd.backlight();
lcd.setCursor(3, 0);
lcd.print("WELCOME TO");
lcd.setCursor(0, 1);
delay(3000);
lcd.clear();
void loop() {
lcd.setCursor(1, 0);
lcd.print("ENTER PASSWORD");
if (key != NO_KEY) {
delay(60);
if (key == 'C') {
resetPassword();
if (value == true) {
doorlocked();
value = false;
dooropen();
value = true;
} else {
processNumberKey(key);
lcd.setCursor(a, 1);
lcd.print("*");
a++;
if (a == 11) {
a = 5;
currentPasswordLength++;
password.append(key);
if (currentPasswordLength == maxPasswordLength) {
doorlocked();
dooropen();
}
void dooropen() {
if (password.evaluate()) {
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
servo.write(50);
delay(100);
lcd.setCursor(0, 0);
lcd.print("CORRECT PASSWORD");
lcd.setCursor(0, 1);
lcd.print("DOOR OPENED");
delay(2000);
lcd.clear();
a = 5;
} else {
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
lcd.setCursor(0, 0);
lcd.print("WRONG PASSWORD!");
lcd.setCursor(0, 1);
delay(2000);
lcd.clear();
a = 5;
resetPassword();
void resetPassword() {
password.reset();
currentPasswordLength = 0;
lcd.clear();
a = 5;
void doorlocked() {
if (password.evaluate()) {
digitalWrite(buzzer, HIGH);
delay(300);
digitalWrite(buzzer, LOW);
servo.write(110);
delay(100);
lcd.setCursor(0, 0);
lcd.print("CORRECT PASSWORD");
lcd.setCursor(2, 1);
lcd.print("DOOR LOCKED");
delay(2000);
lcd.clear();
a = 5;
} else {
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
lcd.setCursor(0, 0);
lcd.print("WRONG PASSWORD!");
lcd.setCursor(0, 1);
delay(2000);
lcd.clear();
a = 5;
}
resetPassword();