醬是創客的ESP32教學主題第16篇,以NodeMCU-32S(使用Arduino語言)來實作教學,本篇教學Arduino多工處理使用避障模組透過紅外線偵測物品是否存在,並透過DI接收

以下是我們今天的目標

  • pinMode須設定為INPUT來啟動DI功能
  • 多工處理DI訊號

設備:
安信可原廠/副廠NodeMCU-32S #露天拍賣 #蝦皮購物
醬是創客紅外線避障模組 #露天拍賣 #蝦皮購物

接線方式:
NodeMCU-32S(GPIO15)–DO訊號–醬是創客紅外線避障模組(OUT訊號)
DC 5V(+)–醬是創客紅外線避障模組(VCC)
DC 0V(-)–醬是創客紅外線避障模組(GND)

Ai-Thinker安信可NodeMCU-32S的腳位圍(資料來源:安信可)

紅外線專業知識與教學

當紅外線發送器送出時,如遇到物體,光經過物體的反射並使自身的接收器收到光
收到光時,低電位
無收到光時,高電位

Arduino 範例程式碼如下

//醬是創客 開發實作的好夥伴
#include "WiFi.h"
 
//task
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
int interval = 1000;
boolean GPIO15state = false; 
 
//IR Pin
int inPin = 15;
  
void setup() {
  Serial.begin(115200);
  //IR
  pinMode(inPin, INPUT);
}
  
void loop() {
   currentMillis = millis();
      
   if ((unsigned long)(currentMillis - previousMillis) >= interval) {
      GPIO15state = digitalRead(inPin); 
      if (GPIO15state == HIGH) {
        //高電位時
        Serial.println("Chosemaker's IR is OFF");
      }
      else {
        //低電位時
        Serial.println("Chosemaker's IR is ON");
      }
      // previousMillis存入最後執行的時間
      previousMillis = currentMillis;
      Serial.print("In Current time:");
      Serial.println(previousMillis);
   }
}

Arduino 序列埠監控視窗 輸出如下,我們在大約第6秒時放一個物品至醬是創客紅外線避障模組前面,此時紅外線就偵測到有東西並產生變化

Chosemaker's IR is OFF
In Current time:5000
Chosemaker's IR is ON
In Current time:6000
Chosemaker's IR is OFF
In Current time:7000