Rabu, 04 Juni 2025

PERCOBAAN INTERUPSI EKSTERNAL PADA ARDUINO UNO : MENDETEKSI SINYAL INPUT YANG CEPAT

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 :

 d.     Kode Sketch Program :

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