Blog Archive

Arduino Indonesia. Gambar tema oleh Storman. Diberdayakan oleh Blogger.

Supported by Electronics 3 in 1

1. Jasa pencetakan PCB single layer dengan harga paling murah.

(Metode Pembuatan dengan Transfer Toner)
>PCB design sendiri (siap cetak) : Rp.150,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

(Metode Sablon Full Masking dan Silk Screen minimal pemesanan 100 Pcs)
>PCB design sendiri (siap cetak) : Rp.200,-/Cm2
>PCB design dari kami : Rp.250,-/Cm2

2. Jasa perancangan, perakitan, dan pembuatan trainer pembelajaran elektronika untuk SMK dan Mahasiswa.

3. Jasa perancangan, perakitan, dan pembuatan berbagai macam kontroller, sensor, aktuator, dan tranduser.
>Design Rangkaian / Sistem Elektronika
>Design Rangkaian / Sistem Instrumentasi
>Design Rangkaian / Sistem Kendali
>Kerjasama Riset (data atau peralatan)
>Kerjasama Produksi Produk-Produk KIT Elektronika
>Produksi Instrumentasi Elektronika

4. Jasa Pembuatan Proyek, Tugas Akhir, Tugas Laboratorium, PKM, Karya Ilmiah, SKRIPSI, dll

Like My Facebook

Popular Posts

Rabu, 30 Juli 2025

Belajar Dasar Interrupt di Raspberry Pi Pico: Pengertian dan Contoh Penggunaan

Raspberry Pi Pico adalah microcontroller board yang didukung oleh chip RP2040, menawarkan fleksibilitas tinggi untuk proyek IoT, robotika, dan embedded system. Beli sekarang Raspberry Pi Pico dan mulai proyek impianmu dengan perangkat yang cepat dan efisien di sini. Salah satu fitur penting yang sering digunakan dalam pemrograman microcontroller adalah interrupt. Interrupt memungkinkan microcontroller untuk merespons suatu peristiwa secara cepat tanpa harus terus-menerus memeriksa status input (polling). Pada artikel ini, kita akan mempelajari dasar-dasar interrupt di Raspberry Pi Pico, mulai dari pengertian, cara kerja, hingga contoh implementasi menggunakan MicroPython dan C/C++.  

Apa itu Interrupt? 


Interrupt (interupsi) adalah sinyal yang dikirim ke microcontroller untuk menghentikan sementara eksekusi program utama dan menjalankan fungsi khusus (Interrupt Service Routine/ISR) sebagai respons terhadap suatu peristiwa eksternal atau internal.   

1. Sinyal yang Menghentikan Sementara Program Utama

    - Interrupt adalah sinyal khusus yang memberitahu mikrokontroler bahwa ada sesuatu yang perlu ditangani segera.

    - Saat sinyal interrupt datang, program utama dihentikan sementara, dan mikrokontroler fokus menangani hal itu.

2. Direspons dengan Menjalankan ISR (Interrupt Service Routine)

    - ISR adalah fungsi khusus yang ditulis untuk menangani kejadian interrupt.

    - Setelah ISR selesai dijalankan, mikrokontroler kembali ke program utama di titik terakhir yang ditinggalkan.

3. Bisa Disebabkan oleh Peristiwa Eksternal atau Internal

    - Peristiwa eksternal: seperti tombol ditekan, sensor mendeteksi gerakan, sinyal dari pin GPIO.

    - Peristiwa internal: seperti timer habis, komunikasi serial selesai, overflow counter.

4. Meningkatkan Efisiensi Program

    - Tanpa interrupt, program harus terus menerus memeriksa status perangkat (polling).

    - Dengan interrupt, CPU hanya merespons saat benar-benar diperlukan, jadi lebih hemat daya dan efisien.

5. Contoh Sederhana

    Misalnya, kamu membuat proyek alarm:

        - Saat sensor PIR mendeteksi gerakan, interrupt aktif → ISR berbunyi alarm.

        - Program utama tetap bisa membaca suhu atau mengirim data, tanpa harus selalu cek sensor gerak.

 

Jenis-jenis Interrupt di Raspberry Pi Pico

 

1. External Interrupt

    - Dihasilkan dari perubahan sinyal pada pin GPIO, misalnya saat tombol ditekan atau sensor memberikan sinyal HIGH/LOW.

    - Contoh kasus:

        - Tombol ditekan untuk menyalakan lampu.

        - Sensor gerak (PIR) mendeteksi aktivitas.

    - Kapan digunakan:

        - Ketika ingin merespons input pengguna secara langsung dan cepat.

    - Kelebihan:

        - Hemat daya karena CPU tidak perlu mengecek status pin terus-menerus.

    - MicroPython: Didukung melalui Pin.irq().

2. Timer Interrupt

    - Dipicu oleh timer internal setelah waktu tertentu berlalu.

    - Contoh kasus:

        - Membaca sensor setiap 1 detik otomatis.

        - Menyalakan atau mematikan beban secara berkala.

    - Kapan digunakan:

        - Untuk tugas-tugas periodik (berulang) tanpa mengganggu alur program utama.

    - Kelebihan:

        - Cocok untuk pengukuran waktu, delay presisi, atau sistem penjadwalan ringan.

3. Hardware Interrupt

    - Dipicu oleh peristiwa dari modul internal, seperti UART, SPI, atau PWM.

    - Contoh kasus:

        - UART menerima data serial dari modul lain (misalnya sensor GPS).

        - PWM menyelesaikan satu siklus sinyal.

    - Kapan digunakan:

        - Ketika ingin merespons cepat dari komunikasi data atau sinyal PWM.

    - Kelebihan:

        - Membantu menghindari kehilangan data dari perangkat eksternal.


Cara Kerja Interrupt di Raspberry Pi Pico

 

Ketika interrupt terjadi:  

1. Microcontroller menyimpan konteks program yang sedang berjalan (register, program counter).  

2. Melompat ke fungsi ISR (Interrupt Service Routine) yang telah ditentukan.  

3. Setelah ISR selesai, program utama dilanjutkan dari titik sebelumnya.  

Keuntungan menggunakan interrupt:  

- Menghemat daya karena tidak perlu polling.  

- Respon lebih cepat terhadap event eksternal.  

- Efisiensi CPU karena tidak terus-menerus memeriksa input.  

 

Contoh Penggunaan Interrupt di Raspberry Pi Pico dengan MicroPython

 

Berikut ini contoh sederhana menggunakan interrupt pada GPIO Raspberry Pi Pico dengan MicroPython:

1. Interrupt dengan Tombol (Button Press)

Kita akan membuat program yang menyalakan/mematikan LED saat tombol ditekan menggunakan interrupt.  

Komponen yang Dibutuhkan:

- Raspberry Pi Pico  

- LED  

- Resistor 220Ω  

- Push button  

- Kabel jumper  

Rangkaian:

- Hubungkan LED ke GPIO 15 melalui resistor.  

- Hubungkan push button ke GPIO 14 dan 3.3V.  

- Gunakan pull-down resistor (bisa diaktifkan secara software).  

Kode MicroPython:

 

from machine import Pin

import time


# Konfigurasi LED dan tombol

led = Pin(15, Pin.OUT)

button = Pin(14, Pin.IN, Pin.PULL_DOWN)


# Variabel status LED

led_state = False


Fungsi Interrupt Service Routine (ISR)

def button_pressed(pin):

    global led_state

    led_state = not led_state

    led.value(led_state)

    print("Tombol ditekan! LED:", "ON" if led_state else "OFF")


# Set interrupt pada rising edge (tombol ditekan)

button.irq(trigger=Pin.IRQ_RISING, handler=button_pressed)


print("Program utama berjalan...")

while True:

    time.sleep(1)  # Program utama tetap berjalan

 

Penjelasan Kode:

- `button.irq()` mengatur interrupt pada pin GPIO 14 dengan trigger `IRQ_RISING` (saat tombol ditekan).  

- Ketika tombol ditekan, fungsi `button_pressed()` dipanggil dan mengubah status LED.  

- Program utama tetap berjalan tanpa perlu memeriksa status tombol terus-menerus.  

Ingin langsung praktek? Beli sekarang Raspberry Pi Pico dan mulai eksperimenmu klik di sini.

 

Contoh Interrupt di Raspberry Pi Pico dengan C/C++

 

Jika Anda menggunakan C/C++ dengan SDK Raspberry Pi Pico, berikut contoh implementasi interrupt.  

1. Interrupt GPIO dengan Tombol

Kode C:

 

#include "pico/stdlib.h"

#include "hardware/gpio.h"


#define LED_PIN 15

#define BUTTON_PIN 14


volatile bool led_state = false;


// Interrupt Handler

void gpio_callback(uint gpio, uint32_t events) {

    if (gpio == BUTTON_PIN) {

        led_state = !led_state;

        gpio_put(LED_PIN, led_state);

        printf("Tombol ditekan! LED: %s\n", led_state ? "ON" : "OFF");

    }

}


int main() {

    stdio_init_all();

    gpio_init(LED_PIN);

    gpio_set_dir(LED_PIN, GPIO_OUT);

    gpio_init(BUTTON_PIN);

    gpio_set_dir(BUTTON_PIN, GPIO_IN);

    gpio_pull_down(BUTTON_PIN);


    // Set interrupt callback

    gpio_set_irq_enabled_with_callback(BUTTON_PIN, GPIO_IRQ_EDGE_RISE, true, &gpio_callback);


    printf("Program utama berjalan...\n");

    while (1) {

        tight_loop_contents();  // Program utama

    }

}


Penjelasan Kode:

- `gpio_set_irq_enabled_with_callback()` mengaktifkan interrupt pada `BUTTON_PIN` dengan trigger `GPIO_IRQ_EDGE_RISE`.  

- Ketika tombol ditekan, fungsi `gpio_callback()` dieksekusi.  

- `volatile` digunakan karena variabel `led_state` diubah dalam ISR.  

 

Tips dan Best Practice Menggunakan Interrupt

 

1. Minimalkan Beban di ISR

   - Hindari delay atau operasi berat di ISR.  

   - Gunakan flag dan proses di loop utama jika perlu.  

2. Debouncing untuk Tombol

   - Interrupt bisa terpicu berulang kali karena noise (bouncing).  

   - Gunakan timer atau delay sederhana untuk debouncing.  

Contoh Debouncing di MicroPython:


   from machine import Pin, Timer


   debounce_timer = Timer()


   def button_pressed(pin):

       debounce_timer.init(mode=Timer.ONE_SHOT, period=200, callback=lambda t: None)

       # Logika interrupt


3. Hindari Shared Variable tanpa Proteksi

   - Jika variabel diakses dari ISR dan program utama, gunakan mekanisme seperti disable interrupt sementara atau atomic operation.  

 

Jangan lewatkan kesempatan belajar langsung! Beli sekarang E-book Raspberry Pi Pico dan mulailah eksplorasi interrupt di dunia nyata. Dengan hardware yang tepat, belajar mikrokontroler jadi jauh lebih menyenangkan dan aplikatif.


Baca juga : Perbedaan Raspberry Pi Pico dan Raspberry Pi Pico W: Edukasi Dasar untuk Pemula

 

 

 

 

 

 

 

 

 

Siap Untuk Membuat Proyek Impianmu Menjadi Kenyataan?

Klik di sini untuk chat langsung via WhatsApp dan dapatkan dukungan langsung dari tim ahli kami! 

 

0 on: " Belajar Dasar Interrupt di Raspberry Pi Pico: Pengertian dan Contoh Penggunaan"