Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino PIR传感器能在没有回路的情况下工作吗? void setManual(){ //做一些类似于打开和关闭灯的事情 } void setAuto(){ 对于(;;){ digitalRead(pirPin);//从PIR读取数据 digitalWrite(ledPin,pirValue);//打开灯,并跟随PIR的数据 } }_Arduino - Fatal编程技术网

Arduino PIR传感器能在没有回路的情况下工作吗? void setManual(){ //做一些类似于打开和关闭灯的事情 } void setAuto(){ 对于(;;){ digitalRead(pirPin);//从PIR读取数据 digitalWrite(ledPin,pirValue);//打开灯,并跟随PIR的数据 } }

Arduino PIR传感器能在没有回路的情况下工作吗? void setManual(){ //做一些类似于打开和关闭灯的事情 } void setAuto(){ 对于(;;){ digitalRead(pirPin);//从PIR读取数据 digitalWrite(ledPin,pirValue);//打开灯,并跟随PIR的数据 } },arduino,Arduino,我的问题是,当我调用setAuto()时,我无法转到其他方法。 我对此一无所知。那么,PIR传感器能在没有回路的情况下工作吗?或者我如何打破这个循环以转到另一个方法?您不能转到另一个方法,因为 for(;;) 是一个无限循环 您可以在主loop()语句中使用计时器(已用毫秒)读取传感器,其间可能有延迟。有很多方法可以做到这一点。但是在一个单独的循环中进入一个无限循环可能不会在程序成熟到完成时实现您想要的功能。Arduino代码中的mainloop()已经是一个无限循环,您通常应该使用它。您已经

我的问题是,当我调用
setAuto()
时,我无法转到其他方法。

我对此一无所知。那么,PIR传感器能在没有回路的情况下工作吗?或者我如何打破这个循环以转到另一个方法?

您不能转到另一个方法,因为

for(;;)
是一个无限循环


您可以在主
loop()
语句中使用计时器(已用毫秒)读取传感器,其间可能有延迟。有很多方法可以做到这一点。但是在一个单独的循环中进入一个无限循环可能不会在程序成熟到完成时实现您想要的功能。Arduino代码中的main
loop()
已经是一个无限循环,您通常应该使用它。

您已经使用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
      }
    }
void setManual(){
//做一些类似于打开和关闭灯的事情
}
void setAuto(){
布尔标志=真;
int数据;
一面旗帜{
数据=数字读取(pirPin);//从PIR读取数据
if(data==0){//指定一个条件,如果触发该条件,则会将标志更改为false并退出循环
flag=false;

//break;//如果不获取函数的结果,在调用
digitalWrite
时使用它,为什么不从adafruit示例开始?