Simulasi Interrupt di Proteus dan Implementasi di Arduino

Pada bagian ini, kita akan membahas simulasi di Proteus dan implementasi di Arduino untuk Hardware Interrupt (tombol) dan Timer Interrupt.
Simulasi Hardware Interrupt (Tombol) di Proteus
- Rangkaian di Proteus
Komponen yang diperlukan:
✅ Arduino Uno
✅ Push Button (Tombol)
✅ Resistor 10kΩ (Pull-down)
✅ LED
- Skema Rangkaian
- Sambungkan tombol ke pin 2 (karena pin ini mendukung Interrupt INT0).
- Gunakan resistor 10kΩ sebagai pull-down untuk mencegah noise.
- Hubungkan LED ke pin 13 sebagai indikator.
Diagram Koneksi:
(Tombol) —-> (Pin 2 Arduino)
(GND) ——-> (Resistor 10kΩ) —> (Pin 2 Arduino)
(LED) —-> (Pin 13 Arduino)
- Kode Arduino untuk Hardware Interrupt
Fungsi:
🔹 LED akan menyala dan mati setiap kali tombol ditekan.
🔹 Menggunakan interrupt RISING (pemicu saat tombol ditekan).
const int tombolPin = 2; // Tombol di Pin 2 (INT0)
const int ledPin = 13; // LED di Pin 13
volatile bool statusLED = false; // Variabel yang berubah dalam Interrupt
void setup() {
pinMode(tombolPin, INPUT_PULLUP); // Gunakan pull-up internal
pinMode(ledPin, OUTPUT);
// Mengaktifkan interrupt pada pin 2 saat tombol ditekan (RISING edge)
attachInterrupt(digitalPinToInterrupt(tombolPin), tombolInterrupt, RISING);
}
void loop() {
digitalWrite(ledPin, statusLED); // LED mengikuti status variabel
}
// ISR (Interrupt Service Routine) - Fungsi yang dipanggil saat tombol ditekan
void tombolInterrupt() {
statusLED = !statusLED; // Toggle status LED
}
Simulasi di Proteus
- Jalankan simulasi di Proteus dengan menekan tombol.
- LED akan menyala/mati setiap kali tombol ditekan.
Simulasi Timer Interrupt di Proteus
- Rangkaian Timer Interrupt
Untuk simulasi Timer Interrupt, cukup gunakan:
✅ Arduino Uno
✅ LED pada Pin 13
- Cara Kerja Timer Interrupt
🔹 Menggunakan Timer1 untuk menjalankan fungsi setiap 1 detik.
🔹 Tidak menggunakan delay(), sehingga tetap bisa multitasking.
- Kode Arduino untuk Timer Interrupt
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
noInterrupts(); // Matikan interrupt sementara
TCCR1A = 0; // Mode Normal
TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // Prescaler 1024
OCR1A = 15624; // Nilai Compare Match untuk 1 detik
TIMSK1 = (1 << OCIE1A); // Aktifkan Timer1 Compare Match Interrupt
interrupts(); // Aktifkan kembali interrupt
}
void loop() {
// Program utama tetap berjalan tanpa terganggu oleh timer
}
// ISR untuk Timer1 - dijalankan setiap 1 detik
ISR(TIMER1_COMPA_vect) {
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // Toggle LED
}
Simulasi di Proteus
- Jalankan simulasi dan perhatikan LED di pin 13.
- LED akan menyala dan mati setiap 1 detik, menandakan Timer Interrupt bekerja.
Kesimpulan
✅ Hardware Interrupt (Tombol) di Proteus
- Tombol sebagai pemicu interrupt pada pin 2.
- LED berubah status setiap kali tombol ditekan.
✅ Timer Interrupt di Proteus
- Timer1 menjalankan kode setiap 1 detik tanpa mengganggu loop utama.
- LED berkedip tanpa menggunakan delay().
Tugas Praktikum
- Modifikasi kode Hardware Interrupt agar LED menyala selama 2 detik sebelum mati kembali.
- Tambahkan push button kedua pada pin 3 untuk menyalakan LED di pin 12.
- Modifikasi Timer Interrupt agar LED berkedip setiap 500 ms.
- Tulis laporan praktikum dengan hasil simulasi dan dokumentasi perbedaan antara Hardware Interrupt dan Timer Interrupt.
Menyiapkan Library Arduino di Proteus Sebelum Simulasi Interrupt
Sebelum menjalankan simulasi hardware interrupt maupun timer interrupt seperti pada artikel ini, pastikan library Arduino sudah terpasang dengan benar di Proteus agar kode dapat dikompilasi dan disimulasikan tanpa error. Panduan lengkap instalasi library Arduino di Proteus dijelaskan pada artikel praktikum cara install library Arduino di Proteus, yang menjadi langkah dasar sebelum membangun rangkaian interrupt dengan tombol dan LED.
Menggabungkan Interrupt dengan Pembacaan Sensor Analog
Konsep interrupt yang dipelajari di sini dapat dikombinasikan dengan pembacaan sensor analog melalui ADC, misalnya untuk memicu pembacaan suhu hanya ketika tombol ditekan tanpa mengganggu proses lain yang berjalan di loop utama. Contoh praktik membaca sensor suhu menggunakan ADC di Proteus dijelaskan pada artikel praktikum membaca sensor suhu dengan ADC pada Proteus, yang bisa dipadukan dengan teknik hardware interrupt dari artikel ini.
Mengirim Hasil Interrupt Melalui Komunikasi Serial
Setelah LED berhasil merespons hardware interrupt maupun timer interrupt, status atau data terkait kejadian tersebut sering perlu dikirim ke perangkat lain menggunakan komunikasi serial untuk keperluan monitoring. Dasar-dasar pengiriman data melalui komunikasi serial dijelaskan pada artikel penggunaan komunikasi serial untuk mengirim data, yang dapat digabungkan dengan rutin ISR pada program interrupt Arduino.
Interrupt sebagai Dasar Komunikasi SPI yang Efisien
Selain digunakan untuk tombol dan timer, konsep interrupt juga menjadi dasar penting dalam komunikasi SPI, di mana pin interrupt dapat menandakan bahwa data dari sensor sudah siap dibaca tanpa perlu polling terus-menerus. Penerapan komunikasi SPI untuk sensor dan aktuator secara simulasi dibahas pada artikel penggunaan komunikasi SPI untuk sensor dan aktuator di Proteus, yang memperluas pemahaman interrupt ke komunikasi antar perangkat.
Menerapkan Timer Interrupt pada Rangkaian Digital Lain
Timer interrupt yang digunakan untuk membuat LED berkedip tanpa delay() pada artikel ini juga bisa diterapkan pada rangkaian digital lain, misalnya untuk membangkitkan pulsa clock pada rangkaian logika seperti parity generator. Contoh perancangan rangkaian digital yang memanfaatkan timing presisi dapat dilihat pada artikel perancangan odd parity generator dan checker menggunakan Proteus, yang menunjukkan aplikasi lain dari kontrol waktu presisi di Proteus.
Baca juga: Ingin Jadi Ahli IoT & Otomasi? Semua Bisa Dimulai dari Arduino! untuk memahami roadmap lengkap belajar Arduino dari dasar hingga proyek IoT.




