14. Pembelajaran Mengenai dasar Keypad pada Arduino

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.

Gambar 14.2 Hubungan keypad eon Arduino

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:

  1. Dekompresilah file Keypad. zip. Akan terbentuk folder bernama Keypad dan Keypad 12C.
  2. Pindahkan kedua folder tersebut ke C : \ Program Files (x86)\Arduino\libraries

(dengan asumsi, program Arduino IDE terinstal di C : \ Program Files (x86) \Arduino).

  1. Tutuplah Arduino IDE jika dalam keadaan sedang dibuka.
  2. 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:

Sketch: key43

// ——————————————–

// 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) ;

Description Gambar 14.5 memperlihatkan contoh hasil ketika sejumlah tombol di keypad ditekan.

14-4 Pengujian pada Keypad Berukuran 4 x 4

Tombol Gambar 14.6 memperlihatkan contoh keypad yang berisi 16 tombol. Secara prinsip, pemrograman yang diperlukan pada keypad ini serupa dengan pada keypad 12 tombol. Gambar 14.7 memperlihatkan rangkaian yang menghubungkan antara Arduino dan keypad tersebut.

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 :

Sketch: key44

// ——————————————–

// 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

Sketch: password

// ——————————————–

// 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.

Sketch: keyled

// ——————————————–

// 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



Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.