求助:while中传感器的值
兄弟们帮忙解决一个小问题,迷茫中。while 中有一个语句用来取传感器们的值。比如state=digitalRead(4); 读取4号引脚。当While结束后跳出后,就取不到传感器的值了,莫非还要在LOOP里再写一次state=digitalRead(4);
loop(){
state=digitalRead(4);
'''''''''''''''''''''''''''''''''''''''''
while(){
state=digitalRead(4);
'''''''''''''''''''''''''''''
}
}
总感觉写两次state=digitalRead(4); 有点怪怪的。有没有什么精简或代替的办法。 用do{
} while() loop() 里面的程序是循环执行的。
执行到最后就会跳到开头重行执行。
不需要用while() while是小循环,LOOP是大循环,现在的问题是state=digitalRead(4); 在while里的话,等结束小循环,跳出来执行大循环的时候,就获取不到state=digitalRead(4); 的值了。 你把while的判断条件写清楚了。
如果你是用state做while的判断的话,你完全可以用do while语句去达到你的要求 转角 发表于 2014-3-4 09:08 static/image/common/back.gif
你把while的判断条件写清楚了。
如果你是用state做while的判断的话,你完全可以用do while语句去达到你的要 ...
int led = 13;
int key= 4;
int time=0;
int state;
void setup()
{
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
pinMode(key, INPUT);
Serial.begin(9600);
Serial.print(" READY TO WORK");
}
void loop()
{
do{
state=digitalRead(key);
if(state==LOW){
time=time++;
delay(1000);
}
else{
time=0;
delay(1000);
}
Serial.println(time);
Serial.println(state);
if(time>10){
digitalWrite(led,HIGH);
Serial.println("pump is working......");
delay(1000);
}
}
while(time<11);
state=digitalRead(key);
if(state==HIGH){
digitalWrite(led,LOW);
Serial.println("pump is stop......");
Serial.println(time);
time=0;
delay(1000);
}
}
//end
这个代码可以工作,只是感觉在LOOP和WHILE里写两次state=digitalRead(key);代码不是最优化的。 纯粹时尚 发表于 2014-3-4 09:17 static/image/common/back.gif
这个代码可以工作,只是感觉在LOOP和WHILE里写两次state=digitalRead(key);代码不是最优化的。
int led = 13;
int key= 4;
int time=0;
int state;
void setup()
{
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
pinMode(key, INPUT);
Serial.begin(9600);
Serial.print(" READY TO WORK");
}
void loop()
{
state=digitalRead(key);
if(time<11)
{
if(state==LOW)
{
time=time++;
delay(1000);
}
else
{
time=0;
delay(1000);
}
Serial.println(time);
Serial.println(state);
}
else{
digitalWrite(led,HIGH);
Serial.println("pump is working......");
delay(1000);
if(state==HIGH)
{
digitalWrite(led,LOW);
Serial.println("pump is stop......");
Serial.println(time);
time=0;
delay(1000);
}
}
}
//end这样行吧 转角 发表于 2014-3-4 09:29 static/image/common/back.gif
这样行吧
多谢转角兄,问题解决了,看来用了while反而多余了。
页:
[1]