#include <Keypad.h> //memanggil library keypad.h
#include <LiquidCrystal.h> //memanggil library Liquidcrystal (LCD)
const int rs = 13, en = 12, d4 = 11, d5 = 10, d6 = 9, d7 = 8; //pemilihan pin arduino yang akan digunakan
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //konfigurasi pin yang digunakan oleh LCD
const byte ROWS = 4; //jumlah row/baris
const byte COLS = 4; //jumlah kolom
char keys[ROWS][COLS] = {
{'1','2','3', 'A'}, //konfigurasi tombol
{'4','5','6', 'B'}, //konfigurasi tombol
{'7','8','9', ' '}, //konfigurasi tombol dan pada tombol C digunakan untuk menghapus
{'*','0','#', 'D'} //konfigurasi tombol
};//muh hafid a
byte rowPins[ROWS] = {7, 6, 5, 4}; //konfigurasi pin row keypad
byte colPins[COLS] = {3, 2, 1, 0}; //konfigurasi pin colom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //konfigurasi keypad row dan colom
int cursor; //data integer(angka) untuk mengatur cursor / posisi display pd LCD
void setup() { //muh hafid a
lcd.begin(16, 2); //pengaturan LCD untuk menentukan dimensi LCD yang digunakan (colom, row)
} //muh hafid a
void loop() //muh hafid a
{//muh hafid a
char key = keypad.getKey(); //memanggil tipe data keys 4x4
lcd.setCursor(0, 0); //pada LCD bagian atas kiri
lcd.print("Test Keypad"); // menampilkan tulisan test keypad
if (key != NO_KEY){ //jika tombol key di tekan (! = kebalikan, NO_key = tidak ditekan)
if (cursor<2){ //jika cursor kurang dari 2 (0,1) untuk 2 digit
cursor++;} //maka cursor bertambah ke kanan
lcd.setCursor(cursor, 1); //pada LCD bagian bawah kiri (sesuai cursor)
lcd.print(key);} //LCD menampilkan digit sesuai yang ditekan pada keypad
if (key ==' '){ //jika tombol C ditekan
if (cursor=1){ //jika cursor = 1
cursor--;} //maka cursor akan berkurang ke kiri
lcd.setCursor(cursor, 1); //pada LCD bagian bawah kiri (sesuai cursor)
lcd.print(key);} //LCD menampilkan digit sesuai yang ditekan pada keypad
}