DS1307 проверка , запущены ли часы?
- Войдите на сайт для отправки комментариев
Вс, 09/10/2016 - 01:12
Использую библиотеку "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();
}
Правильно ли я сделал?Или можно сделать как-то проще?Или ,точнее, как правильно?
проверить, изменилось время или нет, во всяком случае останавливать не нужно, просто
RTC.start();
если время остановилось из-за разрядки батареи, то оно сбросится в зашитую дату,
можно сделать алгоритм проверки.
как я понял, твоя проблема в том, что часы начинают идти со времени компиляции.?
так, но нужно найти подходящую библиотеку, т.к. их множество...
Спасибо за ответ DIVGENY!У меня с DS1307 собран нагреватель воды. Через пол года после какого-то включения выключения часы остановились .Я их опять запустил командой RTC.start();. Но в случае если это опять повторится хочу что бы была проверка на предмет - запущен ли РТС.Если в сетап вставть просто RTC.start();, то при перезапуске часы через раз останавливаются и запускаются. а при вставке
void setup() { RTC.stop(); RTC.start(); }вроде как все ок - часы идут нормально(и при останоленном РТС , и при запущеном)