
Arduino langsung tahu tombol mana yang kamu tekan di keypad 12 tombol yang mirip tombol telepon, lalu menuliskannya di layar komputermu. Angka-angka serta tombol bintang dan pagar tersusun dalam kisi baris dan kolom, dan Arduino mengecek kisi itu untuk menemukan tombol yang ditekan. Langkah pertama menuju proyek seperti kunci sandi atau kalkulator.
Video
Skema rangkaian

Kode sumber
C++ (Arduino IDE)
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Menggunakan Keypad 3x4
4// ─────────────────────────────────────────
5// Tombol yang ditekan di keypad 3x4 dibaca dan dikirim ke Serial Monitor
6// (9600 baud). Library Keypad memindai baris dan kolom.
7//
8// Pin:
9// D8, D7, D6, D5 -> Baris keypad 1-4
10// D4, D3, D2 -> Kolom keypad 1-3
11
12#include <Keypad.h>
13
14const byte ROWS = 4; // Jumlah baris
15const byte COLS = 3; // Jumlah kolom
16
17// Tata letak keypad
18char keys[ROWS][COLS] = {
19 {'1', '2', '3'},
20 {'4', '5', '6'},
21 {'7', '8', '9'},
22 {'*', '0', '#'}
23};
24
25byte rowPins[ROWS] = {8, 7, 6, 5}; // Pin baris
26byte colPins[COLS] = {4, 3, 2}; // Pin kolom
27
28Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
29
30void setup() {
31 Serial.begin(9600);
32 Serial.println("Keypad Initialized...");
33}
34
35void loop() {
36 // Ambil tombol yang ditekan, NO_KEY jika tidak ada
37 char pressedKey = keypad.getKey();
38
39 if (pressedKey != NO_KEY) {
40 Serial.print("Pressed Key: ");
41 Serial.println(pressedKey);
42 }
43}
44
FAQ
Apa beda keypad 3x4 dan 4x4?
Keypad 3x4 punya 3 kolom + 4 baris (12 tombol); 4x4 punya 4+4 (16 tombol). 3x4 cukup untuk proyek ringkas; jika kamu butuh tombol tambahan seperti huruf (A, B, C, D), 4x4 lebih dipilih.
Bagaimana cara menentukan urutan pin?
Cek label di belakang keypad atau datasheet-nya; biasanya 7 pin dengan urutan ROW1, ROW2, ROW3, ROW4, COL1, COL2, COL3 dari kiri. Di kode, definisikan pin baris dulu, lalu pin kolom.
Apakah getKey() memblokir?
Tidak, `keypad.getKey()` tidak memblokir; fungsi ini mengembalikan karakter yang ditekan jika ada, jika tidak `NO_KEY` (=0). Kamu bisa memanggilnya terus-menerus di dalam loop tanpa menghentikan tugas lain.
