Millis为arduino

时间:2016-08-18 23:03:34

标签: arduino delay milliseconds temperature

我有两个数据库,包含来自arduino的温度数据...

我想将数据发送到这些数据库一分钟, 然后在另一个数据库中发送数据之后,将其发送到下一个数据库(第一个数据库的十分之一时间)

我的代码如下:

int count = 0;
for(int a = 1; a <= 10; a++) {
  Cayenne.run();
  delay(60000);
  count = count + 1;
}
if(count== 10) {
  ToPostWStemp();
  count = 0;
}

但不发送任何东西,我不知道该怎么办。 很多人都说我使用millis()函数要好得多,但我不知道代码如何在我的Arduino上运行。

D.P。函数“Cayenne.run”调用服务器的第一个函数,然后调用 “ToPostWStemp”调用第二个服务器函数。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,听起来您希望每分钟调用一次Cayenne.run(),并且每10分钟调用一次ToPostWStemp()

要使用millis()执行此操作,您可以简单地跟踪每个函数的最后一次调用,并将其与当前的millis()值进行比较,仅在经过的时间超过所需的时间间隔时调用每个函数。像这样:

unsigned long cayenneTime = 0;
unsigned long postWSTime = 0;
void loop()
{
    if (millis() - cayenneTime >= 60000)
    {
        // Do this every 60 seconds
        Cayenne.run();

        // Keep track of the last time this code ran, so we know
        // when to run it next time
        cayenneTime = millis();
    }
    if (millis() - postWSTime >= 60000 * 10)
    {
        // Every 10 minutes, do this
        ToPostWStemp();

        // Keep track of the last time this code ran, so we know
        // when to run it next time
        postWSTime = millis();
    }

    // Do other stuff here
}

请注意,millis()将溢出并每4,294,967,295毫秒(约49天)重置为0,因此如果这是一个长期运行的程序,您将要考虑到这一点并进行调整。