/*
Forum: https://forum.arduino.cc/t/lcd-and-led-wont-work-together/1232311
Wokwi: https://wokwi.com/projects/391629716735284225
*/
int buttonState = 0;
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Key.h>
LiquidCrystal lcd(13, 12, 5, 4, 3, 2);
const byte ledPin = 9;
const byte switchPin = 7;
const byte ROWS = 4;
const byte COLS = 4;
int lcdRow = 0;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {A0, A1, A2, A3};
byte colsPins[COLS] = {A4, A5, 11, 10};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colsPins, ROWS, COLS);
String password;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
/// pinMode(2, OUTPUT); ???????????????????
Serial.begin(115200);
lcd.begin(16, 2);
lcd.print("Enter Password: ");
delay(1000);
lcd.clear();
}
void loop()
{
if (enabled()) {
CheckPwd();
digitalWrite(ledPin,HIGH);
} else {
digitalWrite(ledPin,LOW);
}
}
boolean enabled() {
return (!digitalRead(switchPin));
}
void CheckPwd(){
char key = keypad.getKey();
if (key) {
lcd.print(key);
password = password + key;
if (key == 'A') {
clearPrintWaitDelete("Checking PWD",0, false);
lcd.setCursor(0, 1);
lcd.print(password);
delay(1000);
if (password == "111A") {
clearPrintWaitDelete("Accepted",1000, true);
}
else {
clearPrintWaitDelete("Denied",1000, true);
}
}
if (key == 'C') {
clearPrintWaitDelete("Clearing...",1000, true);
}
}
}
void clearPrintWaitDelete(String msg, unsigned long waitTime, boolean delPwd) {
lcd.clear();
lcd.print(msg);
delay(waitTime);
if (delPwd) {
lcd.clear();
password = "";
}
}