Неправильный отсчёт времени DS1307 shiled Wemos D1 mini

kn1golub
Offline
Зарегистрирован: 14.09.2018

Друзья, помогите разобраться с поделкой китайцев!

Купил  shield RTC + microSD для Wemos D1 mini.

https://ru.aliexpress.com/item/Micro-SD-Wemos-D1-Mini-Data-Logger-Shield-RTC-DS1307-Clock-For-Arduino-Raspberry/32826265932.html

Подпаял ножки, подключил, заливаю код 

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    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__));
  }
}

void loop () {
    DateTime now = RTC.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

И вижу вот такой вывод...

2018/9/14 10:5:28
 since midnight 1/1/1970 = 1536919528s = 17788d
 now + 7d + 30s: 2018/9/21 10:5:58
 
2018/9/14 10:5:46
 since midnight 1/1/1970 = 1536919546s = 17788d
 now + 7d + 30s: 2018/9/21 10:6:16
 
2018/9/14 10:6:4
 since midnight 1/1/1970 = 1536919564s = 17788d
 now + 7d + 30s: 2018/9/21 10:6:34
 
2018/9/14 10:6:22
 since midnight 1/1/1970 = 1536919582s = 17788d
 now + 7d + 30s: 2018/9/21 10:6:52
 
Секунды отсчитываются неправильно, да и само время не сохраняется. Батарейку крутил и так, и эдак. Результата нет.  Шилд установлен контактами к Wemos, все символы совпадают, а работать не хочет. Подскажите, как решить проблему
andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

если время не сохраняется:

1 поменять /проверить батарейку

2 выкинуть, купить рабочий

kn1golub
Offline
Зарегистрирован: 14.09.2018

andycat, спасибо за ответ!

Батарейку менял, но толку нет. Минус устанавливается лицом к плате?

Выкидывать не хочется, получаю время по WiFi, а слот для SD карты рабочий. Хочется разобраться со временем

kalapanga
Offline
Зарегистрирован: 23.10.2016

По поводу "не сохраняется время". А Вы скетч так со строкой 14 и используете?

kn1golub
Offline
Зарегистрирован: 14.09.2018

kalapanga пишет:

По поводу "не сохраняется время". А Вы скетч так со строкой 14 и используете?

Я один раз залил, потом перезагружаю, смотрю вывод в com порт. Время же должно было 1 раз записаться, а потом браться из памяти, нет?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Один раз залить и запустить скетч с этой строкой. Потом закомментировать её и залить новый скетч. Сейчас при включении у Вас каждый раз устанавливаются "те самые" дата и время.

А с точностью хода у этих модулей много чудес. Вот например одна из тем: http://arduino.ru/forum/apparatnye-voprosy/speshat-chasy-ds1307