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.. 🙂
99 proyek arduinoYang 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 :

Keypad 34

Keypad 44

Master Mikrokontroler

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

Aplikasi Mikrokontroler

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 162 (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

This entry was posted in Mikrokontroler AVR. Bookmark the permalink.

16 Responses to 2 Teknik Membaca keypad dengan microcontroller

  1. jefri says:

    saya mw pesan hardwarenya gan…
    ne no.Hp saya gan : 085275699125
    mohon cepet d’confirm ya gan…???

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

  3. yogi says:

    bg..mau nanya gmna cra supaya dalam penekanan keypad tidak double nampilnya di lcd walaupun ditekan lama…thanks

  4. Rosisk Apribra says:

    mas, ngitung casenya gmana?

  5. Adi says:

    Mas, saya mau nanya untuk Cara Kedua. Di situ ditulis Ddra = &B11110000 itu fungsinya apa ya? Ddra itu artinya apa?
    Terimakasih

    • admin says:

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

  6. johan says:

    mas, kalo minta dibuatin inputnya keypad 3×4, outputnya ke 3 digit 7segmen bisa ndak?? email ke ysuprasojo@gmail.com mksh.

  7. Pingback: LAPORAN PRAKTIKUM MIKROPROSESOR (Pengunci pintu (door lock) berpassword dengan keypad dan LCD) | Semua Yang Ku Tahu

  8. arga yudha says:

    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

Leave a Reply