📈
Ween's Lab
UdemyYouTubeTikTok
  • Welcome
  • 📻FPGA Tutorials
    • FPGA Boards: Getting Started
      • Getting Started with PYNQ on Kria KV260 Vision AI Starter Kit
      • Getting Started with PYNQ on Red Pitaya STEMlab 125-14
      • Getting Started with PYNQ on ZYBO
    • FPGA Ethernet Tutorial
      • FPGA Tutorial Ethernet 1: Simple TCP Server
    • PYNQ FPGA Tutorial 101
      • Part 0: Introduction
      • Part 1: GPIO
      • Part 2: Custom IP
      • Part 3: Memory
      • Part 4: ANN Processor
    • PYNQ FPGA Tutorial 102
      • Part 0: Introduction
      • Part 1: Memory Mapped
      • Part 2: Direct Memory Access
      • Part 3: AXI-Lite Multiplier
      • Part 4: AXI-Stream Multiplier with DMA
      • Part 5: AXI-Lite GCD
      • Part 6: AXI-Stream GCD with DMA
      • Part 7: Access to DDR from PL
    • ZYNQ FPGA Tutorial
      • Part 1: Gate-Level Combinational Circuit
      • Part 2: RT-Level Combinational Circuit
      • Part 3: Regular Sequential Circuit
      • Part 4: FSM Sequential Circuit
      • Part 5: ZYNQ Architecture
      • Part 6: ARM CPU and FPGA Module
      • Part 7: FPGA Memory
      • Part 8: Hardware Accelerator for Neural Networks
    • ZYNQ FPGA Linux Kernel Module
      • Cross Compiling Kernel, Kernel Module, and User Program for PYNQ
      • Configure PL to PS Interrupt in Kernel Module
      • Configure AXI DMA in Kernel Module
  • 📟Proyek Arduino
    • Kumpulan Proyek
      • Rangkaian LED
      • LED Berkedip Nyala Api
      • LED Chaser
      • LED Binary Counter
      • OLED 128x4 Bitcoin Ticker
      • Rangkaian Button
      • Button Multifungsi
      • Button Interrupt
      • Button Debouncing
    • Pelatihan Mikrokontroler Arduino ESP32
      • Bab 1 Pengenalan Mikrokontroler
      • Bab 2 Pengenalan Arduino
      • Bab 3 Pengenalan Bahasa C
      • Bab 4 Digital Output
      • Bab 5 Digital Input
      • Bab 6 Serial Communication
      • Bab 7 Analog-to-Digital Conversion
      • Bab 8 Interrupt
      • Bab 9 Timer
      • Bab 10 Pulse-Width Modulation
      • Bab 11 SPI Communication
      • Bab 12 I2C Communication
  • 💰Finance
    • Coding for Finance
      • Build a Bitcoin Price Alert with Google Cloud and Telegram
      • Build a Bitcoin Ticker with ESP32 and Arduino
      • Stock Price Forecasting with LSTM
    • Trading dan Investasi
      • Istilah Ekonomi, Keuangan, Bisnis, Trading, dan Investasi
      • Jalan Menuju Financial Abundance
      • Memahami Korelasi Emas, Oil, Dollar, BTC, Bonds, dan Saham
      • Mindset Trading dan Investasi
      • Rangkuman Buku: Rahasia Analisis Fundamental Saham
      • Rangkuman Buku: The Psychology of Money
      • Rangkuman Kuliah: Introduction to Adaptive Markets
      • Rumus Menjadi Orang Kaya
  • 📝Life
    • Life Quotes
Powered by GitBook
On this page
  • Penjelasan Proyek
  • Daftar Komponen
  • Rangkaian
  • Kode Program
  • Hasil
  1. Proyek Arduino
  2. Kumpulan Proyek

Button Interrupt

PreviousButton MultifungsiNextButton Debouncing

Last updated 11 months ago

Penjelasan Proyek

Pada proyek ini, kita akan membuat tombol dengan interrupt.

Daftar Komponen

Komponen yang diperlukan yaitu sebagai berikut:

  • Board ESP32

  • Breadboard

  • Push button

  • LED 5 mm berwarna merah dan hijau

  • Resistor 100 Ω

Rangkaian

Rangkaian yang dibuat yaitu sebagai berikut. Button dirangkai dengan konfigurasi rangkaian active-low dengan internal pull-up resistor pada pin GPIO 23. LED merah dirangkai secara active-high ke pin 32 dan LED hijau dirangkai secara active-high ke pin 26.

Kode Program

Kode program yang dibuat yaitu sebagai berikut. Fungsi attachInterrupt() berfungsi untuk menghubungkan pin GPIO input dengan interrupt. Fungsi ini memiliki tiga argumen input yaitu pin GPIO, nama fungsi ISR, dan mode interrupt:

  • pin merupakan nomor pin GPIO yang akan dihubungkan dengan interrupt. Disarankan menggunakan fungsi digitalPinToInterrupt() untuk memasukkan argumen ini.

  • intRoutine merupakan nama fungsi ISR yang kita definisikan.

  • mode merupakan mode trigger interrupt yang akan digunakan. Terdapat lima mode trigger interrupt pada ESP32:

    • LOW: trigger interrupt ketika pin bernilai LOW

    • HIGH: trigger interrupt ketika pin bernilai HIGH

    • CHANGE: trigger interrupt ketika pin berubah nilai dari HIGH menjadi LOW atau LOW menjadi HIGH.

    • FALLING: trigger interrupt ketika pin berubah nilai dari HIGH menjadi LOW.

    • RISING: trigger interrupt ketika pin berubah dari LOW menjadi HIGH.

Fungsi button_isr() akan dipanggil ketika ada interrupt dari button. Fungsi ini akan menyalakan atau mematikan LED merah.

button_interrupt.ino
#define RED_LED_PIN     32
#define GREEN_LED_PIN   26
#define BTNPIN          23

void IRAM_ATTR button_isr()
{
  if (digitalRead(BTNPIN) == LOW)
    digitalWrite(RED_LED_PIN, HIGH);
  else
    digitalWrite(RED_LED_PIN, LOW);
}

void setup()
{
  pinMode(GREEN_LED_PIN, OUTPUT);
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(BTNPIN, INPUT_PULLUP);

  attachInterrupt(digitalPinToInterrupt(BTNPIN), button_isr, CHANGE);
}

void loop()
{
  digitalWrite(GREEN_LED_PIN, LOW);
  delay(2000);
  digitalWrite(GREEN_LED_PIN, HIGH);
  delay(2000);emb

Hasil

Hasil dari proyek ini yaitu pada gambar berikut ini. Interrupt menyebabkan LED merah menyala pada saat bersamaan LED hijau berkedip.

📟
proyek_arduino/button/button_interrupt/button_interrupt.ino at main · weenslab/proyek_arduinoGitHub
Logo