#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Set the LCD I2C address and dimensions
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 5, 4, 3, 2 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Servo Sone;
int cursorNum = 2;
int cursorInput = 4;
int UserINTerface = 0;
char key;
String Password;
String ConfirmPass;
String userInputPass;
String PasswordButNewKnown;
String ConfirmPasswordButNewKnown;
String HelpNum = "0123456789";
String AuthNumCh;
//int Page = 0;
int triesLeft = 3;
bool canTypeNewPassword = true;
bool canTypeAuthNum = true;
bool autoLock = false;
bool known = false;
bool isA = false;
bool isD = false;
bool isSeven = false;
bool isOne = false;
bool isTwo = false;
bool isThree = false;
bool isFour = false;
bool simple = false;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Sone.attach(10);
Sone.write(0);
lcd.init(); // Initialize the LCD
lcd.backlight(); // Turn on the backlight
lcd.setCursor(0, 0); // Set the cursor to the top-left corner
UserINTerface = 0;
isA = false;
isD = false;
isSeven = false;
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
}
void loop() {
// put your main code here, to run repeatedly:
char keypressed = keypad.getKey();
key = keypressed;
if (key != NO_KEY && key == '1') tone(11, 523, 50);
else if (key != NO_KEY && key == '2') tone(11, 523, 50);
else if (key != NO_KEY && key == '3') tone(11, 523, 50);
else if (key != NO_KEY && key == '4') tone(11, 523, 50);
else if (key != NO_KEY && key == '5') tone(11, 523, 50);
else if (key != NO_KEY && key == '6') tone(11, 523, 50);
else if (key != NO_KEY && key == '7') tone(11, 523, 50);
else if (key != NO_KEY && key == '8') tone(11, 523, 50);
else if (key != NO_KEY && key == '9') tone(11, 523, 50);
else if (key != NO_KEY && key == '0') tone(11, 523, 50);
else if (key != NO_KEY && key == 'A') tone(11, 600, 50);
else if (key != NO_KEY && key == 'B') tone(11, 600, 50);
else if (key != NO_KEY && key == 'C') tone(11, 600, 50);
else if (key != NO_KEY && key == 'D') tone(11, 600, 50);
else if (key != NO_KEY && key == '*') tone(11, 200, 50);
else if (key != NO_KEY && key == '#') tone(11, 200, 50);
/*
if(Page != UserINTerface) {
Page = UserINTerface;
lcd.clear();
}
*/
if (UserINTerface == 0) start();
else if (UserINTerface == 1) newPass();
else if (UserINTerface == 2) confirmNewPass();
else if (UserINTerface == 3) Locking();
else if (UserINTerface == 4) NewPassAndConfirmNotSame();
else if (UserINTerface == 5) home();
else if (UserINTerface == 6) enterPassword();
else if (UserINTerface == 7) checkingPassword();
else if (UserINTerface == 8) Unlocking();
else if (UserINTerface == 9) WrongPass();
else if (UserINTerface == 10) homeButNoAUTOLOCK();
else if (UserINTerface == 11) WrongPassAndNOMORETRIES();
else if (UserINTerface == 12) WrongPassAndNOBONUS();
else if (UserINTerface == 13) WaitOneHOUR();
else if (UserINTerface == 14) ChangeAuthNum();
else if (UserINTerface == 15) Credits();
else if (UserINTerface == 17) checkPassToSetNew();
else if (UserINTerface == 18) newPassKnown();
else if (UserINTerface == 19) confirmNewPassKnown();
}
void start() {
Sone.write(0);
byte image14[8] = {B00011, B00111, B00110, B00110, B00000, B00000, B00000, B01111};
byte image15[8] = {B11111, B11111, B00000, B00000, B00000, B00000, B00000, B11111};
byte image16[8] = {B11000, B11110, B00110, B00110, B00110, B00110, B00110, B11110};
byte image30[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B01111, B00111};
byte image32[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B11110, B11100};
byte image31[8] = {B11111, B11111, B11111, B11011, B11111, B11111, B11111, B11111};
lcd.createChar(0, image14);
lcd.createChar(1, image15);
lcd.createChar(2, image16);
lcd.createChar(3, image30);
lcd.createChar(4, image32);
lcd.createChar(5, image31);
lcd.setCursor(13, 0);
lcd.write(byte(0));
lcd.setCursor(14, 0);
lcd.write(byte(1));
lcd.setCursor(15, 0);
lcd.write(byte(2));
lcd.setCursor(13, 1);
lcd.write(byte(3));
lcd.setCursor(15, 1);
lcd.write(byte(4));
lcd.setCursor(14, 1);
lcd.write(byte(5));
lcd.setCursor(0,0);
lcd.print("Unlocked !");
lcd.setCursor(0,1);
lcd.print("# to lock");
if (key != NO_KEY && key == '#') {
Serial.print("Key Pressed: ");
Serial.println(key);
lcd.clear();
UserINTerface = 1;
Serial.println("Transition to Case 1");
Serial.println(UserINTerface);
}
}
void newPass() {
byte image15[8] = {B00000, B00000, B00000, B11011, B10010, B01001, B11011, B00000};
lcd.createChar(0, image15);
lcd.setCursor(11, 0);
lcd.write(byte(0));
lcd.setCursor(0,0);
lcd.print("Type new pa");
lcd.setCursor(12,0);
lcd.print("word");
if (key != NO_KEY && key != '*' && key != '#' && canTypeNewPassword) {
cursorInput += 1;
lcd.setCursor(cursorInput,1);
lcd.print(key);
Password += key;
Serial.println(Password);
}
if (cursorInput == 10) {
canTypeNewPassword = false;
delay(100);
lcd.clear();
canTypeNewPassword = true;
cursorInput = 4;
UserINTerface = 2;
}
}
void confirmNewPass() {
lcd.setCursor(0,0);
lcd.print("Confirm Password");
if (key != NO_KEY && key != '*' && key != '#' && canTypeNewPassword) {
cursorInput += 1;
lcd.setCursor(cursorInput,1);
lcd.print(key);
ConfirmPass += key;
Serial.println(cursorInput);
}
if (cursorInput == 10) {
canTypeNewPassword = false;
delay(100);
lcd.clear();
canTypeNewPassword = true;
cursorInput = 4;
if (ConfirmPass == Password) {
UserINTerface = 3;
ConfirmPass = "";
} else {
UserINTerface = 4;
ConfirmPass = "";
Password = "";
}
}
}
void Locking() {
Sone.write(180);
byte unlockedIcon[8] = {B00000, B01110, B10001, B10001, B00001, B11111, B11011, B01110};
byte startBarIcon[8] = {B00000, B00000, B11111, B10000, B10000, B10000, B11111, B00000};
byte midBarIcon[8] = {B00000, B00000, B11111, B00000, B00000, B00000, B11111, B00000};
byte endBarIcon[8] = {B00000, B00000, B11111, B00001, B00001, B00001, B11111, B00000};
byte lockedIcon[8] = {B00000, B01110, B10001, B10001, B10001, B11111, B11011, B01110};
byte fillBarIcon[8] = {B00000, B00000, B11111, B11111, B11111, B11111, B11111, B00000};
lcd.createChar(0, unlockedIcon);
lcd.createChar(1, startBarIcon);
lcd.createChar(2, midBarIcon);
lcd.createChar(3, endBarIcon);
lcd.createChar(4, lockedIcon);
lcd.createChar(5, fillBarIcon);
lcd.setCursor(3, 1);
lcd.write(byte(0));
lcd.setCursor(4, 1);
lcd.write(byte(1));
lcd.setCursor(5, 1);
lcd.write(byte(2));
lcd.setCursor(5, 1);
lcd.write(byte(2));
lcd.setCursor(6, 1);
lcd.write(byte(2));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(2));
lcd.setCursor(10, 1);
lcd.write(byte(2));
lcd.setCursor(11, 1);
lcd.write(byte(3));
lcd.setCursor(12, 1);
lcd.write(byte(4));
lcd.setCursor(5,0);
lcd.print("Locked");
delay(100);
lcd.setCursor(4, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(5, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(6, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(7, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(8, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(9, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(10, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(11, 1);
lcd.write(byte(5));
delay(100);
lcd.clear();
UserINTerface = 5;
}
void NewPassAndConfirmNotSame() {
lcd.setCursor(0,0);
lcd.print("Password didn't");
lcd.setCursor(3,1);
lcd.print("Match !!");
tone(11, 50, 30);
delay(40);
tone(11, 50, 30);
delay(3000);
lcd.clear();
if (!known) {
UserINTerface = 0;
} else if (known) {
isA = false;
isD = false;
isSeven = false;
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
UserINTerface = 10;
}
}
void home() {
byte image12[8] = {B00000, B00000, B00001, B00011, B00110, B00110, B00110, B01111};
byte image13[8] = {B00000, B00000, B11111, B11111, B00000, B00000, B00000, B11111};
byte image14[8] = {B00000, B00000, B10000, B11000, B01100, B01100, B01100, B11110};
byte image30[8] = {B11110, B11110, B11110, B11110, B11110, B11110, B11100, B00000};
byte image28[8] = {B01111, B01111, B01111, B01111, B01111, B01111, B00111, B00000};
byte image29[8] = {B11111, B11111, B11111, B11011, B11111, B11111, B11111, B00000};
byte crossIco[8] = {B00000, B00000, B10001, B01010, B00100, B01010, B10001, B00000};
byte tickIco[8] = {B00000, B00000, B00001, B00010, B10100, B01000, B00000, B00000};
lcd.createChar(0, image12);
lcd.createChar(1, image13);
lcd.createChar(2, image14);
lcd.createChar(3, image30);
lcd.createChar(4, image28);
lcd.createChar(5, image29);
lcd.createChar(6, crossIco);
lcd.createChar(7, tickIco);
lcd.setCursor(13, 0);
lcd.write(byte(0));
lcd.setCursor(14, 0);
lcd.write(byte(1));
lcd.setCursor(15, 0);
lcd.write(byte(2));
lcd.setCursor(15, 1);
lcd.write(byte(3));
lcd.setCursor(13, 1);
lcd.write(byte(4));
lcd.setCursor(14, 1);
lcd.write(byte(5));
if (!autoLock) {
lcd.setCursor(11, 0);
lcd.write(byte(6));
} else {
lcd.setCursor(11, 0);
lcd.write(byte(7));
}
lcd.setCursor(0,0);
lcd.print("*Auto Lock");
lcd.setCursor(0,1);
lcd.print("#To Unlock");
if (key != NO_KEY && key == '#') {
Serial.print("Go type pass");
lcd.clear();
UserINTerface = 6;
}
if (key != NO_KEY && key == '*' && autoLock) {
autoLock = false;
} else if (key != NO_KEY && key == '*' && !autoLock) {
autoLock = true;
}
}
void enterPassword() {
lcd.setCursor(1,0);
lcd.print("Enter Password");
if (key != NO_KEY && key != '*' && key != '#' && canTypeNewPassword) {
cursorInput += 1;
lcd.setCursor(cursorInput,1);
lcd.print(key);
userInputPass += key;
Serial.println(userInputPass);
}
if (cursorInput == 10) {
canTypeNewPassword = false;
delay(100);
lcd.clear();
canTypeNewPassword = true;
cursorInput = 4;
UserINTerface = 7;
}
}
void checkingPassword() {
byte unlockedIcon[8] = {B00000, B01110, B10001, B10001, B00001, B11111, B11011, B01110};
byte startBarIcon[8] = {B00000, B00000, B11111, B10000, B10000, B10000, B11111, B00000};
byte midBarIcon[8] = {B00000, B00000, B11111, B00000, B00000, B00000, B11111, B00000};
byte endBarIcon[8] = {B00000, B00000, B11111, B00001, B00001, B00001, B11111, B00000};
byte lockedIcon[8] = {B00000, B01110, B10001, B10001, B10001, B11111, B11011, B01110};
byte fillBarIcon[8] = {B00000, B00000, B11111, B11111, B11111, B11111, B11111, B00000};
lcd.createChar(0, unlockedIcon);
lcd.createChar(1, startBarIcon);
lcd.createChar(2, midBarIcon);
lcd.createChar(3, endBarIcon);
lcd.createChar(4, lockedIcon);
lcd.createChar(5, fillBarIcon);
lcd.setCursor(3, 1);
lcd.write(byte(4));
lcd.setCursor(4, 1);
lcd.write(byte(1));
lcd.setCursor(5, 1);
lcd.write(byte(2));
lcd.setCursor(5, 1);
lcd.write(byte(2));
lcd.setCursor(6, 1);
lcd.write(byte(2));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(2));
lcd.setCursor(10, 1);
lcd.write(byte(2));
lcd.setCursor(11, 1);
lcd.write(byte(3));
lcd.setCursor(12, 1);
lcd.write(byte(0));
lcd.setCursor(5,0);
lcd.print("Wait..");
delay(500);
lcd.setCursor(4, 1);
lcd.write(byte(5));
delay(500);
lcd.setCursor(5, 1);
lcd.write(byte(5));
delay(500);
lcd.setCursor(6, 1);
lcd.write(byte(5));
delay(500);
lcd.setCursor(7, 1);
lcd.write(byte(5));
delay(1000);
lcd.setCursor(8, 1);
lcd.write(byte(5));
delay(1000);
lcd.setCursor(9, 1);
lcd.write(byte(5));
delay(500);
lcd.setCursor(10, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(11, 1);
lcd.write(byte(5));
delay(100);
lcd.clear();
if (userInputPass == Password) {
UserINTerface = 8;
userInputPass = "";
} else {
UserINTerface = 9;
userInputPass = "";
}
}
void Unlocking() {
Sone.write(0);
byte unlockedIcon[8] = {B00000, B01110, B10001, B10001, B00001, B11111, B11011, B01110};
byte startBarIcon[8] = {B00000, B00000, B11111, B10000, B10000, B10000, B11111, B00000};
byte midBarIcon[8] = {B00000, B00000, B11111, B00000, B00000, B00000, B11111, B00000};
byte endBarIcon[8] = {B00000, B00000, B11111, B00001, B00001, B00001, B11111, B00000};
byte lockedIcon[8] = {B00000, B01110, B10001, B10001, B10001, B11111, B11011, B01110};
byte fillBarIcon[8] = {B00000, B00000, B11111, B11111, B11111, B11111, B11111, B00000};
lcd.createChar(0, unlockedIcon);
lcd.createChar(1, startBarIcon);
lcd.createChar(2, midBarIcon);
lcd.createChar(3, endBarIcon);
lcd.createChar(4, lockedIcon);
lcd.createChar(5, fillBarIcon);
lcd.setCursor(3, 1);
lcd.write(byte(4));
lcd.setCursor(4, 1);
lcd.write(byte(1));
lcd.setCursor(5, 1);
lcd.write(byte(2));
lcd.setCursor(5, 1);
lcd.write(byte(2));
lcd.setCursor(6, 1);
lcd.write(byte(2));
lcd.setCursor(7, 1);
lcd.write(byte(2));
lcd.setCursor(8, 1);
lcd.write(byte(2));
lcd.setCursor(9, 1);
lcd.write(byte(2));
lcd.setCursor(10, 1);
lcd.write(byte(2));
lcd.setCursor(11, 1);
lcd.write(byte(3));
lcd.setCursor(12, 1);
lcd.write(byte(0));
lcd.setCursor(4,0);
lcd.print("Unlocked");
tone(11, 1000, 50);
delay(60);
tone(11, 1500, 100);
delay(100);
lcd.setCursor(4, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(5, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(6, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(7, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(8, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(9, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(10, 1);
lcd.write(byte(5));
delay(100);
lcd.setCursor(11, 1);
lcd.write(byte(5));
delay(100);
if (autoLock) {
delay(10000);
Sone.write(180);
lcd.clear();
UserINTerface = 5;
} else if (!autoLock) {
lcd.clear();
isA = false;
isD = false;
isSeven = false;
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
UserINTerface = 10;
}
}
void WrongPass() {
lcd.setCursor(1,0);
lcd.print("Wrong Password");
triesLeft -= 1;
tone(11, 50, 30);
delay(40);
tone(11, 50, 30);
delay(100);
if (triesLeft == 5) {
lcd.setCursor(1,1);
lcd.print("0/1 tries left");
delay(5000);
lcd.clear();
UserINTerface = 12;
}
if (triesLeft == 3) {
lcd.setCursor(1,1);
lcd.print("3/3 tries left");
delay(5000);
lcd.clear();
UserINTerface = 5;
} else if (triesLeft == 2) {
lcd.setCursor(1,1);
lcd.print("2/3 tries left");
delay(5000);
lcd.clear();
UserINTerface = 5;
} else if (triesLeft == 1) {
lcd.setCursor(1,1);
lcd.print("1/3 tries left");
delay(5000);
lcd.clear();
UserINTerface = 5;
} else if (triesLeft == 0) {
lcd.setCursor(1,1);
lcd.print("0/3 tries left");
delay(5000);
lcd.clear();
UserINTerface = 11;
}
}
void homeButNoAUTOLOCK() {
byte image14[8] = {B00011, B00111, B00110, B00110, B00000, B00000, B00000, B01111};
byte image15[8] = {B11111, B11111, B00000, B00000, B00000, B00000, B00000, B11111};
byte image16[8] = {B11000, B11110, B00110, B00110, B00110, B00110, B00110, B11110};
byte image30[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B01111, B00111};
byte image32[8] = {B11111, B11111, B11111, B11111, B11111, B11111, B11110, B11100};
byte image31[8] = {B11111, B11111, B11111, B11011, B11111, B11111, B11111, B11111};
lcd.createChar(0, image14);
lcd.createChar(1, image15);
lcd.createChar(2, image16);
lcd.createChar(3, image30);
lcd.createChar(4, image32);
lcd.createChar(5, image31);
lcd.setCursor(13, 0);
lcd.write(byte(0));
lcd.setCursor(14, 0);
lcd.write(byte(1));
lcd.setCursor(15, 0);
lcd.write(byte(2));
lcd.setCursor(13, 1);
lcd.write(byte(3));
lcd.setCursor(15, 1);
lcd.write(byte(4));
lcd.setCursor(14, 1);
lcd.write(byte(5));
lcd.setCursor(0,0);
lcd.print("#To Lock");
lcd.setCursor(0,1);
lcd.print("*New Password");
known = true;
triesLeft = 3;
if (key != NO_KEY && key == '#') {
lcd.clear();
UserINTerface = 3;
} else if (key != NO_KEY && key == '*') {
lcd.clear();
UserINTerface = 17;
}
if (key != NO_KEY && key == 'A') {
isA = true;
} else if (key != NO_KEY && key == 'D' && isA) {
isD = true;
} else if (key != NO_KEY && key == '7' && isD) {
isSeven = true;
lcd.clear();
isA = false;
isD = false;
isSeven = false;
UserINTerface = 14;
}
if (key != NO_KEY && key == '1') {
isOne = true;
} else if (key != NO_KEY && key == '2' && isOne) {
isTwo = true;
} else if (key != NO_KEY && key == '3' && isTwo) {
isThree = true;
} else if (key != NO_KEY && key == '4' && isThree) {
isFour = true;
lcd.clear();
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
UserINTerface = 15;
}
}
void WrongPassAndNOMORETRIES() {
lcd.setCursor(0,0);
lcd.print("Wrong Password !");
lcd.setCursor(0,1);
lcd.print("No More Tries !");
delay(4000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("30s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("29s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("28s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("27s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("26s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("25s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("24s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("23s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("22s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("21s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("20s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("19s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("18s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("17s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("16s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("15s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("14s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("13s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("12s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("11s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("10s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("9s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("8s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("7s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("6s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("5s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("4s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("3s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("2s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("1s");
tone(11, 2500, 10);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wait :");
lcd.setCursor(7,1);
lcd.print("0s");
tone(11, 2500, 10);
delay(1000);
triesLeft = 6;
lcd.clear();
UserINTerface = 5;
}
void WrongPassAndNOBONUS() {
if (!simple) {
lcd.setCursor(1,0);
lcd.print("Are you sure ?");
delay(1000);
lcd.setCursor(0,1);
lcd.print("Just 1 try left!");
delay(5000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("If yes and wrong");
lcd.setCursor(2,1);
lcd.print("password..");
delay(5000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("you should wait");
lcd.setCursor(4,1);
lcd.print("one hour");
delay(5000);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("Need help?");
lcd.setCursor(3,1);
lcd.print(HelpNum);
delay(10000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("1. Contuneu");
lcd.setCursor(0,1);
lcd.print("2. Back");
simple = true;
}
if (key != NO_KEY && key == '1') {
lcd.clear();
simple = false;
lcd.setCursor(0,0);
lcd.print("Wrong Password !");
delay(1000);
triesLeft = 3;
UserINTerface = 13;
} else if (key != NO_KEY && key == '2') {
lcd.clear();
simple = false;
triesLeft = 6;
UserINTerface = 5;
}
}
void WaitOneHOUR() {
for (int h = 59; h > 0; h--) {
lcd.setCursor(0,0);
lcd.print("you should wait");
lcd.setCursor(5,1);
lcd.print(h);
lcd.setCursor(7,1);
lcd.print("min");
tone(11, 2500, 10);
delay(60000);
}
lcd.clear();
UserINTerface = 5;
}
void ChangeAuthNum() {
lcd.setCursor(0,0);
lcd.print("Author Number :");
if (key != NO_KEY && key != '*' && key != '#' && canTypeAuthNum) {
cursorNum += 1;
lcd.setCursor(cursorNum,1);
lcd.print(key);
AuthNumCh += key;
Serial.println(AuthNumCh);
}
if (cursorNum == 12) {
canTypeAuthNum = false;
delay(100);
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Changed");
lcd.setCursor(2,1);
lcd.print("Successfully");
HelpNum = AuthNumCh;
delay(2000);
AuthNumCh = "";
lcd.clear();
canTypeAuthNum = true;
cursorNum = 2;
UserINTerface = 10;
}
}
void Credits() {
lcd.setCursor(1, 0);
lcd.print("Credits = >");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Created by :");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Only one person!");
delay(500);
lcd.setCursor(7, 1);
lcd.print("is");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Yahya Abderahman");
delay(1000);
lcd.setCursor(3, 1);
lcd.print("Bourouina");
delay(2000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Copyright 2023");
lcd.setCursor(0, 1);
lcd.print("YahyaCodesStudio");
startMusica();
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("YahyaCodesStudio");
lcd.setCursor(0, 1);
lcd.print(" All rights");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" All rights");
lcd.setCursor(0, 1);
lcd.print(" reserved");
delay(2000);
lcd.clear();
UserINTerface = 10;
}
void startMusica() {
tone(11, 294, 250);
delay(250);
tone(11, 0, 125);
delay(125);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 311, 125);
delay(125);
tone(11, 0, 125);
delay(125);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 392, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 349, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 392, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 392, 250);
delay(250);
tone(11, 0, 125);
delay(125);
tone(11, 440, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 349, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 311, 125);
delay(125);
tone(11, 0, 125);
delay(125);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 250);
delay(250);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 392, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 392, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 392, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 440, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 349, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 330, 250);
delay(250);
tone(11, 0, 62);
delay(62);
tone(11, 294, 250);
delay(250);
tone(11, 0, 500);
delay(500);
}
//void [UserINTerface] $16 {TCCR0A ::highByte(goto:17)}; *EEPROM /**/
void checkPassToSetNew() {
lcd.setCursor(1,0);
lcd.print("Enter Password");
if (key != NO_KEY && key != '*' && key != '#' && canTypeNewPassword) {
cursorInput += 1;
lcd.setCursor(cursorInput,1);
lcd.print(key);
userInputPass += key;
Serial.println(userInputPass);
}
if (cursorInput == 10) {
canTypeNewPassword = false;
delay(100);
lcd.clear();
canTypeNewPassword = true;
cursorInput = 4;
UserINTerface = 7;
lcd.clear();
if (userInputPass == Password) {
tone(11, 1000, 50);
delay(60);
tone(11, 1500, 100);
UserINTerface = 18;
userInputPass = "";
} else {
isA = false;
isD = false;
isSeven = false;
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
tone(11, 50, 30);
delay(40);
tone(11, 50, 30);
UserINTerface = 10;
userInputPass = "";
}
}
}
void newPassKnown() {
byte image15[8] = {B00000, B00000, B00000, B11011, B10010, B01001, B11011, B00000};
lcd.createChar(0, image15);
lcd.setCursor(11, 0);
lcd.write(byte(0));
lcd.setCursor(0,0);
lcd.print("Type new pa");
lcd.setCursor(12,0);
lcd.print("word");
if (key != NO_KEY && key != '*' && key != '#' && canTypeNewPassword) {
cursorInput += 1;
lcd.setCursor(cursorInput,1);
lcd.print(key);
PasswordButNewKnown += key;
Serial.println(PasswordButNewKnown);
}
if (cursorInput == 10) {
canTypeNewPassword = false;
delay(100);
lcd.clear();
canTypeNewPassword = true;
cursorInput = 4;
UserINTerface = 19;
}
}
void confirmNewPassKnown() {
lcd.setCursor(0,0);
lcd.print("Confirm Password");
if (key != NO_KEY && key != '*' && key != '#' && canTypeNewPassword) {
cursorInput += 1;
lcd.setCursor(cursorInput,1);
lcd.print(key);
ConfirmPasswordButNewKnown += key;
Serial.println(cursorInput);
}
if (cursorInput == 10) {
canTypeNewPassword = false;
delay(100);
lcd.clear();
canTypeNewPassword = true;
cursorInput = 4;
if (ConfirmPasswordButNewKnown == PasswordButNewKnown) {
isA = false;
isD = false;
isSeven = false;
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
tone(11, 1000, 50);
delay(60);
tone(11, 1500, 100);
UserINTerface = 10;
ConfirmPasswordButNewKnown = "";
Password = PasswordButNewKnown;
delay(10);
PasswordButNewKnown = "";
} else {
isA = false;
isD = false;
isSeven = false;
isOne = false;
isTwo = false;
isThree = false;
isFour = false;
tone(11, 50, 30);
delay(40);
tone(11, 50, 30);
UserINTerface = 10;
ConfirmPasswordButNewKnown = "";
PasswordButNewKnown = "";
}
}
}