EINT (外部中斷 / External Interrupt)

板上的 USR 按鈕對應到腳位 P6 (GPIO37/EINT20),所以如果要得知該腳位的狀態,一種方式是透過 polling 不斷地呼叫 digitalRead 來取得資訊。除此之外,還有另一種讀取資訊的方式是藉由硬體外部中斷的功能,使用 Arduino EINT 相關 API 來進行操作。

使用 Digital Read 進行讀取

  1. LED 腳位從 13 改為 7

    const int ledPin = 7; // the number of the LED pin
  2. 將按鈕腳位定義從 2 改為 6

    const int buttonPin = 6; // the number of the pushbutton pin

使用 EINT API 進行讀取

#include "Arduino.h" 
 
const int led = 7; // USR LED pin is P7 
const int usr_btn = 6; // USR BTN pin is P6 
int val = 0; // Variable that stores LED state. 
 
void pin_change(void) 
{ 
    digitalWrite(led, val); 
    val = !val; 
    Serial.println("button pressed"); 
} 
 
void setup() { 
    pinMode(led, OUTPUT); 
    attachInterrupt(usr_btn, pin_change, RISING); 
    Serial.begin(9600); 
} 
 
void loop() { 
    delay(1000); 
}

特別注意:只有 LinkIt 7697 的 P1P2P3P6 這四隻腳支援 Arduino 的 EINT API

Last updated