|
想請問一下各位,我目前是在寫當人體紅外線被觸發時,我的步進馬達要走388步就停止,直到當人離開時再往回走388步。
但目前遇到的問題是他會一直走388步不會停,想請問一下各位這樣的情況要如何解決?
以下是我的程式:
const int PIRSensor = 2; // 紅外線動作感測器連接的腳位
const int ledPin = 13; // LED 腳位
#include <Stepper.h>
const int stepsPerRevolution = 2048; //馬達一圈2048步
int sensorValue = 0; // 紅外線動作感測器訊號變數
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
void setup() {
pinMode(PIRSensor, INPUT);
pinMode(ledPin, OUTPUT);
myStepper.setSpeed(5);
Serial.begin(9600);
}
void loop(){
// 讀取 PIR Sensor 的狀態
sensorValue = digitalRead(PIRSensor);
// 判斷 PIR Sensor 的狀態
if (sensorValue == HIGH) {
Serial.println("clockwise");
myStepper.step(388);
digitalWrite(ledPin, HIGH); // 有人,開燈
delay(3000);
}
else {
Serial.println("counterclockwise");
myStepper.step(-388);
digitalWrite(ledPin, LOW); // 沒人,關燈
delay(3000);
}
} |
|