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

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang
  • 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.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang