我是个学生,对阿迪诺来说只是个新手。我正在尝试制作一个自动植物浇水系统,它应该给植物浇水两次--一次day.Is --让Arduino每天准确地完成任务,然后将自己设置为睡眠模式?
发布于 2016-08-26 07:14:33
每天正好在规定的时间
millis()函数,在Xtal振荡器(200 may )上应该足够精确。你的时钟将从大约10分钟后的一个月。我将从最后一个解决方案开始,因为它不需要额外的组件,并且需要改进RTC。
然后将自己设置为睡眠模式。
AVR核心有不同的睡眠水平,一些将保持时钟(空闲),应该与millis()解决方案一起使用,另一些将不会保持时钟(电源下降),但更高的功耗效率,可以用于RTC。解决办法取决于你需要的功率有多低。注意,由于电源调节器和其他组件,Arduino板和IDE无法实现最大低功耗。要实现Atmega328数据表中描述的200 To睡眠,需要做一些工作。
millis()示例
#define INTERVAL_1_DAY 86400000 // 1day => 24*60*60*1000
unsigned long nextDate = INTERVAL_1_DAY;
void loop()
{
unsigned long currentDate = millis(); //millis rollover (overflow) after about 50 days
if(currentDate > nextDate // time elapsed, do action
&& currentDate < (nextDate + INTERVAL_25_DAY)) //treatement of the overflow of millis() and *Dates ...
{
nextDate += INTERVAL_1_DAY; //you have to use nextDate here and not current date like in some examples to have no sweep (some µs each day)
// do your action here
}
// you may add some idle sleep here
// 10s sleep would give a execution date glitch e.g. [3pm to 3pm+10s]
// but some code can fix this
}https://stackoverflow.com/questions/39148633
复制相似问题