You are currently viewing ESP8266 NodeMCU數位輸入和數位輸出

ESP8266 NodeMCU數位輸入和數位輸出

在本入門指南中,您將學習如何使用帶Arduino IDE的ESP8266 NodeMCU板讀取數位輸入(如按鈕開關)和控制數位輸出(如LED)。

先決條件 

我們將使用Arduino IDE對ESP8266進行編程。因此,在繼續之前,請確保已安裝ESP8266控制板插件:

 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,如下圖所示。

ESP8266 NodeMCU按鈕是否按下以打開和關閉LED

 原理圖,示意圖 

 

在繼續之前,您需要組裝一個帶有LED和按鈕的電路。我們將LED連接到GPIO 5 (D1)和按鈕 GPIO 4 (D2)。

所需零件

這是建置電路所需的零件清單:

  • ESP8266開發板
  • 5毫米LED
  • 330歐姆電阻
  • 按鍵
  • 10k歐姆電阻
  • 麵包板
  • 跳線

ESP8266 NodeMCU數字輸入和數字輸出電路原理圖LED按鈕

 程式碼 

 

將以下代碼複製到您的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);
}

上傳程式碼 

點擊上傳按鈕之前,進入 工具 > 開發板,然後選擇您正在使用的開發板。就我而言,它是NodeMCU 1.0(ESP-12 E模塊)。如果您不知道ESP8266型號,可以選擇“ Generic ESP8266 Module”。

轉到工具>端口,然後選擇ESP8266連接到的COM端口。然後,按上傳按鈕,然後等待“完成上傳”消息。

示範 

上傳程式碼後,測試電路。當您按下按鈕時,您的LED應該點亮:

而在釋放它時將LED燈關閉:

總結 

通過該入門指南,您已經了解瞭如何使用Arduino IDE通過ESP8266讀取數位輸入和控制數位輸出。

如果要學習如何讀取模擬輸入或輸出PWM信號,請閱讀以下指南:

  • ESP8266 ADC –讀取模擬值
  • ESP8266 PWM –變暗的LED

看看ESP8266 GPIO參考,它會如何使用ESP8266 GPIO及其功能。

最後,如果您想了解更多有關ESP8266的信息,請查看我們的資源:

使用ESP8266的家庭自動化
使用ESP32 / ESP8266的MicroPython編程
更多ESP8266項目…

發佈留言