humhumhum 发表于 2014-4-21 13:15:58

请问一个Millis问题,Mills取代Delay而当掉的问题。

如果您愿意可以帮我测试一下
vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

int currentMillis;
int i=0;
int interval = 3000;   

void setup() {

Serial.begin(9600);

}

void loop() {
Serial.println("CCCC");
int startMillis = millis();
for(int currentMillis = 1;currentMillis - startMillis < interval;)
{currentMillis=millis();}
Serial.println(i);
   i++;
}


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
我写的这个式子很奇怪
若 int interval = 1000;跳到30次之后 就...狂跳。
若 int interval = 2000;跳到15次之后 就...狂跳。
若 int interval = 3000;跳到10次之后 就...狂跳。
若 int interval = 15000;跳到2次之后 就...狂跳。
若 int interval = 30000;就不会狂跳了。


我该怎么解决?? 让interval 不会狂跳...

请各位给个指引~~谢谢~~

pathletboy 发表于 2014-4-21 13:47:59

注意类型匹配unsigned long currentMillis;
int i=0;
int interval = 3000;   

void setup() {

Serial.begin(9600);

}

void loop() {
Serial.println("CCCC");
unsigned long startMillis = millis();
for(currentMillis = millis();startMillis + interval > currentMillis;)
{currentMillis=millis();}
Serial.println(i);
   i++;
}

Super169 发表于 2014-4-21 13:57:01

簡單一點也可以:unsigned long end_time = millis() + interval ;
while (millis() < end_time);

humhumhum 发表于 2014-4-21 14:38:36

聪明~~十分感谢.....谢谢各位....太感激啦~~
页: [1]
查看完整版本: 请问一个Millis问题,Mills取代Delay而当掉的问题。