#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#define LCD_I2C_ADDRESS 0x3C
#define LEBAR_LCD 128
#define TINGGI_LCD 64
Adafruit_SSD1306 lcd(LEBAR_LCD, TINGGI_LCD, &Wire);
// Konfigurasi Keypad
#define JUMLAH_BARIS 4
#define JUMLAH_KOLOM 4
char keys[JUMLAH_BARIS][JUMLAH_KOLOM] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte PIN_BARIS[JUMLAH_BARIS] = {12, 8, 7, 6};
byte PIN_KOLOM[JUMLAH_KOLOM] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), PIN_BARIS, PIN_KOLOM, JUMLAH_BARIS, JUMLAH_KOLOM);
String inputPassword = "";
String passwordYangBenar = "12221";
const int merahPin = 9;
const int hijauPin = 10;
const int biruPin = 11;
void setup() {
lcd.begin(SSD1306_SWITCHCAPVCC, LCD_I2C_ADDRESS);
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(0, 0);
lcd.print("BLPT DIY");
lcd.setCursor(0, 10);
lcd.print("Embedded System");
lcd.setTextColor(WHITE);
lcd.setCursor(0, 20);
lcd.print("2024");
lcd.display();
delay(2000);
pinMode(merahPin, OUTPUT);
pinMode(hijauPin, OUTPUT);
pinMode(biruPin, OUTPUT);
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key == '#') {
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(0, 0);
lcd.print("Password: ");
lcd.print(inputPassword);
lcd.setCursor(0, 10);
if (inputPassword == passwordYangBenar) {
lcd.print("Hasil: Benar");
digitalWrite(merahPin, LOW);
digitalWrite(hijauPin, HIGH); // LED hijau menyala jika password benar
digitalWrite(biruPin, LOW);
delay(2000); // Tunda untuk menampilkan hasil
} else {
lcd.print("Hasil: Salah");
digitalWrite(merahPin, HIGH); // LED merah menyala jika password salah
digitalWrite(hijauPin, LOW);
digitalWrite(biruPin, LOW);
delay(2000); // Tunda untuk menampilkan hasil
}
lcd.display();
delay(2000); // Tunda untuk menampilkan hasil
inputPassword = ""; // Reset input password
} else if (key == '*') {
inputPassword = ""; // Reset input jika tombol '*' ditekan
// Mematikan semua LED saat password sedang diinput
digitalWrite(merahPin, LOW);
digitalWrite(hijauPin, LOW);
digitalWrite(biruPin, LOW);
} else {
inputPassword += key; // Tambahkan karakter yang ditekan ke input password
}
}
// Menampilkan input password saat ini
lcd.clearDisplay();
lcd.setTextSize(1);
lcd.setTextColor(WHITE);
lcd.setCursor(0, 0);
lcd.print("Enter Password: ");
lcd.setCursor(0, 10);
lcd.print(inputPassword);
lcd.display();
}