Не работает ds1302 и реле на подсветку

happi
Offline
Зарегистрирован: 09.03.2016

Добрый день!

Решил сделать подсветку для рассады, в наличии есть ds1302 и реле с ардуино нано.

После долгих поисков примеров работы с ds1302 так ничего и не удалось сделать, реле рабочее, время в сериал тоже верное посылает, но не срабатывает. Подскажите, пожалуйста, куда копать, чтобы зарабтало?

#include <DS1302.h>
DS1302 rtc(4, 2, 3);
int IN3 = 6;
char* timeon = "06:00:00";
void setup()
{
rtc.halt(false);
rtc.writeProtect(false);
Serial.begin(9600);
 pinMode(IN3,OUTPUT);
}
void loop()
{
  if (rtc.getTimeStr() == timeon) //Сравнивается текущее время с нужным
    {     digitalWrite(IN3, HIGH); 
          delay (200000);
          digitalWrite(IN3, LOW);
    }

Serial.println(rtc.getTimeStr());
delay (1000);
}

 

releyshic
Offline
Зарегистрирован: 20.11.2015

char* timeon = "06:00:00";if (rtc.getTimeStr() == timeon) - это что за ужасы? )))

rtc.getTime(); // запрашиваем данные от модуля часов и помещаем их в структуру

после этого можно обращаться к отдельным элементам структуры, извлекая из них значения часов, минут, даты и т. п.

перед

void setup()

надо написать

DS1302  rtc(22, 23); // Init the DS1307  //22 и 23 пины к которым поключены часы
Time  t; // Init a Time-data structure

Time xxx – создает структуру данных с именем xxx для вывода данных о дате и времени при помощи функции getTime. Структура состоит из следующие переменных:

xxx.hour – значение часов
xxx.min – значение минут
xxx.sec – значение секунд
xxx.date – день месяца
xxx.mon – месяц 
xxx.year – год
xxx.dow – день недели

в лупе надо написать

t = rtc.getTime(); // Get data from the DS1302

теперь уже

t.hour - час  t.min минута  и тп, вот их и сравнивай ))

http://nnm.me/blogs/pencraft/arduino-i-chasy-na-mikrosheme-dallas-ds1307/

http://lesson.iarduino.ru/page/podklyuchenie-rtc-chasy-realnogo-vremeni-ds1302-ds1307-ds3231-k-arduino/

happi
Offline
Зарегистрирован: 09.03.2016

Может кому пригодится, библиотеку брал из http://lesson.iarduino.ru/page/podklyuchenie-rtc-chasy-realnogo-vremeni-ds1302-ds1307-ds3231-k-arduino/ , время прописал в ds1302 один раз. Ардуино питается с резервным аккумулятором, поэтому код предельно простой.

#include <RTC.h>
RTC    time;
int Relay = 6;
void setup() {
    Serial.begin(9600);
    pinMode(Relay,OUTPUT);
    time.begin(RTC_DS1302,4, 3, 2);
   
}
void loop(){
      time.gettime();
      time.period(30);
      if (time.Hours==06 && time.minutes==00 && time.seconds==00) // Включается реле в 6 утра
  {digitalWrite(Relay, HIGH);}
      
      if (time.Hours==20 && time.minutes==00 && time.seconds==00) // Выключатся реле в 23:00
  {digitalWrite(Relay, LOW);}
     
}

Благодарю releyshic за совет!