#include <Keypad.h> // library yang memudahkan Arduino untuk membaca input dari keypad dan mengelola tombol-tombol pada keypad secara efisien.
#include <Wire.h> // library Untuk mengaktifkan komunikasi I2C pada Arduino.
#include <LiquidCrystal_I2C.h> // library Untuk mengontrol LCD menggunakan protokol I2C melalui Arduino.
#include <Servo.h> // Menambahkan library Servo
Servo myservo; // Membuat objek Servo
// Definisikan ukuran keypad
const uint8_t baris = 4; // empat baris
const uint8_t kolom = 4; // empat kolom
// Definisikan karakter yang ada pada keypad
char keys[baris][kolom] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
// Definisikan pin baris dan kolom yang terhubung ke Arduino
uint8_t rowPins[baris] = { 9, 8, 7, 6 }; // Pin baris dihubungkan ke pin Arduino
uint8_t colPins[kolom] = { 5, 4, 3, 2 }; // Pin kolom dihubungkan ke pin Arduino
// Inisialisasi keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, baris, kolom);
// Inisialisasi LCD dengan alamat I2C (biasanya 0x27 atau 0x3F) dan ukuran LCD (20x4)
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600); // Memulai komunikasi serial
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Menyalakan backlight LCD
myservo.attach(10); // Menghubungkan servo ke pin digital 10 Arduino
}
void loop() {
char key = keypad.getKey(); // Baca input dari keypad
// Jika tombol ditekan, tampilkan pada monitor serial
if (key != NO_KEY) { // jika tombol yang ditekan tidak sama dengan NO_KEY", atau dengan kata lain, jika ada tombol yang ditekan.
lcd.setCursor(0, 0); // lokasi kursos
lcd.print(key); // menampilkan key di LCD
myservo.write(180); // menjalankan servo ke 90
}
}