Атоматизация полива
- Войдите на сайт для отправки комментариев
Пт, 05/06/2015 - 21:55
Привет всем! Не силен в программировании. Хочется автоматизировать полив цветов раз в день. Имеется: помпа,реле,часы реального времени, ардуино нано. Собрать все собрал, пришло время писать код.
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
boolean Debug = true;
unsigned long utime;
const int Relay1_pomp = 13;
//***Время срабатывание каналареле с помпой***//
long StartRelCh_1 = 1433385400;
void setup()
{
if(Debug)
{
Serial.begin(9600);
}
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}
pinMode(Relay1_pomp,OUTPUT);
digitalWrite(Relay1_pomp,HIGH);
}
inline boolean isTimeToWater_pomp(long utime)
{
return (utime >= StartRelCh_1);
}
void loop()
{
DateTime now = RTC.now();
utime = now.unixtime();
if (isTimeToWater_pomp(utime)){
StartRelCh_1 = StartRelCh_1+60;
digitalWrite(Relay1_pomp,LOW);
}
else
{
digitalWrite(Relay1_pomp,HIGH);
}
}
Все это вроде должно работать, но вот в чем вопрос, если выключат свет, включат через день, ардуино запустится и выяснится что число в StartRelCh_1 уже прошло и функция IsTimeToWater_pomp не выполнится никогда.
Как решить эту проблему и что вы посоветуете? Может как то иначе сделать это можно?
Пишите состояние в EEPROM перед выключением питания. При старте - считывайте его же, если это так критично. Или прилепите батарейку и не мучайтесь. :)
А можно батарейку совместить с питанием по USB? Если питание перестанет подаваться по USB то переключится на батарейку?
Вот тут http://arduino.ru/Hardware/ArduinoBoardUno вот что нашел: Arduino Uno может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.