#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi keypad dan LCD
const byte ROW_NUM = 4; // jumlah baris pada keypad
const byte COLUMN_NUM = 4; // jumlah kolom pada keypad
char keys[ROW_NUM][COLUMN_NUM] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // baris keypad terhubung ke pin 9, 8, 7, dan 6
byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // kolom keypad terhubung ke pin 5, 4, 3, dan 2
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C untuk LCD 16x2
int buzzer = 13; // Pin untuk LED
int ledDelay = 0; // Variabel untuk menentukan delay LED
int buzzerPin = 10;
void setup() {
lcd.begin(16, 2); // Inisialisasi LCD
pinMode(buzzerPin, OUTPUT); // Set pin LED sebagai output
lcd.setCursor(0, 0);
lcd.print("PROGRAM KEYPAD");
lcd.setCursor(0, 1);
lcd.print("DENGAN LCD");
}
void loop() {
char key = keypad.getKey(); // Mendapatkan tombol yang ditekan
if (key != NO_KEY) {
lcd.clear(); // Menghapus layar LCD
// Menampilkan informasi tombol yang ditekan di LCD
lcd.setCursor(0, 0);
lcd.print("Tombol ditekan:");
lcd.setCursor(0, 1);
lcd.print(key);
// Mengontrol LED sesuai dengan logika yang dijelaskan
if (key >= '1' && key <= '9') {
int num = key - '0';
ledDelay = num;
digitalWrite(buzzerPin, HIGH);
delay(buzzerPin * 1000);
digitalWrite(buzzerPin, LOW);
digitalWrite(buzzerPin, HIGH); // Aktifkan buzzer
delay(1000);
digitalWrite(buzzerPin, LOW); // Matikan buzzer
} else if (key == 'A') {
for (int i = 0; i < 2; i++) {
digitalWrite(buzzerPin, HIGH);
delay(300);
digitalWrite(buzzerPin, LOW);
delay(300);
}
} else if (key == 'B') {
for (int i = 0; i < 3; i++) {
digitalWrite(buzzerPin, HIGH);
delay(300);
digitalWrite(buzzerPin, LOW);
delay(300);
}
} else if (key == 'C') {
for (int i = 0; i < 4; i++) {
digitalWrite(buzzerPin, HIGH);
delay(300);
digitalWrite(buzzerPin, LOW);
delay(300);
}
} else if (key == 'D') {
for (int i = 0; i < 2; i++) {
digitalWrite(buzzerPin, HIGH);
delay(1000);
digitalWrite(buzzerPin, LOW);
delay(1000);
}
}
}
}