2022年8月23日 星期二

NodeMCU GPIO 中斷與 Arduino IDE

 

介紹

中斷是在連續性流中隨機發生的事件。這就像您在忙於某些工作時打來的電話,並根據呼叫優先級來決定是參加還是忽略它。

基於 NodeMCU 的 ESP8266 在其 GPIO 引腳上具有中斷功能。此功能在 NodeMCU 開發套件的 D0-D8 引腳上可用。

通過 Arduino 中斷函數(即attachInterrupt、detachInterrupt )支持 GPIO 引腳中斷。

中斷可以連接到任何 GPIO 引腳,D0/GPIO16 引腳除外。支持標準 Arduino 中斷類型,即 CHANGE、RISING、FALLING。

NodeMCU 的 Arduino 中斷功能

讓我們看看用於在 Arduino IDE 中為 NodeMCU 套件設置中斷的函數。

附加中斷()

此函數用於在指定引腳上附加中斷。

句法:attachInterrupt(pin, ISR(callback function), interrupt type/mode);

參數:

pin要設置中斷的引腳號。

ISR (callback function)中斷發生時調用的ISR;這個函數不接受任何參數並且什麼也不返回。

Interrupt type/mode:它定義了何時應該觸發中斷。

CHANGE:用於在引腳值更改時觸發中斷。

RISING:用於在引腳從低電平變為高電平時觸發中斷。

FALLING:用於在引腳從高電平變為低電平時觸發中斷。

返回:

 

分離中斷()

該函數用於禁用指定 GPIO 引腳上的中斷。

句法: detachInterrupt(pin)

參數:

pin:要禁用的中斷的 GPIO 引腳。

返回:

 

例子

讓我們編寫一個 Arduino 草圖,在 NodeMCU 的第二個 GPIO 引腳上設置一個上升沿中斷。在這裡,我們在第 2 個 GPIO 引腳上連接一個開關,以在其上生成一個上升沿中斷。此外,我們將在串行監視器窗口上打印發生中斷的時間(以毫秒為單位)。

NodeMCU GPIO 切換中斷

 

用於 GPIO 中斷的 Arduino 草圖

uint8_t GPIO_Pin = D2;

void setup() {
 Serial.begin(9600);
 attachInterrupt(digitalPinToInterrupt(GPIO_Pin), IntCallback, RISING);
}

void loop() {
}

void IntCallback(){
 Serial.print("Stamp(ms): ");
 Serial.println(millis());
}

輸出窗口

Arduino 串行輸出窗口

 


資料來源:https://www.electronicwings.com/nodemcu/nodemcu-gpio-interrupts-with-arduino-ide

沒有留言: