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
No | Materi | Tanggal | Waktu | Harga | Lokasi | View | Action |
---|---|---|---|---|---|---|---|
1 | IOT PLC SCADA Siemens | 7-8 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
2 | IOT PLC SCADA Omron | 14 - 15 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
3 | IOT PLC SCADA Schneider | 21-22 Juni 2025 | 08.00 -16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
4 | IOT PLC SCADA Allen Bradley | 28-29 Juni 2025 | 08.00-16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
- 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.