
Keypad 4x4 merupakan jenis keypad alfanumeric yang terdiri dari tombol karakter berupa angka 0-9, huruf A-D serta dua karakter spesial yaitu ‘*’ dan ‘#’. Sehingga jumlah karakter tombol yang dapat diakses pada Keypad 4x4 ini sebanyak 16 karakter. Pada dasarnya, Keypad 4x4 tersusun atas 16 buah push button yang dirangkai dalam bentuk matriks 4x4 (4 baris dan 4 kolom).
Proses Pembacaan Data dari Keypad
Pembacaan data dari keypad dilakukan dengan Teknik Scanning pada rangkaian matriks. Proses scanning dilakukan untuk mengetahui pada baris dan kolom mana tombol ditekan.
1. Pada kondisi awal, jalur kolom dalam kondisi HIGH. Sedangkan, jalur baris kondisi LOW

2. Ketika tombol ditekan, maka jalur kolom tombol tersebut bernilai LOW karena arus mengalir dari jalur kolom ke baris. Dari proses ini, mikrokontroler mengetahui di kolom mana tombol berada.

3. Setelah ditemukan pada kolom berapa tombol ditekan, maka jalur kolom dikembalikan ke kondisi LOW. Dan proses scanning setiap jalur pada baris dimulai, sampai ditemukan baris manakah yang dapat mengembalikan kolom ke kondisi HIGH.

4. Ketika jalur kolom kembali ke kondisi HIGH, mikrokontroler dapat mengetahui baris manakah tombol berada, sehingga didapat index baris dan kolom tombol yang mewakili karakter tertentu sesuai dengan matriks 4x4.

Pin Keypad 4X4


Percobaan 16: Keypad 4X4

- Hubungkan C1-C4 dengan pin D9-D12 ATMEGA 2560 secara berurutan
- Hubungkan R1-R4 dengan pin D6-D3 ATMEGA 2560 secara berurutan
- Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
- Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file KEYPAD_4X4
- Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
- Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.
Coding:
#include <Keypad.h>
//deklarasi akan jumlah baris dan kolom
//4 baris
const byte ROWS = 4;
//4 kolom
const byte COLS = 4;
char keys[ROWS][COLS] = { //penggambaran kondisi keypad ke dalam program
{'1','2','3','A'}, //
{'4','5','6','B'}, //
{'7','8','9','C'}, //
{'*','0','#','D'} //
};
//untuk pin arduino yang dihubungkan dengan keypad
byte rowPins[ROWS] = {6, 5, 4, 3}; //pin untuk kontrol baris. MULAI R1 - R4. R1 --> KAKI 6, DST
byte colPins[COLS] = {9, 10, 11, 12}; //pin untuk kontrol kolom. MULAI C1 - C4. C1 --> KAKI 9, DST
Keypad keypad=Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);
void setup(){
//penggunaan serial komunikasi dengan kecepatan 9600 bps
Serial.begin(9600);
}
void loop(){
char tombol = keypad.getKey();
if (tombol!= NO_KEY){
Serial.println(tombol);}
}
Penjelasan Coding:
Keypad keypad=Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);
Baris kode ini membuat instance objek Keypad dan di-inisialisasi menggunakan parameter yang ditentukan. Objek Keypad merupakan bagian dari sebuah library yang digunakan untuk berinteraksi dengan keypad matrix.
Parameter-parameter tersebut adalah sebagai berikut:
makeKeymap(keys): Fungsi ini membuat keymap yang digunakan oleh objek Keypad untuk memetakan tombol fisik pada keypad ke karakter yang sesuai. Parameter "keys" adalah sebuah array karakter yang mewakili tombol pada keypad.
rowPins: Ini adalah sebuah array nomor pin yang sesuai dengan baris dari keypad matrix.
colPins: Ini adalah sebuah array nomor pin yang sesuai dengan kolom dari keypad matrix.
ROWS: Ini adalah sebuah konstanta integer yang mewakili jumlah baris dari keypad matrix.
COLS: Ini adalah sebuah konstanta integer yang mewakili jumlah kolom dari keypad matrix.
Kode ini mengatur objek Keypad sehingga dapat digunakan untuk membaca input dari keypad matrix dan mengembalikan karakter yang sesuai untuk setiap tekanan tombol.
char tombol = keypad.getKey();
Baris kode ini menerima data karakter yang sesuai dengan tombol yang ditekan saat ini pada keypad matrix. Objek "keypad" sebelumnya telah dibuat dan diinisialisasi menggunakan parameter yang ditentukan pada baris kode sebelumnya.
Fungsi "getKey" adalah sebuah fungsi anggota dari objek Keypad, yang membaca input dari keypad matrix dan menghasilkan karakter yang sesuai dengan tombol yang ditekan. Karakter yang dikembalikan disimpan dalam variabel "tombol", yang bertipe "char".
Baris kode ini digunakan untuk mendapatkan karakter yang mewakili tombol yang ditekan saat ini pada keypad matrix, yang dapat digunakan dalam proses atau pembuatan keputusan lebih lanjut dalam program.
Video Demo: