h220228932 發表於 2015-11-21 22:36:18

請問一下關於步進馬達轉動次數

想請問一下各位,我目前是在寫當人體紅外線被觸發時,我的步進馬達要走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);
}
}

超新手 發表於 2015-11-22 07:12:40

加一個變數來判斷
如果已經後退過了, 就不要再後退
如果已經前進過了, 就不要再前進
以避免重覆執行

h220228932 發表於 2015-11-22 10:47:36

感謝大大幫忙,已成功解決 !
頁: [1]
查看完整版本: 請問一下關於步進馬達轉動次數