我有两个数据库,包含来自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”调用第二个服务器函数。
谢谢!
答案 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,因此如果这是一个长期运行的程序,您将要考虑到这一点并进行调整。