> For the complete documentation index, see [llms.txt](https://cavedu.gitbook.io/linkit-7697/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cavedu.gitbook.io/linkit-7697/linkit-7697-arduinoide/kai-fa-zhi-nan/eint-wai-bu-zhong-duan-external-interrupt.md).

# EINT (外部中斷 / External Interrupt)

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

### 使用 Digital Read 進行讀取 <a href="#externalinterrupt-shi-yong-digitalread-jin-hang-du-qu" id="externalinterrupt-shi-yong-digitalread-jin-hang-du-qu"></a>

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 進行讀取 <a href="#externalinterrupt-shi-yong-eintapi-jin-hang-du-qu" id="externalinterrupt-shi-yong-eintapi-jin-hang-du-qu"></a>

```
#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); 
}
```

{% hint style="info" %}
特別注意：只有 LinkIt 7697 的 **P1**、**P2**、**P3** 和 **P6** 這四隻腳支援 Arduino 的 EINT API
{% endhint %}
