Keypad Matrix 4×4 di ESP32

Kali ini kita akan membahas penggunaan Keypad Matrix 4×4. Perangkat ini sangat umum digunakan dengan ESP32 untuk input data seperti PIN, password, atau menu navigasi.

Berikut adalah penjelasan teknis dan cara menghubungkannya:


1. Memahami Pinout Keypad

Keypad 4×4 memiliki 8 pin yang terbagi menjadi:

  • 4 Pin Baris (Rows): Mengontrol baris 1, 2, 3, dan 4.
  • 4 Pin Kolom (Columns): Mengontrol kolom 1, 2, 3, dan 4.

2. Skema Koneksi ke ESP32

ESP32 memiliki banyak pin GPIO, sehingga Anda bisa langsung menghubungkan 8 pin keypad tersebut ke GPIO ESP32 tanpa memerlukan komponen tambahan (seperti resistor) karena kita akan menggunakan fitur Internal Pull-up pada ESP32.

Saran Pemetaan Pin:

Pin Keypad (dari kiri ke kanan)Pin GPIO ESP32Keterangan
Pin 1GPIO 13Baris 1 (R1)
Pin 2GPIO 12Baris 2 (R2)
Pin 3GPIO 14Baris 3 (R3)
Pin 4GPIO 27Baris 4 (R4)
Pin 5GPIO 26Kolom 1 (C1)
Pin 6GPIO 25Kolom 2 (C2)
Pin 7GPIO 33Kolom 3 (C3)
Pin 8GPIO 32Kolom 4 (C4)

Catatan: Hindari menggunakan GPIO 0, 2, atau 15 jika memungkinkan, karena pin tersebut mempengaruhi proses booting ESP32.


3. Library yang Dibutuhkan

Untuk memudahkan pemrograman, Anda disarankan menggunakan library Keypad oleh Mark Stanley dan Alexander Brevig. Library ini menangani pemindaian (scanning) baris dan kolom secara otomatis.


4. Contoh Kode Dasar (Arduino IDE)

Berikut adalah contoh kode singkat untuk menguji keypad Anda:

C++

#include <Keypad.h>

const byte ROWS = 4; // empat baris
const byte COLS = 4; // empat kolom

// Definisikan simbol pada tombol
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

// Hubungkan pin keypad ke GPIO ESP32
byte rowPins[ROWS] = {13, 12, 14, 27}; 
byte colPins[COLS] = {26, 25, 33, 32}; 

// Inisialisasi keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(115200);
}

void loop() {
  char key = keypad.getKey();

  if (key) {
    Serial.print("Tombol ditekan: ");
    Serial.println(key);
  }
}


Beberapa Tips Penting:

  • Tipe Keypad: Jika keypad Anda tipe membran (tipis/stiker), urutan pin biasanya berurutan dari Baris 1-4 lalu Kolom 1-4.
  • Voltase: ESP32 bekerja pada level logika 3.3V. Keypad matriks adalah komponen pasif (hanya saklar), jadi ia aman digunakan langsung dengan ESP32.
  • Debouncing: Library Keypad.h sudah menangani debouncing secara internal, sehingga Anda tidak akan mendapatkan input ganda saat menekan tombol satu kali.