PIR传感器可以无环路地工作吗?

时间:2017-07-25 14:07:33

标签: arduino

void setManual(){
//do something like turn on and off the light
}
void setAuto(){
  for(;;){
     digitalRead(pirPin); //read data from PIR
     digitalWrite(ledPin, pirValue); // turn on and of the light follow the PIR's data
  }
}

我的问题是当我拨打setAuto()时,我无法转到另一种方法 我不知道这个。那么,PIR传感器可以无环路地工作吗?或者我如何打破这个循环去另一个方法?

2 个答案:

答案 0 :(得分:0)

你不能进入另一种方法,因为

for(;;)

是一个无限循环。

您可以在主loop()语句中使用计时器(经过毫秒)读取传感器,其间可能有延迟。有很多方法可以做到这一点。但是,当您的程序成熟完成时,在单独的环境中进入无限循环可能无法执行您想要的操作。 Arduino代码中的主loop()已经是一个无限循环,也是你应该经常使用的循环。

答案 1 :(得分:0)

您使用for(;;)创建了一个无限循环。你可以试试这个:

void setManual(){
    //do something like turn on and off the light
    }
    void setAuto(){
      bool flag=true;
      int data;
      while flag {
         data = digitalRead(pirPin); //read data from PIR
         if(data == 0) { //Specify a condition that can if triggered would change your flag to false and exit the loop
           flag = false;
           //break;     //<-- You can also use this statement to break out of the loop.
         }
         digitalWrite(ledPin, pirValue); // turn on and of the light follow the PIR's data
      }
    }