14. Pembelajaran Mengenai dasar Keypad pada Arduino
Materi:
Pembelajaran pada Bab ini menjelaskan penggunaan keypad, yang berguna untuk memasukkan data angka. Keypad berukuran 4×3 dan 4×4 di ulas secara tuntas.
14.1 Pengenalan Numeric Keypad
Numeric Keypad atau biasa disebut membrane keypad atau keypad saja adalah peranti yang berguna untuk memasukkan angka. Peranti seperti ini dapat dimanfaatkan oleh pemakai untuk mengetikkan password yang digunakan untuk membuka pintu. Contoh keypad diperlihatkan di Gambar 14.1.
Secara umum, cara merangkai keypad dan Arduino ditunjukkan di Gambar 14.2 Parsoalannya bagaimana menemukan posisi pin untuk setiap kotojn dan baris. karena itu, Anda perlu mendapatkan datasheet untuk keypad sekiranya keypad Anda berbeda dengan contoh di Gambar 14.1.
Keypad pada Gambar 14.1 memiliki pin-pin dengan ketentuan seperti terlihat di Gambar 14.3. Oleh karena iłu, contoh susunan rangkaiannya seperti yang terlihat di Gambar 14.4.
Gambar 14.3 Hubungan pin, baris, dan kolom pada keypad
14.2 Pustaka Keypad
Pemrograman keypad sangat mudah berkat dukungan pustaka bernama Keypad, yang dapat diunduh di
www.arduino.cc/playground/code/Keypad. Nama filenya Keya d. zip. Untuk memudahkan Anda, file tersebut disediakan di CD yang disertakan bersama buku ini.
Langkah-langkah yang diperlukan untuk memasang pustaka tersebut adalah:
- Dekompresilah file Keypad. zip. Akan terbentuk folder bernama Keypad dan Keypad 12C.
- Pindahkan kedua folder tersebut ke C : \ Program Files (x86)\Arduino\libraries
(dengan asumsi, program Arduino IDE terinstal di C : \ Program Files (x86) \Arduino).
- Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
- Panggil kembali Arduino IDE supaya pustaka yang baru saja Anda tambahkan dikenali.
14-3 Sketch untuk Menguji
Untuk menguji rangkaian di Gambar 14.4, gunakan sketch berikut:
// ——————————————–
// Contoh untuk menguji keypad 4 baris
// 3 kolom melalui port serial //
// ——————————————–
#include <Keypad.h>
char tombol[4][3]= {
{‘1’, ‘2’, ‘3’},
{‘4’, ‘5’, ‘6’},
{,6,’,8.’,9.} ,
{‘*’, ‘0’, ‘#’}
};
byte pinBaris[] ={2,3,4, 5};
byte pinKolom[] ={6,7, 8};
Keypad keypad = Keypad(makeKeymap (tombol) , pinBaris, pinkolom, 4, 3);
void setup()
{
Serial.begin(9600) ;
}
void loop()
{
char kode= keypad.getKey();
if (kode != NO KEY)
Serial.println(kode);
}
Pada sketch di atas,kode berikut digunakan untuk menyertakan pustaka Keypad:
#include <Keypad.h>
pernyataan berikut digunakan untuk membentuk keterangan tombol-tombol pada keypad:
char tombol[4][3]=
{
{‘1’, ‘2’, ‘3’},
{‘4’, ‘5’, ‘6’},
{‘7’, ‘8’, ‘9’},
{‘*’, ‘0’, ‘#’}
};
Pin-pin digital di Arduino yang dihubungkan ke keempat baris di keypad dideklarasikan melalui:
byte pinBaris[]={2, 3,4, 5};
Adapun pin-pin digital di Arduino yang dihubungkan ke ketiga baris di keypad dideklarasikan melalui:
byte pinKolom[]={6, 7, 8};
Setelah itu, penyebutan pin-pin yang dihubungkan ke baris dan kolom di keypad dilakukan melalui:
Keypad keypad = Keypad (makeKeymap(tombol),pinBaris,
pinKolom, 4,3);
Dengan cara seperti itu, terbentuklah objek bernama keypad. Argumen pertama menentukan susun nama-nama tombol. Argumen kedua menyatakan array yang berisi pin-pin di Arduino yang dihubungkan pin-pin baris di keypad. Argumen ketiga menyatakan array yang berisi pin-pin di Arduino yang dihubung ke pin-pin kolom di keypad. Argumen keempat menyatakan jumlah baris di keypad dan argumen ke
menyatakan jumlah kolom di keypad.
Pernyataan
Serial.begin ();
Setup ( ) dipakai untuk melakukan inisialisasi terhadap port serial, dengan tujuan agar kode tombol di keypad yang ditekan akan dikirimkan ke port serial.
Pembacaan terhadap tombol yang ditekan ditangani oleh:
char kode = keypad. getKey () ;
Dalam hal ini, fungsi anggota getKey ( ) akan menghasilkan NO_KEY kalau tak ada tombol yang ditekan. Oleh karena itu, jika nilai di variabel kode tidak berupa NO_KEY, berarti terdapat tombol yang ditekan. sebabnya, nilai kode hanya dikirim ke port serial kalau nilai kode tidak berupa NO_KEY. Hal ini melalui:
if (kode != NO KEY)
Serial . print In (kode) ;
14-4 Pengujian pada Keypad Berukuran 4 x 4
Gambar 14.6 Keypad yang mengandung 4 x 4 tombol
Pada keypad yang diuji, empat pin pertama menyatakan pin-pin baris. Empat pin tersisa adalah pin-pin kolom. Oleh karena itu, contoh rangkaian di Gambar 14.7 didasarkan pada fakta tersebut.
Gambar 14.7 Rangkaian keypad 16 tombol dan Arduino
Untuk menguji rsangakaian di atas, silakan gunakan skerch berikut :
// ——————————————–
// Contoh untuk menguji keypad 4 baris
// 4 kolom melalui port serial //
// ——————————————–
#include <Keypad.h>
char tombol[4][4]= {
{‘1’, ‘2’, ‘3’,‘A’},
{‘4’, ‘5’, ‘6’,‘B’},
{,6,’, 8.’, 9, ‘C’} ,
{‘*’, ‘0’, ‘#’,‘D’}
};
byte pinBaris[] ={2,3 ,4, 5};
byte pinKolom[] ={6,7, 8, 9};
Keypad keypad = Keypad(makeKeymap (tombol) , pinBaris, pinkolom, 4, 4);
void setup()
{
Serial.begin(9600) ;
}
void loop()
{
char kode= keypad.getKey();
if (kode != NO KEY)
Serial.println(kode);
}
Untuk menguji, aktifkan Serial Monitor terlebih dahuli. Kemudian uji dengan menekan tombol-tombol di keypad
14.5 Penerapan Password
contoh penerapan keypad adalah untuk mengakses sesuatu dengan memasukkan password terlebih dahulu. sebagai contoh, jika password OK, LED hijau dinyalakan, sedangkan kalau tidak OK, LED merah dinyalakan. Untuk mempraktikkannya, Anda bisa menyusun rangkaian seperti terlihat di Gambar 14.8.
Gambar 14.8 Contoh penyusunan keypad dan dua LED
Setelah rangkaian disuse, sketch password bisa digunakan untuk menguji
// ——————————————–
// Contoh untuk menguji keypad 4 baris
// 4 kolom untuk memeriksa password
// ——————————————–
#include <Keypad.h>
const int LED_MERAH=11;
const int LED_HIJAU =12;
char tombol[4][4]= {
{‘1’, ‘2’, ‘3’,‘A’},
{‘4’, ‘5’, ‘6’,‘B’},
{,6,’, 8.’, 9, ‘C’} ,
{‘*’, ‘0’, ‘#’,‘D’}
};
char* kunci = “A123C”; // Password
byte pinBaris[] = {2, 3, 4, 5};
byte pinKolom[]={6, 7, 8, 9};
Keypad keypad = Keypad (makeKeymap(tombol),
pinBaris, pinKolom, 4, 4);
int posisi=0;
boolean aksesDitolak = false;
void setup()
{
pinMode (LED_MERAH, OUTPUT) ;
pinMode (LED_HIJAU, OUTPUT) ;
}
void loop()
{
char kode =keypad.getKey();
if (kode == NO_KEY)
return;
if (kode ==’*’|| kode ==’#’)
{
posisi=0;
aksesDitolak = false;
return;
}
if (kode != kunci[posisi]) aksesDitolak = true;
if (posisi == strlen(kunci) – 1) {
{
if (aksesDitolak)
{
digitalWrite(LED_MERAH, HIGH); delay(4000);
digitalWrite(LED_MERAH, LOW);
}
else
{
digitalWrite(LED_HIJAU, HIGH);
delay(4000);
digitalWrite(LED_HIJAU, LOW);
}
aksesDitolak = false;
posisi=0;
return;
}
posisi++;
}
14.6 Pengontrolan LED dengan Keypad
Dengan menggunakan rangkaian di Gambar 14.8, suatu aplikasi untuk mengontrol LED dengan keypad dapat dibentuk. Dalam hal ini, keypad dipakai untuk memberikan perintah untuk menyalakan atau mematikan LED.
// ——————————————–
// Contoh untuk mengontrol LED
// dengan keypad
// ——————————————–
#include <Keypad.h>
const int LED_MERAH =11;
const int LED_HIJAU =12;
char tombol[4][4]= {
{‘1’, ‘2’, ‘3’,‘A’},
{‘4’, ‘5’, ‘6’,‘B’},
{,6,’, 8.’, 9, ‘C’} ,
{‘*’, ‘0’, ‘#’,‘D’}
};
char* kunci = “A123C”; // Password
byte pinBaris[] = {2, 3, 4, 5};
byte pinKolom[]={6, 7, 8, 9};
Keypad keypad = Keypad (makeKeymap(tombol),
pinBaris, pinKolom, 4, 4);
char kodeSebelumnya;
void setup()
{
pinMode (LED_MERAH, OUTPUT) ;
pinMode (LED_HIJAU, OUTPUT) ;
Serial.begin(9600);
}
void loop()
{
char kode =keypad.getKey();
if (kode == NO_KEY)
return;
if (kode ==’*’|| kode ==’#’)
{
//Kalau sebelumnya * atau # ditekan
if (kodeSebelumnya == ‘*’)
{ switch (kode)
{
Serial.println(“LED_merah ON”) ;
case ‘1’:
digitalWrite (LED_MERAH, HIGH);
break;
case ‘2’:
Serial.println(“LED hijau ON”);
digitalWrite(LED HIJAU, HIGH);
break;
}
}
else
if (kodeSebelumnya == ‘#’)
{
switch (kode)
{
case’1′:
Serial.println(“LED merah OFF”);
digitalWrite(LED_ MERAH, LOW);
break;
case ‘2’:
Serial.println(“LED hijau OFF”)
digitalWrite (LED_HIJAU, LOW);
break;
}
}
kodeSebelumnya=’ ‘; // Kosongkan dengan spasi