Атоматизация полива

StanHD
Offline
Зарегистрирован: 18.09.2014

Привет всем! Не силен в программировании. Хочется автоматизировать полив цветов раз в день. Имеется: помпа,реле,часы реального времени, ардуино нано. Собрать все собрал, пришло время писать код.

#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 не выполнится никогда.
Как решить эту проблему и что вы посоветуете? Может как то иначе сделать это можно?

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

Пишите состояние в EEPROM перед выключением питания. При старте - считывайте его же, если это так критично. Или прилепите батарейку и не мучайтесь. :)

StanHD
Offline
Зарегистрирован: 18.09.2014

А можно батарейку совместить с питанием по USB? Если питание перестанет подаваться по USB то переключится на батарейку?

dimOnOff
Offline
Зарегистрирован: 21.04.2015

Вот тут    http://arduino.ru/Hardware/ArduinoBoardUno    вот что нашел:  Arduino Uno может получать питание через подключение USB или от внешнего источника питания. Источник питания выбирается автоматически.