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传感器可以无环路地工作吗?或者我如何打破这个循环去另一个方法?
答案 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
}
}