Contents
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.
Pembacaan Tombol Keypad dengan Teknik Scanning
Berdasarkan penjelasan di atas, akan dibutuhkan 12 atau 16 pin I/O untuk menangani input dari keypad. Namun dengan teknik scanning, Anda dapat menghemat pembacaan keypad. Caranya adalah dengan membuat matriks keypad berdasarkan kolom dan baris, kemudian membaca ‘koordinat’ kolom dan baris yang ditekan dengan teknik scanning. Berikut ini adalah ilustrasinya
Berdasarkan gambar di ataslah, kemudian muncul istilah keypad 3×4 (3 kolom x 4 baris) untuk keypad numerik, keypad 4×4 (4 kolom x 4 baris) untuk keypad alfanumerik.
Perhatikan lagi gambar di atas. Perhatikan bahwa keypad numerik (3×3) hanya akan membutuhkan 7 pin, sedangkan keypad alfanumerik (4×4) hanya akan membutuhkan 8 pin saja. Cukup menghemat pin I/O, bukan? Ini akan sangat membantu jika Anda menggunakan tipe papan Arduino dengan jumlah pin I/O terbatas seperti Arduino Uno, Nano, Pro Mini, dsb.
Cara Membaca Tombol Keypad dengan Arduino
Untuk membaca keypad dengan Arduino caranya sangat mudah. Bersyurkurlah kita, karena sudah disediakan library khusus untuk menangani keypad dengan Arduino, yakni library ‘keypad.h’. Library ini termasuk library ‘Hardware abstraction’ (HAL = Hardware Abstraction Library), yakni library siap pakai yang ‘menutupi’ fungsi-fungsi penanganan hardware dasar seperti tombol, keypad, LED, dsb sehingga programmer dapat lebih fokus ke tujuan pemrograman bukan lagi membangun program dari awal. Diharapkan dengan adanya HAL ini dapat lebih mempercepat dan memudahkan programmer dalam membangun sebuah sistem.
Alat dan bahan
- Arduino Uno
- Keypad 4×4
- Kabel jumper Male to Male 8 pcs
Gambar Rangkaian Keypad – Arduino
Berikutnya hubungkan keypad Anda (saya menggunakan keypad 4×4) dengan Arduino seperti gambar di bawah. Jangan sampai kebalik pin kolom dan barisnya ya… (lihat gambar di atas)
Sketch Keypad – Arduino
Pertama kali, download dan install library ini melalui library manager di menu Sketch-Include Library-Manage Library. Kemudian ketik ‘keypad’ di kotak search dan pilih library ‘KEYPAD’. Installah library tersebut dengan menekan tombol ‘INSTALL’.
Selanjutnya isikan sketch berikut ke Arduino Anda. Yang perlu Anda lakukan adalah penyesuaian pin kolom dan baris jika menggunakan pin I/O yang lain, atau jika menggunakan tipe keypad yang lain (misal keypad 3×4)
Udah, gitu doang. Udah jadi kok :). Gimana? Mudah bukan? Untuk mengetahui hasilnya, silahkan buka jendela Serial Monitor Anda melalui menu Tools-Serial Monitor. Kemudian tekan sembarang tombol di keypad Anda, dan perhatikan karakter yang muncul di jendela Serial Monitor.
/* * program keypad 4x4 - Arduino * saptaji.com */ #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); } }
Demikian sedikit tutorial tentang cara membaca tombol keypad dengan Arduino, semoga bermanfaat unutk Anda. Keypad ini dibutuhkan untuk aplikasi atau sistem yang membutuhkan masukan (input) karakter yang tidak terlalu banyak, seperti tombol ATM, password akses pintu, dll. Kalau menggunakan keyboard malah terlalu ribet, bukan? 🙂
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com
masa, mau tanya kalau mau door lock keypad security dengan lcd 16×2 pengen di tambahin RTC 1307, jika standby tampilannya di jam digital, tapi kalau keypad di tekan langsung masuk ke fungsi keypad.. gimana ya mas setting sketch nya?
intinya gini:
display_jam();
if (detect_keypad) {
//masuk ke function keypad
}
itu di taruhnya di void loop ya mas?
iya di void loop
mas mau nanya nih,,klo tampilan lcd 6×12 arduino tuh seperti kotak-kotak dan ada tulisan uttdgfsffsgdsdgsgggsapakh lcd nya rusak yah mas ??
coba cek wiring-nya mas
udah di coba mas, tapi tampilan Jam nya malah kedip kedip trus pas di tekan keypad jamnya gak hilang malah ketimpa sama jarajter bintang password.. ini sketchnya mas, mohon tolong di periksa :
int detect_Keypad;
void loop(){
keypad.getKey();
jamDigital();
if (detect_keypad){
checkPassword();
}
}
itu keypad.getKey() -nya harus disimpan di variabel char terlebih dahulu baru bisa diolah. Silahkan lihat pada contoh progeam di artikel di atas
Mas kalau misalnya menampilkan alphanumerik keypad di lcd bagaimana ya?
langsung aja ditampilkan seperti biasa mas, hanya krn keterbatasan pixel di lcd, tidak semua karakter alfanumerik bisa ditampilkan. Tapi kalo karakter alfanumerik dari keypad 4×4 (#, *) bisa ditampilkan di lcd 16×2
mas mau nanya ni,,untuk menampilkan angka 3 digit di lcd gymana program nya?
tinggal lcd.Write(‘xyz’); aja mb
Mas saya buat pembatas arus menggunakan arduino uno. Keypad nya sebagai nilai arus yg dibatasi, gimana programnya itu mas. Terimakasih.
itu kan ada dua function besar, yg pertama function untuk logic pembatasan arus. Function yang kedua untuk mengambil nilai input batas threshold pembatasan arus dari keypad. Nah, coba bikin dua function itu secara terpisah mas, habis itu digabungkan. Cara penggabungannya: nilai yg didapat dari keypad masukkan ke sebuah variabel. Variabel inilah yang kemudian diuji di function pertama (logic pembatasan arus)
mas saya mau tanya, saya mau bikin mengatur suhu dengan inputan kayped mas, jd outputnya kipas, jd pada suhu sekian kita seting dengan kayped maka kipas hidup mas? mohon bantuan progamnya mas….
dari artikel di atas kan udah bisa dapetin tombol mana yang ditekan (variabel ‘key’). Nah, nanti didesain supaya bisa memasukkan angka dua atau tiga digit melalui keypad ini untuk menyetting suhu yang diinginkan. Kemudian settingan disimpan di suatu variabel bertipe byte atau integer (misalkan bei nama variabel tsb dg ‘settingan_suhu’). Setelah itu, kasih ‘jebakan’ program jika suhu sama dengan variabel ‘settingan_suhu’ maka nyalakan kipas. Tentunya mas harus siapkan sensor suhu dan function handler-nya untuk mengambil data suhu, dan rangkaian driver untuk menyalakan kipas. Kalo sketch-nya mah mudah aja, contoh: if (suhu==settingan_suhu){ //nyalakan kipas } else //matikan kipas untuk dapetin data… Read more »
assalamualaikum mas mau tanya cara mambuat program agar data tidak masuk ke arduino bagaimana ya? ada 1tombol start yang digunakan untuk data masuk setelah di tekan. terima kasih
pada prinsipnya walaupun arduino terhubung secara fisik dengan sensor atau perangkat lain, data itu tidak akan pernah masuk ke arduino sebelum ada program yg memerintahkan untuk memasukkan data tersebut
Mau nnya mas
Kendala saya saat menampilkan 4 digit input keypad ke lcd, saya set posisi cursor di baris 2 kolom 4, tapi yg muncul cuman 1 digit,,
Kira-kira koding program nya gimana mas biar bisa tampil 4 digit? Mohon bantuannya mas, terima kasih
diatur aja koordinat lcd-nya mas, dan ingat, setiap habis menampilkan suatu karakter di lcd, segera tambahkan 1 utk koordinat barisnya supaya karakter yg tertampil tidak menumpuk di tempat yg sama melainkan di sebelah kanan karakter yg terakhir tertampil. Semoga paham maksud saya 🙂
Udh bisa mas,,sesuai logika yg mas bilang👍
Terima kasih mas
mas saya ada rencana membuat jam digital pakai arduino, apakah harus menggunakan ic atmega 328 ? atau penggunannya bisa diganti dengan ic atmega 8 ?
Q: mas saya ada rencana membuat jam digital pakai arduino, apakah harus menggunakan ic atmega 328 ?
A: tidak harus
Q: atau penggunannya bisa diganti dengan ic atmega 8 ?
A: bisa, cuma nanti perhatikan alokasi memory-nya ya
Mau tanya mas , kalo menampilkan input keypad pda lcd 20×4 agar 2 digit bagaimana yah coding arduino nya yah ? saya keluarnya 1 digit terus . Lumayan bingung . Makasih sudah membalas pertanyaan ini .
coba cek koordinatnyamas, mungkin yang tertampil itu sebenarnya ada banyak dikit, tapi karena ditampilkan di koordinat yang sama, seakan-akan yang tertampil hanya satu digit
Kak mw tanya, kalo misalkan menambahkan alfhabet di keypad 4×4 bisa gak??? jadi seperti hp nokia keypadnya kak, soalnya saya muter muter gak ketemu di website lain
bisa, tp perlu diprogram sesuai kebutuhan. Programnya hrs bisa mendeteksi penekanan tombol yg sama dlm waktu yg cepat agar dpt menghasilkan karakter yg diinginkan
mas, saya bingung harus pakai # apalagi, saya pakai #include gabisa ke detect mulu mas. mungkin ada saran pakai yg lain?
apakah library-nya sudah diinstal?
apakah sintaks ‘include’udah benar?
contoh : #include
mas knpa angkanya saatdi tekan tidak berurutan jika saya tekan 1 s/d A maka muncul 4 s/d Bbgtu jga sebaliknya…tpi untuk angka 7 s/d D sdh sesuai…
makasi
sepertinya koneksi kabelnya mas, coba cek lagi
Sorry gan, ini kalo mau copy dari web ini bisa ga ya untuk tugas saya? saya cantumkan sumber kok
klik kanan – print (to pdf)
Maaf kak kalo mau masukin lebih dari 2 angka sekaligus gimana? Kalo char kan cuma satu angka doang, udah nyoba ganti integer tapi blm bisa
bisa pake char array, tapi metodenya sama kayak di atas hanya saja nanti di akhir program hasil pendeteksian dikumpulkan di variabel char array