DS1307 проверка , запущены ли часы?

Старый
Offline
Зарегистрирован: 09.10.2016

Использую библиотеку "DS1307". Как в скетче  при запуске сделать проверку :запущен или нет RTC?Если не запущен -запустить.

К примеру  , запускаем скетч из примеров "ds1307_rtc".

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif


#include <Wire.h>
#include <DS1307.h> // written by  mattt on the Arduino forum and modified by D. Sjunnesson

void setup()
{
  Serial.begin(9600);

}

void loop()
{

  Serial.print(RTC.get(DS1307_HR,true)); //read the hour and also update all the values by pushing in true
  Serial.print(":");
  Serial.print(RTC.get(DS1307_MIN,false));//read minutes without update (false)
  Serial.print(":");
  Serial.print(RTC.get(DS1307_SEC,false));//read seconds
  Serial.print("      ");                 // some space for a more happy life
  Serial.print(RTC.get(DS1307_DATE,false));//read date
  Serial.print("/");
  Serial.print(RTC.get(DS1307_MTH,false));//read month
  Serial.print("/");
  Serial.print(RTC.get(DS1307_YR,false)); //read year
  Serial.println();

  delay(1000);

}

Есть батарейка на модуле  и неизвестно при первом запуске -запущен ли РТС?

Если RTC не запущен - часы не идут. Я в сетап вставил следующие строки:

void setup() {
  RTC.stop();
  RTC.start();

}

Правильно ли я сделал?Или можно сделать как-то проще?Или ,точнее, как правильно?

DIVGENY
Offline
Зарегистрирован: 23.08.2016

проверить, изменилось время или нет, во всяком случае останавливать не нужно, просто

RTC.start();

если время остановилось из-за разрядки батареи, то оно сбросится в зашитую дату,

можно сделать алгоритм проверки.

как я понял, твоя проблема в том, что часы начинают идти со времени компиляции.?

 так, но нужно найти подходящую библиотеку, т.к. их множество...

Старый
Offline
Зарегистрирован: 09.10.2016

Спасибо за ответ DIVGENY!У меня с DS1307 собран нагреватель воды. Через пол года  после какого-то включения выключения часы остановились .Я их опять запустил командой RTC.start();. Но в случае если это опять повторится хочу что бы была проверка на предмет - запущен ли РТС.Если в сетап вставть просто RTC.start();, то при перезапуске часы через раз останавливаются и запускаются. а при вставке

void setup() {
  RTC.stop();
  RTC.start();

}

вроде как все ок - часы идут нормально(и при останоленном РТС , и при запущеном)