文章目錄標題
ESP8266 NodeMCU數位輸入和數位輸出(Arduino IDE)
在本入門指南中,您將學習如何使用帶Arduino IDE的ESP8266 NodeMCU板讀取數位輸入(如按鈕開關)和控制數位輸出(如LED)。
先決條件
ESP8266 NodeMCU控制數位量輸出
首先,您需要將要控制的GPIO設置為 輸出值。使用pinMode() 功能如下:
pinMode(GPIO, OUTPUT);
要控制數位輸出,您只需要使用 digitalWrite() 函數,該函數接受您所引用的GPIO(整數)和狀態(作為參數) 如HIGH或LOW。
digitalWrite(GPIO, STATE);
請參閱《ESP8266 GPIO參考指南》,了解哪些GPIO更適合用作輸出。
ESP8266 NodeMCU讀取數位輸入
首先,設置要讀取的GPIO 輸入, 使用 pinMode()功能如下:
pinMode(GPIO, INPUT);
要讀取數位輸入(如按鈕),請使用 digitalRead()函數,該函數接受您所引用的GPIO(整數)作為參數。
digitalRead(GPIO);
請參閱《ESP8266 GPIO參考指南》,了解哪些GPIO更適合用作輸入。
專案範例
為了向您展示如何使用數位輸入和數位輸出,我們將建立一個帶有按鈕和LED的簡單範例。我們將讀取按鈕的狀態並相應地點亮LED,如下圖所示。
原理圖,示意圖
在繼續之前,您需要組裝一個帶有LED和按鈕的電路。我們將LED連接到GPIO 5 (D1)和按鈕 GPIO 4 (D2)。
所需零件
這是建置電路所需的零件清單:
- ESP8266開發板
- 5毫米LED
- 330歐姆電阻
- 按鍵
- 10k歐姆電阻
- 麵包板
- 跳線
程式碼
將以下代碼複製到您的Arduino IDE。
//完整說明: http://honeststore.com.tw/blog/esp8266_post/esp8266-digital-inputs-outputs/
//設定引腳數
const int buttonPin = 4; // 按鍵引腳
const int ledPin = 5; // LED引腳
// 用於存儲按鈕狀態的變量
int buttonState = 0;
void setup() {
// 將按鈕引腳初始化為輸入
pinMode(buttonPin, INPUT);
// 將LED引腳初始化為輸出
pinMode(ledPin, OUTPUT);
}
void loop() {
// 閱讀按鈕值的狀態
buttonState = digitalRead(buttonPin);
// 檢查按下按鈕狀態值,若為是則按鈕狀態是HIGH
if (buttonState == HIGH) {
// 打開LED
digitalWrite(ledPin, HIGH);
} else {
// 關閉LED
digitalWrite(ledPin, LOW);
}
}
程式碼如何作業
const int buttonPin = 4;
const int ledPin = 5;
該按鈕已連接到 GPIO 4 且LED連接到 GPIO 5。當將Arduino IDE與ESP8266配合使用時,4對應於GPIO 4 和5對應於 GPIO 5。
接下來,建置一個變量來保存按鈕狀態。預設情況下,它的值是0(未按下)。
int buttonState = 0;
在setup()函數裡,將按鈕初始化為 輸入,而LED作為 輸出。為此,您可以使用pinMode() 接受您要引用的引腳的功能以及模式: 輸入 或輸出。
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
在 loop()函數裡,此處可以讀取按鈕狀態並相應地設置LED開啟或關閉。
下面一行中,您將讀取按鈕狀態並將其保存在 buttonState變量。如我們先前所見,您使用digitalRead() 功能。
buttonState = digitalRead(buttonPin);
以下 if 判斷語法,檢查按鈕狀態是否為 HIGH。如果是,它將利用digitalWrite() 這個函數的參數將 ledPin狀態設為HIGH。
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
}
如果按鈕狀態不是 HIGH,請關閉LED。也就是if判斷語法的相反,並利用 digitalWrite()函數中參數設定狀態為LOW。
else {
digitalWrite(ledPin, LOW);
}
上傳程式碼
轉到工具>端口,然後選擇ESP8266連接到的COM端口。然後,按上傳按鈕,然後等待“完成上傳”消息。
示範
而在釋放它時將LED燈關閉:
總結
如果要學習如何讀取模擬輸入或輸出PWM信號,請閱讀以下指南:
- ESP8266 ADC –讀取模擬值
- ESP8266 PWM –變暗的LED
看看ESP8266 GPIO參考,它會如何使用ESP8266 GPIO及其功能。
最後,如果您想了解更多有關ESP8266的信息,請查看我們的資源:
使用ESP8266的家庭自動化
使用ESP32 / ESP8266的MicroPython編程
更多ESP8266項目…