JAM DIGITAL 7 SEGMENT DENGAN INTERFACE KEYPAD - TUGAS I SISMIK EL3014 TAHAP 4

Tulisan ini dibuat untuk memenuhi tugas mata kuliah Sistem Mikroprosesor (EL3014) kelas 03 oleh dosen Farkhad Ihsan Hariadi.

Dibuat oleh:
  • Aditya Rizky Maulana (13215007) 
  • Geraldy William L (13215042) 
Pada kesempatan kali ini, kami ingin mempresentasikan tugas pertama kami, yaitu jam digital 7
segment. Jam digital ini berjalan dengan Arduino Uno dengan mikrokontroler AVR ATMega 328. Pada tahap keempat, kami telah mengganti input push button menjadi keypad, yang juga dapat digunakan sebagai interrupt. Keypad ini digunakan untuk masuk ke mode setel waktu dan memasukkan waktu yang diinginkan dengan tombol angka.

Tahap 4 (Jumat, 9 Maret 2018):

Kami telah mengganti push button yang digunakan sebagai interrupt eksternal menjadi keypad 4x4. Keypad ini dapat berfungsi untuk masuk ke mode setel waktu dan menyetel jam dan menit dengan memasukkan angka yang kita inginkan.
Keypad ini tersambung pada pin PC0-PC5 dan PB4-PB5, dengan rincian sebagai berikut:
  • Baris : PC5, PC4, PC3, PC2
  • Kolom : PC1, PC0, PB4, PB5
Rangkaian pada breadboard menjadi seperti pada Gambar 1 di bawah.


Gambar 1 Rangkaian Jam Digital pada Breadboard dengan Tambahan Dua Buah Push Button

Source code untuk jam digital dengan multitasking ini kami sertakan dalam link berikut:
Source Code

Sama seperti pada tahap sebelumnya, interrupt yang digunakan adalah pin change interrupt. Namun sumber interrupt berpindah dari port B (PCINT0) ke port C (PCINT1).
Untuk pembacaan masukan keypad, kami menggunakan teknik scanning, yaitu memeriksa setiap kolom tombol pada baris mana saja yang sedang ditekan. Setiap tombol yang ditekan memiliki kode tertentu, dari 0 sampai dengan 15.

Modifikasi program yang kami lakukan:
  • Menambah inisialisasi interrupt dengan sumber pin change interrupt pada register PCICR dan PCMSK1. Kami menggunakan PC2-PC5 sebagai input, sehingga bit yang harus diaktifkan pada PCICR adalah PCIE1 dan bit yang diaktifkan pada PCMSK1 adalah PCINT10-PCINT13.
  • Pada saat port C mendeteksi perubahan input pada PC2-PC5 fungsi ISR(PCINT1_vect) akan terpanggil, dengan perintah sebagai berikut:
    • Mengecek tombol pada keypad mana yang ditekan
    • Apabila tombol * yang ditekan, masuk ke mode setel waktu. Input waktu menggunakan tombol angka pada keypad. Proses masukan angka dilakukan dengan mengkonversi input tombol angka pada keypad menjadi sebuah angka. Jika input menit atau jam tidak valid (jam>24 atau menit>60), maka masukan angka menjadi 0, sampai memasukkan bilangan jam atau menit yang valid. Setelah itu, menekan tombol # akan menyimpan masukan menit, kemudian jam, dan kembali ke tampilan jam.
    • Apabila tombol # ditekan, format waktu berubah menjadi menit-detik dan jam-menit secara bergantian.
Mode penyetelan jam di atas berfungsi dengan baik. Hanya saja masih terdapat bouncing pada saat mengatur format waktu. Berikut ini adalah video hasil percobaan jam digital dengan keypad.

Tidak ada komentar

Leave a Reply