我是arduino的新手。我需要的是让他在特定的时间做一些事情,然后去睡觉,这样它就不会过度工作。
具体任务是:我想让他启动一个机制来喂我的金鱼,所以在假期里arduino应该工作10天或更长时间(这是睡眠模式的原因)。
在研究这个问题时,我想出了时间中断,但我认为这不是最好的解决方案,因为我希望他在特定的时间做一些事情,而不是打断他的任务。
感谢您的任何帮助:)
我是arduino的新手。我需要的是让他在特定的时间做一些事情,然后去睡觉,这样它就不会过度工作。
具体任务是:我想让他启动一个机制来喂我的金鱼,所以在假期里arduino应该工作10天或更长时间(这是睡眠模式的原因)。
在研究这个问题时,我想出了时间中断,但我认为这不是最好的解决方案,因为我希望他在特定的时间做一些事情,而不是打断他的任务。
感谢您的任何帮助:)
我读过标准 Arduino 板并没有节省那么多电力,因为电源调节器和 USB 端口(如果有)消耗大量电力。但鉴于您使用外部时钟来触发设备唤醒,您可以使用一个简单的 arduino 库Enerlib。
Engblaze 有一篇关于如何自己做的好文章,但如果您是 arduino 新手,您可能不想跳入 AVR 库。
使用millis() 方法。它会在 50 天后重置,但我认为你不会旅行这么长时间......
unsigned long hours4nextFeeding = 8;
unsigned long lastTime = millis();
void loop() {
if(millis() > (lastTime + (hours4nextFeeding*3600*1000))) {
feedTheFish();
lastTime = millis();
}
delay(60000);
}
您也可以使用光传感器(超级便宜)并在太阳升起时每天喂鱼一次
我刚刚编写的代码未经测试,但你应该明白了。
您可以尝试一些简单的事情,例如每 30 秒启动一个持续时间为 20 秒的事件:
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
void setup () {
Serial.begin(57600);
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
}
}
boolean pumpOn = false;
void loop () {
DateTime now = rtc.now();
if(now.second()%30==0){ pumpOn=true;}
if(now.second()%50==0){ pumpOn=false;}
if(pumpOn)
Serial.println("on");
}
}
我喜欢@Josh 使用时钟重置设备的解决方案,但如果你的鱼没有在毫秒内喂食它们会死,这是另一个想法。