//Muhammad Raqhib hamdi
//2021230037
//Unsada Teknologi Informasi
//Lab 4.4 ESP 32
//Kamis 4 April 2024
//Keypad untuk input password + LCD (Awalan bukan 0)
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const byte ROWS = 4;
const byte COLS = 4;
char Keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {13, 23, 19, 18};
byte colPins[COLS] = {5, 4, 2, 15};
Keypad customKeypad = Keypad(makeKeymap(Keys), rowPins, colPins, ROWS, COLS);
char inputKey;
int number = 0;
int password = 12345;
const int greenLED = 26; // pin untuk LED hijau
const int redLED = 27; // pin untuk LED merah
const int buzzerPin = 25; // pin untuk buzzer
void setup() {
lcd.init();
lcd.backlight();
pinMode(greenLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(greenLED, LOW); // Matikan LED hijau saat awal
digitalWrite(redLED, LOW); // Matikan LED merah saat awal
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Input Password");
inputKey = customKeypad.getKey();
switch (inputKey) {
case '0' ... '9':
lcd.setCursor(0, 1);
number = number * 10 + (inputKey - '0');
lcd.print(number);
break;
case '#':
if (number == password) {
lcd.setCursor(0, 1);
lcd.print("Access Accepted");
delay(2000);
number = 0;
lcd.clear();
digitalWrite(greenLED, HIGH); // Hidupkan LED hijau
digitalWrite(redLED, LOW); // Matikan LED merah
noTone(buzzerPin); // Matikan buzzer
} else {
lcd.setCursor(0, 1);
lcd.print("Invalid Password");
delay(2000);
number = 0;
lcd.clear();
digitalWrite(greenLED, LOW); // Matikan LED hijau
digitalWrite(redLED, HIGH); // Hidupkan LED merah
tone(buzzerPin, 500); // Bunyikan buzzer
delay(2); // Tunggu 2 milidetik
noTone(buzzerPin); // Matikan buzzer
}
break;
case '*':
number = 0;
lcd.clear();
break;
}
}