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:
- Arduino Uno
- Komputer + Software IDE Arduino
- Keypad 4×4 / 4x3 (sesuaikan dengan kebutuhan)
- 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
- Arduino Uno
- LCD 16X2
- Modul interface I2C
- Komputer + Software IDE Arduino
- Keypad 4×4 / 4x3 (sesuaikan dengan kebutuhan)
- 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:
comment 0 komentar
more_vert