MASIGNALPHAS2101
6680671983845063762

Cara mudah Menggunakan Keypad 4x4 / 4x3 dengan Arduino

Cara mudah Menggunakan Keypad 4x4 / 4x3 dengan Arduino
Add Comments
1/12/2021


Introduction

Keypad adalah kumpulan tombol numerik atau alfanumerik dengan jumlah tombol yang terbatas.
Keypad numerik hanya berisi tombol karakter angka, dari 0 – 9, sedangkan keypad alfanumerik sama dengan keypad numeric dengan ditambahi karakter alphabet A – D. Kedua tipe keypad ini dilengkapi dengan spesial karakter ‘*’ dan ‘#’. 

Dengan demikian, sebuah keypad numerik akan berisi 12 karakter (12 tombol), sedangkan keypad alfanumerik terdiri dari 16 karakter (16 tombol). Inilah yang membedakannya dengan keyboard, yakni sekumpulan tombol dengan karakter alfanumerik (plus spesial karakter) yang lebih banyak variasinya sesuai dengan standar ASCII. (Sumber: www.saptaji.com).

Berikut contoh penekanan tombol keypad yang mudah diketahui dengan mencermati baris dan kolom yang ditekan :
Contoh Keypad yang Ditekan No. 5 (Source: www.nyebarilmu.com)
Pada gambar ilustrasi diatas, penekanan tombol keypad yang ditekan yaitu “5”. Seperti terlihat bahwa Baris 2 bernilai LOW, sedangkan Baris 1, Baris 3, dan Baris 4 adalah bernilai HIGH. Kemudian dari ilustrasi tersebut diketahui bahwa data berasal dari penekanan Baris 2, dengan umpan balik pada Kolom 2, sehingga dapat disimpulkan bahwa tombol keypad yang ditekan yaitu “5”.

Pada tutorial kali ini kita akan belajar untuk mengakses keypad 4x4 dan menampilkan hasil penekanan tombolnya di serial monitor arduino IDE dan LCD.

1. Keypad Serial Monitor Test

Hardware

Berikut ini adalah komponen yang harus disiapkan:
  1. Arduino Uno
  2. Komputer + Software IDE Arduino
  3. Keypad 4×4 / 4x3 (sesuaikan dengan kebutuhan)
  4. Kabel Jumper

Schematic

Schematic atau rangkaian di buat dengan menggunaka software Fritzing sebagai berikut:

Keypad 4x4

Keypad_4x4.fzz ( Download )

Program

Sebelum menuliskan program kedalam arduino, terlebih dahulu unduh library Keypad berikut:
keypad_library ( download )
Setelah didownload, kemudian masukkan library keypad ke dalam instalasi Arduino.
Baca:
/*
 * program keypad 4x4 - Arduino
 * hestech.id
*/
#include <Keypad.h>

const byte ROWS = 4; //4 baris
const byte COLS = 4; //4 kolom
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte colPins[COLS] = {5, 4, 3, 2}; // pin 2,3,4,5 untuk pin kolom keypad (lihat gambar)
byte rowPins[ROWS] = {9, 8, 7, 6}; // pin 6,7,8,9 untuk pin baris keypad (lihat gambar)

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

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

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  }

}

Keypad 4x3

Keypad_4x3.fzz ( Download )

Program

/*
 * program keypad 4x3 - Arduino
 * hestech.id
*/
#include <Keypad.h>

const byte ROWS = 4; //4 baris
const byte COLS = 3; //3 kolom
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};

byte rowPins[ROWS] = {8, 7, 6, 5};
byte colPins[COLS] = {4, 3, 2};

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

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

void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.println(key);
  }

}

Hasil

Untuk mengetahui hasilnya, silahkan buka jendela Serial Monitor melalui menu Tools-Serial Monitor dan Set Baud Rate nya menjadi 9600. Kemudian tekan sembarang tombol di keypad, dan perhatikan karakter yang muncul di jendela Serial Monitor.

2. Keypad LCD Test

Hardware

  1. Arduino Uno
  2. LCD 16X2
  3. Modul interface I2C
  4. Komputer + Software IDE Arduino
  5. Keypad 4×4 / 4x3 (sesuaikan dengan kebutuhan)
  6. Kabel Jumper

Schematic

Rangkailah komponen seperti gambar berikut:
keypad_LCD.fzz ( Download )

Program

Seperti biasa, sebelum membuat program harus memasukkan library modul yang digunakan ke file instalasi Arduino. Library yang dibutuhkan adalah:
Jangan lupa memasukkan alamat modul I2C yang digunakan kedalam program. Jika alamatnya tidak sesuai, maka Arduino tidak dapat mengenali Modul I2C yang digunakan dan LCD tidak akan menampilkan karakter. Agar lebih jelas, baca artikel tutorial mengakses LCD dibawah:
Baca:
- Cara Mudah Program LCD I2C dengan Arduino Uno
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
 
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};
byte rowPins[ROWS] = {8, 7, 6, 5};
byte colPins[COLS] = {4, 3, 2};
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal_I2C lcd(0x3F, 16, 2);//scan alamat modul I2C untuk mendapatkan alamatnya
 
char stringAngka[17];
int indexKeypad = 0;
 
void setup() {
  Serial.begin(9600);
  Serial.println("Input angka menggunakan keypad");
  Serial.println("https://www.hestech.id");
  Serial.println();
 
  Wire.begin();
  Wire.beginTransmission(0x3F);
  if (Wire.endTransmission())
  {
    lcd = LiquidCrystal_I2C(0x27, 16, 2);
  }
  lcd.begin();
  lcd.backlight();
  lcd.print("Input angka");
}
 
void loop() {
   char key = keypad.getKey();
   if (key) {
    Serial.println(key);
    switch (key)
    {
      case '0':
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
        if (!indexKeypad)
        {
          lcd.clear();
        }
        stringAngka[indexKeypad++] = key;
        lcd.print(key);
        break;
      case '*'://reset
        lcd.clear();
        indexKeypad = 0;
        break;
      case '#':
        stringAngka[indexKeypad] = 0;
        lcd.setCursor(0, 1);
 
        int nilaiAngka = atoi(stringAngka);
        lcd.print(nilaiAngka);
 
        indexKeypad = 0;
        break;
    }
  }
}

Hasil

Berikut ini adalah contoh hasil setelah program berhasil  diupload dan dilakukan penekan tombol secara acak pada keypad:




Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal