2 Teknik Membaca keypad dengan microcontroller
Keypad, saya yakin anda sudah tidak asing lagi dengan istilah tersebut. Setiap saat anda selalu memencetnya. Tulis sms-lah, update status-lah, atau hanya sekedar supaya terlihat ‘sok sibuk’ hehe.. 🙂
Yang saya maksud tadi adalah keypad HP (tidak berlaku bagi yang HP nya touch screen lho). Nah keypad yang akan dibahas ini adalah keypad yang biasa dipakai aplikasi bersama mikrokontroler. Fungsinya sebagai tombol masukan untuk member sebuah nilai. Beberapa contoh keypad :


Kalo dibongkar maka ketahuan bahwa dalemnya saklar yang disusun secara matrik, ada baris dan kolomnya.
Interfacing keypad dengan mikrokontroler juga sangat gampang. Tinggal hubungkan masing – masing pin ke kaki mikrokontroler, contohnya kayak gini :
Membacanyapun juga tidak susah – susah amir, apalagi kalau pakai BASCOM-AVR. Paling tidak ada 2 cara untuk membaca ‘tombol’ keypad ini.
Cara pertama.
Kita ambil contoh keypad ukuran 3×4. Cara pertama ini kita tinggal pakai fungsi yang sudah ada di BASCOM-AVR, yaitu : Getkbd().
Program lengkapnya begini :
$regfile = “m16def.dat”
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Lcd “Tombol=”
Config Kbd = Porta
Dim Keypad As Byte
Do
Keypad = Getkbd()
If Keypad <> 16 Then
Gosub Get_keypad
Waitms 350
End If
Loop
End
Get_keypad:
Locate 1 , 8
Select Case Keypad
Case 19 : Lcd “0”
Case 0 : Lcd “1”
Case 4 : Lcd “2”
Case 8 : Lcd “3”
Case 1 : Lcd “4”
Case 5 : Lcd “5”
Case 9 : Lcd “6”
Case 2 : Lcd “7”
Case 18 : Lcd “8”
Case 10 : Lcd “9”
Case 3 : Lcd “*”
Case 11 : Lcd “#”
End Select
Return
End
Cara kedua.
Cara konvensional, walaupun saya sering pakai yang ini. Aktifkan secara berurutan kolomnya kemudian dibaca logika barisnya.
$regfile = “m16def.dat”
$crystal = 16000000
Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.2 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2
Cursor Off
Cls
Lcd “Tombol=”
Ddra = &B11110000
Porta = &B11111111
Do
Porta = &B11101111
If Pina.0 = 0 Then
Locate 1 , 8
Lcd “1”
Elseif Pina.1 = 0 Then
Locate 1 , 8
Lcd “4”
Elseif Pina.2 = 0 Then
Locate 1 , 8
Lcd “7”
Elseif Pina.3 = 0 Then
Locate 1 , 8
Lcd “*”
End If
‘——— kolom 2
Porta = &B11011111
If Pina.0 = 0 Then
Locate 1 , 8
Lcd “2”
Elseif Pina.1 = 0 Then
Locate 1 , 8
Lcd “5”
Elseif Pina.2 = 0 Then
Locate 1 , 8
Lcd “8”
Elseif Pina.3 = 0 Then
Locate 1 , 8
Lcd “0”
End If
‘——— kolom 3
Porta = &B10111111
If Pina.0 = 0 Then
Locate 1 , 8
Lcd “3”
Elseif Pina.1 = 0 Then
Locate 1 , 8
Lcd “6”
Elseif Pina.2 = 0 Then
Locate 1 , 8
Lcd “9”
Elseif Pina.3 = 0 Then
Locate 1 , 8
Lcd “#”
End If
Loop
End
Hasilnya tampak seperti ini :
Oya, bagi yang mau hardware seperti gambar diatas, silahkan ambil, cukup ganti Rp 290 rb saja (kalo tanpa keypad cukup 265 rb) dengan spec :
- Berbasis ATmega16A
- LCD 16×2 (blue backlight)
- Crystal 16 MHz
- 3 Port Ekspansi : PORTA, PORTB, PORTD
- 2 button (INT0 dan INT1)
- Terintegrasi dengan USB Downloader (sehingga program tinggal download aja)
- Kabel USB
- PCB Fiber
saya mw pesan hardwarenya gan…
ne no.Hp saya gan : 085275699125
mohon cepet d’confirm ya gan…???
saya sedang mencoba program Keypad = Getkbd() pada atmega128, saat di simulasi untuk menekan keypadnya ga bisa jalan ya.. kira2 apa problemnya? apakah simulasi pada software berlaku juga pada kondisi sebenarnya pada hardware.. tapi untuk Cara konvensional, makasih atas masukannya..
Setingan keypadnya sudah benar ?
Trus coba dulu hasil dari penekanan keypad ditampilkan di LCD.
bg..mau nanya gmna cra supaya dalam penekanan keypad tidak double nampilnya di lcd walaupun ditekan lama…thanks
Dikasih anti bounching, bisa dikasih penundaan (delay) setelah tombol ditekan. Sekitar 200 – 300 ms.
cara lain ad bg??
trus stu lg bg saya bsa ga minta tlong buatin list program untuk set password
dari keypad nampilin di lcd ,sya pke bascom 8051…klau bsa krim lwat email saya ya bg
yogi.frans@yahoo.com
tlong ya bg thanks…
mohon maaf mas, saat ini lum bisa, cz masih full orderan nih..
mas, ngitung casenya gmana?
maksudnya mas ?
Mas, saya mau nanya untuk Cara Kedua. Di situ ditulis Ddra = &B11110000 itu fungsinya apa ya? Ddra itu artinya apa?
Terimakasih
DDRA itu register untuk menentukan fungsi PORTA sebagai input atau output. Jika input maka DDRA diisi dg 0 ‘LOW” dan jika output maka DDRA diisi dengan 1 ‘HIGH’.
mas, kalo minta dibuatin inputnya keypad 3×4, outputnya ke 3 digit 7segmen bisa ndak?? email ke ysuprasojo@gmail.com mksh.
Untuk order program langsung saja mas ke inkubatek@yahoo.com
Trims
Pingback:LAPORAN PRAKTIKUM MIKROPROSESOR (Pengunci pintu (door lock) berpassword dengan keypad dan LCD) | Semua Yang Ku Tahu
artikelnya bagus gan, kunjungi juga website saya di membaca status switch di arduino uno r3 arga yudha
atau link.nya di http://www.argayudhaadhiprama.com/2016/04/11/membaca-status-switch-arduino-uno-r3/
untuk tutorial tentang jaringan komputer kunjungi juga di http://argayudhaadhiprama.blogspot.co.id/
trimakasih dari arga yudha adhiprama
Ok mas Arga Yudha ..