PERCOBAAN INTERUPSI
EKSTERNAL PADA ARDUINO UNO
By. Iyon Manakarra
Dalam sistem mikrokontroler, interupsi
eksternal adalah salah satu fitur penting yang memungkinkan perangkat untuk
merespons suatu kejadian secara langsung tanpa harus terus-menerus memeriksa
status input dalam loop utama. Arduino Uno sebagai salah satu platform
mikrokontroler yang populer mendukung interupsi eksternal melalui pin tertentu,
yang dapat digunakan untuk berbagai aplikasi seperti pendeteksian sinyal cepat,
pengukuran kecepatan, serta implementasi sistem keamanan dan alarm.
Percobaan interupsi eksternal pada Arduino
Uno bertujuan untuk memahami bagaimana mekanisme interupsi bekerja dalam
mendeteksi perubahan sinyal input secara efisien. Interupsi bekerja dengan cara
menangguhkan eksekusi program utama untuk sementara waktu guna menjalankan
fungsi tertentu yang telah ditentukan, yang disebut sebagai Interrupt Service
Routine (ISR). Hal ini memungkinkan sistem untuk merespons perubahan secara
cepat tanpa harus bergantung pada polling konvensional dalam loop utama.
Pada percobaan ini, berbagai skenario
penggunaan interupsi eksternal akan diuji, seperti deteksi penekanan tombol,
penghitungan pulsa dari rotary encoder, serta pemantauan sensor yang sensitif
seperti PIR atau sensor Hall Effect. Dengan menerapkan interupsi, Arduino dapat
menangani perubahan sinyal dengan lebih efisien dan akurat dibandingkan metode
pemantauan biasa.
Pemahaman tentang interupsi eksternal
sangat berguna dalam pengembangan sistem real-time yang memerlukan respons
cepat terhadap input eksternal. Oleh karena itu, percobaan ini akan menjadi
dasar dalam implementasi berbagai proyek yang mengandalkan interupsi sebagai
mekanisme kendali utama.
Interupsi eksternal pada Arduino Uno memungkinkan board untuk merespons kejadian secara langsung. Berikut adalah beberapa contoh percobaan penggunaan interupsi eksternal beserta kode programnya :
MENDETEKSI SINYAL INPUT
YANG CEPAT
a. Deskripsi:
Program ini dirancang untuk mendeteksi
perubahan cepat pada sinyal input menggunakan interupsi eksternal pada Arduino.
Setiap kali tombol ditekan atau dilepaskan, LED akan berganti kondisi: menyala
jika sebelumnya mati, dan mati jika sebelumnya menyala. Penggunaan interupsi
memungkinkan sistem merespons perubahan sinyal dengan cepat tanpa perlu
terus-menerus mengecek status tombol dalam loop utama, sehingga lebih efisien
dan akurat.
Interupsi adalah mekanisme dalam
mikrokontroler yang memungkinkan sistem merespons perubahan sinyal input secara
langsung tanpa harus terus-menerus memeriksa status input dalam loop utama.
Dalam program ini, digunakan interrupt eksternal pada pin 2 dengan mode CHANGE,
sehingga akan dipicu baik saat tombol ditekan maupun dilepaskan. Dengan cara
ini, LED akan menyala ketika tombol ditekan pertama kali dan mati saat tombol
ditekan berikutnya.
Pull-down resistor 10kΩ digunakan untuk memastikan bahwa input tombol memiliki kondisi LOW secara default, sehingga tidak terjadi floating input yang bisa menyebabkan deteksi tombol yang tidak stabil. Resistor 220Ω digunakan untuk membatasi arus ke LED agar tidak terlalu besar dan melindungi komponen dari kerusakan.
b. Bahan:
·
Arduino Uno (1 Buah)
·
LED 5mm (1 buah)
·
Resistor 220Ω (1 Buah)
·
Tombol push button (1 Buah)
·
Resistor 10kΩ (1 Buah)
c. Gambar
Schematich :
volatile
bool ledState = false;
void
setup() {
pinMode(13,
OUTPUT);
attachInterrupt(digitalPinToInterrupt(2),
toggleLED, CHANGE);
}
void
loop() {
digitalWrite(13, ledState);
}
void
toggleLED() {
ledState = !ledState;
}
e. Penjelasan
Program:
·
Menggunakan Interupsi Eksternal pada pin 2 untuk
mendeteksi perubahan tombol secara efisien.
·
Mode Interupsi CHANGE → Memicu perubahan baik
saat tombol ditekan maupun dilepaskan.
·
Variabel volatile bool ledState = false;
o
Digunakan untuk menyimpan status LED agar bisa
diubah dari dalam fungsi interupsi.
o
Kata kunci volatile digunakan agar nilai
variabel tidak dioptimalkan oleh compiler, karena dapat berubah kapan saja
akibat interupsi.
·
Fungsi setup()
o
pinMode(13, OUTPUT); → Mengatur pin 13 sebagai
output untuk mengendalikan LED.
o
attachInterrupt(digitalPinToInterrupt(2),
toggleLED, CHANGE);
o
Menghubungkan interupsi ke pin 2.
o
Fungsi toggleLED akan dipanggil setiap kali
terjadi perubahan sinyal pada pin 2 (HIGH → LOW atau LOW → HIGH).
·
Fungsi loop() hanya bertugas mengontrol LED,
meningkatkan efisiensi eksekusi program.
o
digitalWrite(13, ledState); → Menulis nilai
ledState ke pin 13 untuk mengontrol kondisi LED.
·
Fungsi toggleLED()
o
ledState = !ledState; → Membalik nilai ledState,
sehingga LED menyala saat tombol ditekan pertama kali dan mati saat ditekan
berikutnya.
o
Fungsi ini dijalankan setiap kali interupsi
terjadi, tanpa mengganggu eksekusi utama dalam loop().
Tidak ada komentar:
Posting Komentar
Mari berdiskusi dan silahkan memberi komentar berupa kritik dan saran yang bersifat membangun ya sobat smua....!