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