Атоматизация полива
- Войдите на сайт для отправки комментариев
Пт, 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 или от внешнего источника питания. Источник питания выбирается автоматически.