INTERUPSI DI ARDUINO
ِ ِيم
ِِ ٱلر ِح
َ ِنِِ ٱلر ۡح َٰم َِ ِِب ۡس ِِم
َ ِِٱّلل
Berikut ini beberapa materi yang akan dibahas dalam postingan kali ini :
1. Apa itu INTERUPSI (INTERRUPT) ?
a. Fungsi Interrupts() dan Fungsi noInterrupts()
2. Arduino AttachInterrupt
3. Arduino DetachInterrupt
1. Apa itu INTERUPSI (INTERRUPT) ?
Sebelum memahami apa itu interupsi, hal pertama yang harus difahami adalah prinsip kerja dari
pemrograman di Arduino. Untuk melihat struktur dasar pemrograman di Arduino, silahkan buka
software Arduino IDE kemudian pilih Tab File > New. Kemudian muncul Arduino IDE baru yang
berisi struktur dasar pemrograman Arduino. Fungsi setup (void setup) digunakan untuk melakukan
inisialisasi pemrograman, misal sebuah pin dari Arduino akan dijadikan INPUT atau OUTPUT.
Fungsi setup dijalankan hanya sekali saja, maksudnya adalah program yang berada didalam fungsi
setup dijalankan mulai dari baris pertama hingga baris terakhir. Setelah itu eksekusi program
dilanjutkan ke dalam fungsi loop (void loop). Program utama ditempatkan di dalam fungsi loop,
misalnya program yang dibuat adalah untuk membaca suhu ruangan. Di dalam fungsi loop,
program yang kita buat akan di eksekusi secara berulang-ulang dan berlaku secara terus – menerus
selama Arduino kita dalam kondisi hidup. Berulang – ulang maksudnya adalah misal program
yang dibuat adalah sebanyak 50 baris program. Maka program akan dieksekusi mulai dari program
baris pertama hingga baris ke 50 secara berurutan (sequence). Setelah program pada baris 50
selesai dieksekusi maka eksekusi program akan dimulai kembali dari baris program yang pertama
dan terus dilanjutkan hingga baris program ke 50. Hal ini terjadi secara terus – menerus sampai
Arduino tidak mendapatkan daya.
Lalu bagaimana dengan interupsi?
Saya Akan menggunakan Analogi sederhana untuk menjelaskan maksud dari interupsi. Misal,
saya sedang ikut dalam suatu rapat yang bersifat formal. Ketika teman saya sedang melakukan
penjelasan materi di depan podium, saya kemudian mengangkat tangan kiri untuk mengajukan
interupsi, misalnya saya ingin pergi ke toilet. Maka seluruh perhatian pemirsa rapat yang awalnya
kearah teman saya yang sedang persentasi, maka akan berubah dan tertuju kearah saya. Kemudian
setelah saya mendapatkan izin dan keluar ruangan maka seluruh perhatian pemirsa rapat akan
kembali ke teman saya yang sedang persentasi. Di dalam Arduino juga sama, Eksekusi program
Arduino secara utamanya adalah mengeksekusi program yang berada di dalam fungsi loop secara
berulang - ulang. Namun ketika terjadi interupsi maka eksekusi program di dalam fungsi loop
ditinggalkan untuk sementara dan mengerjakan program yang berada di dalam fungsi milik
interupsi. Setelah program di dalam fungsi interupsi selesai di eksekusi maka program kembali
lagi kedalam fungsi loop dengan baris yang sama saat program ditinggalkan. Cara untuk membuat
fungsi interupsi akan dibahas dibagian selanjutnya.
a. Fungsi Interrupts() dan fungsi noInterrupts()
Mikrokontroller AVR Atmega yang digunakan oleh Arduino seperti Arduino UNO dan Arduino
Mega sebenarnya memiliki bnyak sekali interupsi, sebagai contoh External Interrupt, Timer
Interrupt, USART Interrupt, ADC Interrupt, dan lain-lainnya. Sebelum “era Arduino” dimana
pengembang masih menggunakan AVR Atmega dengan sistem minimum tanpa adanya bootloader
di dalamnya, interupsi yang umum digunakan adalah Timer Interrupt dan External Interrupt untuk
kalangan umum, sedangkan para pengembang yang sudah pro yang mampu melakukan akses
register AVR Atmega, penggunaan interupsi telah meluas kebagian yang lain, atau begitulah yang
saya fahami dan ketahui. Untuk Arduino sendiri karena penggunanya telah meluas bahkan sampai
yang tidak punya basic pemrograman sama sekali, maka sedikit sekali yang membahas
pengggunaan interupsi karena kebanyakan telah ditangai oleh library yang disediakan oleh
Arduino. Apalagi kalau sudah bicara tentang akses register AVR Atmega secara langsung tanpa
menggunakan library, maka sangat sedikit sekali yang melakukan hal tersebut. Padahal kalau
mampu memahami akses register secara langsung tentu penggunaan Arduino akan lebih optimal.
Penggunaan fungsi interrupts() digunakan untuk mengaktifkan kembali (Re-enables) fungsi
interupsi setelah di non aktifkan (disable) melalui fungsi noInterrupts(). Dengan mengaktifkan
fungsi interrupts() maka mengizinkan tasks yang derjalan dibelakang layar untuk kembali
beroperasi. Saya menyebutnya kembali beroperasi karena secara default-nya sudah aktif. Ketika
fungsi interupsi di non-aktifkan sebagian fungsi tidak akan dikerjakan serta data komunikasi yang
masuk juga akan diabaikan. Penon-aktifan interupsi biasanya dilakukan dengan alasan adanya
suatu program yang harus segera dieksekusi yang bersifat critical, time-sensitive atau alasan
lainnya.
Berikut ini contoh sketch penggunaan fungsi interrupts() dan fungsi noInterrupts().
Parameter Returns