我有一个计算毫秒的计时器,我试图在某些时间打开和关闭电机,然后重复它。多次尝试后,我意识到问题来自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;
}
}
答案 0 :(得分:1)
您while(cm=6001)
将cm
设置为6001
的值。只要该赋值导致非0整数转换,您的while循环将永远持续。
要解决此问题,您需要使用:
while(cm == 6001)
答案 1 :(得分:0)
不幸的是,由于代表太低,我无法发表评论,因此必须将其作为答案提交。
虽然成本并不高,但计算current
和previous
之间的差异更有意义,而不是三倍。当您需要进行类似的重复比较时,需要记住以后的工作。