#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define I2C_ADDRESS 0x27 // Address dari LCD PCF8574
#define LCD_COLUMNS 16 // Jumlah kolom pada LCD
#define LCD_ROWS 2 // Jumlah baris pada LCD
LiquidCrystal_I2C lcd(I2C_ADDRESS, LCD_COLUMNS, LCD_ROWS); // Inisialisasi objek LCD
const byte ROWS = 4; // Jumlah baris pada keypad
const byte COLS = 3; // Jumlah kolom pada keypad
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // Pin baris keypad
byte colPins[COLS] = {5, 4, 3}; // Pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int IR_SENSOR_PIN = A0; // Pin sensor infrared
const int OUTPUT_PIN = 2; // Pin output
void setup() {
Wire.begin(); // Inisialisasi komunikasi I2C
pinMode(IR_SENSOR_PIN, INPUT);
pinMode(OUTPUT_PIN, OUTPUT);
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
lcd.setCursor(0, 0);
lcd.print("Password:");
}
void loop() {
char customKey = keypad.getKey();
if (customKey) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Password:");
lcd.setCursor(0, 1);
lcd.print(customKey);
// Periksa jika password benar (misalnya, "1") dan sensor infrared aktif
if (customKey == '1' && digitalRead(IR_SENSOR_PIN) == HIGH) {
digitalWrite(OUTPUT_PIN, HIGH); // Aktifkan output pada pin 2
} else {
digitalWrite(OUTPUT_PIN, LOW); // Matikan output pada pin 2
}
}
}