醬是創客的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
