卡在WHILE循环内的IF语句中

时间:2015-05-12 18:40:36

标签: c++ arduino arduino-uno

我有一个计算毫秒的计时器,我试图在某些时间打开和关闭电机,然后重复它。多次尝试后,我意识到问题来自IF语句。电机开启并保持开启状态。

unsigned long current=millis();

while(cm=6001){

  if(current-previous<=1000){
    digitalWrite(9, on);
  }
  if((current-previous>=1001)&&(current-previous<=2000)){
    digitalWrite(9, off);
  }
  if(current-previous>=2001){
    previous=current;
  }
}

2 个答案:

答案 0 :(得分:1)

while(cm=6001)cm设置为6001的值。只要该赋值导致非0整数转换,您的while循环将永远持续。

要解决此问题,您需要使用:

while(cm == 6001)

答案 1 :(得分:0)

不幸的是,由于代表太低,我无法发表评论,因此必须将其作为答案提交。

虽然成本并不高,但计算currentprevious之间的差异更有意义,而不是三倍。当您需要进行类似的重复比较时,需要记住以后的工作。