#include #include #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); Password password = Password("1337"); const byte ROWS = 4; // Four rows const byte COLS = 4; // Four columns // Define the Keymap char keys[ROWS][COLS] = { {'1', '2', '3', 'A',}, {'4', '5', '6', 'B',}, {'7', '8', '9', 'C',}, {'*', '0', ' ', 'D',} }; // Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins. byte rowPins[ROWS] = {39, 38, 37, 36}; //connect to the row pinouts of the keypad byte colPins[COLS] = {43, 42, 41, 40}; //connect to the column pinouts of the keypad const int buttonPin = 52; int buttonState = 0; // Create the Keypad Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); #define ledPin 13 void setup() { lcd.begin(16, 2); pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // sets the LED on Serial.begin(9600); keypad.addEventListener(keypadEvent); //add an event listener for this keypad keypad.setDebounceTime(250); } void loop() { keypad.getKey(); buttonState = digitalRead(buttonPin); // check if the pushbutton is pressed. // if it is, the buttonState is HIGH: if (buttonState == HIGH) { // turn LED on: } else { // turn LED off: lcd.clear(); password.reset(); } } //take care of some special events void keypadEvent(KeypadEvent eKey) { switch (keypad.getState()) { case PRESSED: lcd.print(eKey); switch (eKey) { case ' ': guessPassword(); break; lcd.setCursor(0, 1); default: password.append(eKey); } } } void guessPassword() { if (password.evaluate()) { digitalWrite(ledPin, HIGH); delay(2000); lcd.setCursor(0, 1); lcd.print("VALID PASSWORD"); password.reset(); delay(600); lcd.clear(); lcd.setCursor(0, 1); lcd.print("Welcome"); delay(2000); lcd.clear(); digitalWrite(ledPin, LOW); } else { digitalWrite(ledPin, LOW); lcd.setCursor(0, 1); lcd.print("INVALID PASSWORD"); password.reset(); delay(2000); lcd.clear(); } }