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