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
  1. Sambungkan tombol ke pin 2 (karena pin ini mendukung Interrupt INT0).
  2. Gunakan resistor 10kΩ sebagai pull-down untuk mencegah noise.
  3. 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

  1. Jalankan simulasi di Proteus dengan menekan tombol.
  2. 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

  1. Jalankan simulasi dan perhatikan LED di pin 13.
  2. 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

  1. Modifikasi kode Hardware Interrupt agar LED menyala selama 2 detik sebelum mati kembali.
  2. Tambahkan push button kedua pada pin 3 untuk menyalakan LED di pin 12.
  3. Modifikasi Timer Interrupt agar LED berkedip setiap 500 ms.
  4. 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.

Related Articles

Leave a Reply