RTC DS1302 (Модуль часов реального времени)

Иван_123
Offline
Зарегистрирован: 17.01.2018

Здравствуйте.

При подключении RTC к ардуино возникла проблема - RTC никак не хочет устанавливать и запоминать время. Менял код, библиотеки, подключение к ардуино - все попусту, выводится 00-00-2000,  00:00:00, DEC,  и даже секунды не "идут", монитор порта выводит каждую секунду одно и то же число. Если же отсоединить два или три вывода от цифровых пинов, в мониторе порта выходит 45-25-2099,  45:85:85,  SAT (одним словом, белиберда какая - то). В интернете есть аналогичная проблема, но там столкнувшийся с проблемой сам писал библиотеку, я же использовал готовую, и пример из нее. Что это может быть?

Скетч:

// Бибилиотека разработана для RTC модуля http://iarduino.ru/shop/Expansion-payments/chasy-realnogo-vremeni-rtc-tr...
// Данный пример устанавливает на модуле заданное время 


#include <iarduino_RTC.h>
 iarduino_RTC time(RTC_DS1302, 1, 2, 3); // подключаем RTC модуль на базе чипа DS1302, указывая выводы Arduino подключённые к выводам модуля RST, CLK, DAT
         // подключаем RTC модуль на базе чипа DS3231, используется аппаратная шина I2C

void setup() {
    delay(300);
    Serial.begin(9600);
    time.begin();
    time.settime(0,51,21,27,10,15,2);  // 0  сек, 51 мин, 21 час, 27, октября, 2015 года, вторник
}
void loop(){
    if(millis()%1000==0){ // если прошла 1 секунда
      Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время
      delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс
    }
}

 

vvadim
Offline
Зарегистрирован: 23.05.2012

поиграться с другими библиотеками не пробовали ?

Иван_123
Offline
Зарегистрирован: 17.01.2018

Да, библиотека с официального сайта ардуино. Но там намудрили, простых примеров нет. Пробовал залить что - то - попросту не загружает, выдает ошибку.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Только что еще одну опробовал - то же самое

vvadim
Offline
Зарегистрирован: 23.05.2012

ну и что что с официального сайта.

баблиотек разных для часов куча.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Ну одну official и две iarduino_RTC.  Не помогает

Genri5
Offline
Зарегистрирован: 31.05.2016

 Вообще-то не плохо знать к чему подключал и правильно ли. Возможно нужно подключить библиотеку "Wire.h"

b707
Offline
Зарегистрирован: 26.05.2017

Иван_123,  судя по коду в первом сообщении, вы подключаете RTC к ногам 1, 2, 3, при этом используя Сериал-порт. А вы в курсе, что Сериал использует ноги 0 и1? - если у вас в программе используется Serial - к ногам контроллера 0 и1 ничего подключать нельзя

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы постоянно сбрасываете часы. Уйдите с пина 1 и никогла не трогайте ни грязными руками, ни чистыми (пин 0 - тоже).

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Окей, поясню: какие только пины не пробовал. Подключал к 3, 4, 5; к 10, 11, 12; 10, 12, 13. Менял код соответственно. Ничего не меняется

Иван_123
Offline
Зарегистрирован: 17.01.2018

Этот код - просто пример из библы, и кстати интересно кто такой пример написал.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Genri5 пишет:

 Вообще-то не плохо знать к чему подключал и правильно ли. Возможно нужно подключить библиотеку "Wire.h"

пробовал различные комбинации пинов. В интернете куча схем и скетчей для подключения RTC, нигде Wire не используют

sadman41
Offline
Зарегистрирован: 19.10.2016

Уберите 1, 2, 3 - вы постоянно ресетите модуль сериал портом, как вам написали выше.

Конструктор у библиотеки такой: iarduino_RTC (uint8_t,uint8_t=SS,uint8_t=SCK,uint8_t=MOSI);

Т.е. по умолчанию ожидает увидеть часы на след.пинах: SS, SCK, MOSI.

Посмотрите по картинке распиновки _вашей_ ардуины где у нее эти ноги. Или найдите их вот так: Serial.println(MOSI); ...

 

Genri5
Offline
Зарегистрирован: 31.05.2016

Иван_123 пишет:

Genri5 пишет:

 Вообще-то не плохо знать к чему подключал и правильно ли. Возможно нужно подключить библиотеку "Wire.h"

пробовал различные комбинации пинов. В интернете куча схем и скетчей для подключения RTC, нигде Wire не используют

Вот пример:



[code]
#include "Wire.h"
#define DS3231_I2C_ADDRESS 0x68
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  // set the initial time here:
  // DS3231 seconds, minutes, hours, day, date, month, year
   setDS3231time(00,47,18,1,15,1,18);
}
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  Wire.write(decToBcd(month)); // set month
  Wire.write(decToBcd(year)); // set year (0 to 99)
  Wire.endTransmission();
}
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{
  Wire.beginTransmission(DS3231_I2C_ADDRESS);
  Wire.write(0); // set DS3231 register pointer to 00h
  Wire.endTransmission();
  Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
  // request seven bytes of data from DS3231 starting from register 00h
  *second = bcdToDec(Wire.read() & 0x7f);
  *minute = bcdToDec(Wire.read());
  *hour = bcdToDec(Wire.read() & 0x3f);
  *dayOfWeek = bcdToDec(Wire.read());
  *dayOfMonth = bcdToDec(Wire.read());
  *month = bcdToDec(Wire.read());
  *year = bcdToDec(Wire.read());
}
void displayTime()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  // retrieve data from DS3231
  readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
  &year);
  // send it to the serial monitor
  Serial.print(hour, DEC);
  // convert the byte variable to a decimal number when displayed
  Serial.print(":");
  if (minute<10)
  {
    Serial.print("0");
  }
  Serial.print(minute, DEC);
  Serial.print(":");
  if (second<10)
  {
    Serial.print("0");
  }
  Serial.print(second, DEC);
  Serial.print(" ");
  Serial.print(dayOfMonth, DEC);
  Serial.print("/");
  Serial.print(month, DEC);
  Serial.print("/");
  Serial.print(year, DEC);
  Serial.print(" Day of week: ");
  switch(dayOfWeek){
  case 1:
    Serial.println("Sunday");
    break;
  case 2:
    Serial.println("Monday");
    break;
  case 3:
    Serial.println("Tuesday");
    break;
  case 4:
    Serial.println("Wednesday");
    break;
  case 5:
    Serial.println("Thursday");
    break;
  case 6:
    Serial.println("Friday");
    break;
  case 7:
    Serial.println("Saturday");
    break;
  }
}
void loop()
{
  displayTime(); // display the real-time clock data on the Serial Monitor,
  delay(1000); // every second
}
[/code]

Это реально рабочий код.

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Genri5 пишет:

Это реально рабочий код.

Только есть одна проблема DS1302 - не I2C.

Genri5
Offline
Зарегистрирован: 31.05.2016

sadman41 пишет:

Genri5 пишет:

Это реально рабочий код.

Только есть одна проблема DS1302 - не I2C.

Блин, точно,  извиняюсь.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Нет идей?... Может, неисправен DS1302? Или это маловероятно?

Иван_123
Offline
Зарегистрирован: 17.01.2018

sadman41 пишет:

Уберите 1, 2, 3 - вы постоянно ресетите модуль сериал портом, как вам написали выше.

Конструктор у библиотеки такой: iarduino_RTC (uint8_t,uint8_t=SS,uint8_t=SCK,uint8_t=MOSI);

Т.е. по умолчанию ожидает увидеть часы на след.пинах: SS, SCK, MOSI.

Посмотрите по картинке распиновки _вашей_ ардуины где у нее эти ноги. Или найдите их вот так: Serial.println(MOSI); ...

 

А вот интересно, что это за SS, SCK, MOSI. На моем RTC выходы CLK, DAT и RST, что к чему подключать? На различных сайтах разные версии подключения.

Иван_123
Offline
Зарегистрирован: 17.01.2018

И еще, какую библиотеку то брать? Есть одна с официального сайта ардуино;  есть универсальная Iarduino_RTC для всех типов RTC, которую почти на всех сайтах с описанием подключения RTC советуют

sadman41
Offline
Зарегистрирован: 19.10.2016

Иван_123 пишет:

sadman41 пишет:

Т.е. по умолчанию ожидает увидеть часы на след.пинах: SS, SCK, MOSI.

 

А вот интересно, что это за SS, SCK, MOSI. На моем RTC выходы CLK, DAT и RST, что к чему подключать? На различных сайтах разные версии подключения.

1, 2, 3 куда подключали? Вот в той же последовательности и SS, SCK, MOSI.

 
Иван_123
Offline
Зарегистрирован: 17.01.2018

Иван_123
Offline
Зарегистрирован: 17.01.2018

Не факт что я 123 правильно подключал)

sadman41
Offline
Зарегистрирован: 19.10.2016

Вот выдержка из библиотечного файла:

// Подключение библиотеки:
// #include <iarduino_RTC.h>
// iarduino_RTC time(название модуля [, вывод SS/RST [, вывод CLK [, вывод DAT]]]);
//     если модуль работает на шине I2C или SPI, то достаточно указать 1 параметр, например: iarduino_RTC time(RTC_DS3231);
//     если модуль работает на шине SPI, а аппаратный вывод SS занят, то номер назначенного вывода SS для модуля указывается вторым параметром, например: iarduino_RTC time(RTC_DS1305,22);
//     если модуль работает на трехпроводной шине, то указываются номера всех выводов, например: iarduino_RTC time(RTC_DS1302, 1, 2, 3); // RST, CLK, DAT
 
Иван_123
Offline
Зарегистрирован: 17.01.2018

Эххх...

Подключение: RST - 10, DAT - 11, CLK - 13

sadman41
Offline
Зарегистрирован: 19.10.2016

Как вариант, для проверки работоспособности модуля взять скетч вот отсюда и залить не изменяя: https://playground.arduino.cc/Main/DS1302

Пины там другие, но в дефайнах отмечены.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Может, модуль неисправен?

Иван_123
Offline
Зарегистрирован: 17.01.2018

Хорошо , попробую

Иван_123
Offline
Зарегистрирован: 17.01.2018

Мда. Как то так. Изменил в коде только пины

sadman41
Offline
Зарегистрирован: 19.10.2016

В этом случае я бессилен. Начинайте прозванивать ноги модулю и провода, если не имеете иных средств диагностики (например анализатора, чтобы посмотреть, дёргает в принципе модуль ногами или нет). У меня такое было (не с часами правда) - на чипе ногу забыли припаять к плате.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Хех. Я то думал я дурак, а эта болезнь с часами оказалась патологией, эпидемией.  

Иван_123
Offline
Зарегистрирован: 17.01.2018

Блин а может быть проблема в том что на модуле кварц, допустим, непропаян? Или то, что я взял батарейку CR2025 вместо CR2032?

Genri5
Offline
Зарегистрирован: 31.05.2016

Я не пойму чем DS3231 хуже? Тем более это последняя разработка. У меня двое часов на этой микрохе - проблем никаких не было. Точность отличная.

Genri5
Offline
Зарегистрирован: 31.05.2016

Иван_123 пишет:

Блин а может быть проблема в том что на модуле кварц, допустим, непропаян? Или то, что я взял батарейку CR2025 вместо CR2032?

Причем здесь батарейка? Батарейка - это автономность. А вот кварц имеет смысл проверить.

Иван_123
Offline
Зарегистрирован: 17.01.2018

Genri5 пишет:

Я не пойму чем DS3231 хуже? Тем более это последняя разработка. У меня двое часов на этой микрохе - проблем никаких не было. Точность отличная.

DS3231 у меня есть). Согласен, сразу заработало как только включил. Но это не мой модуль(. Брал на время. Поэтому пытаюсь завести тот модуль который был в наборе ардуино. Ну, если ничего не поможет с 1302, закажу 3231. 

paramon4ik
Offline
Зарегистрирован: 03.05.2018

Долго мучился с такой же проблемой. На просторах интернета нашел библиотеку DS1302RTC. Можно здесь оставлять файлы, не знаю . Ссылка на скачивание https://drive.google.com/open?id=1uPGQjQKTPknnW9WThLQe9tiihFeUOXE9

dub
Offline
Зарегистрирован: 25.05.2018

Таже проблема, часы не включаются. микросхема DS1302 1705C2 +163AN  микросхем 3 штуки картина не менятся. при этом, вставляю в эти часы микросхему DS1302 0136A4 619AA  все работает.  

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

dub,а Вы это, запустите скетч,который включает часы. А потом уже скетч при котором часы работают.

dub
Offline
Зарегистрирован: 25.05.2018

А Вы думаете я этого не делал?  ставлю библиотеку, пробую все примеры и т.д. кстати вторую микросхему и останавливал и снова запускал. большое подозрение что требуется принципиально новая библиотека.

dub
Offline
Зарегистрирован: 25.05.2018

Пробовал библиотеки; DS1302, DS1302RTC,  RTC, iarduino_RTC, arduino-ds1302-master . и еще какую то, точно не помню.

DSH81
Offline
Зарегистрирован: 28.05.2018

Столкнулся с такой же проблемой. В наличии две платы UNO3 обе китайские аналогии, три (модуля DS1302 покупал вместе) и один модуль HYM1302 (надпись на DIP корпусе) шел в комплекте с набором ардуино.

Так вот три модуля DS1302 (надпись на DIP корпусе) не запускаются, а тот что из комплекта вообще проблем не знал? все сразу запустилось и заработало. На разных платах ардуино пробовал заметил интересную особеность с питанием +5 V рабочий модуль  (HYM1302) время начинает показывать  с  00:00:00 (время идет как таймер),выключаю UNO, перетыкаю на +3V (без других манипуляций) включаю UNO время показывает как надо (14:52:11). Установку и настройку времени делел через программу FLPROG встроеной утилитой(программой) (если правильно все понял то там используют библиотеку iarduino_RTC).

 

Время смотрел на дисплее 1602,если надо могу схемку выложить

DSH81
Offline
Зарегистрирован: 28.05.2018

Достал микросхему HYM1302 заменил её на микруху DS1302 с не рабочего модуля (потенциально, запустить пока не могу) подаю питание и на дисплее вижу 00:00:00 время идет как таймер. Взял пример из библиотеки iarduino_RTC gettime, поменял пины на свои, прошил уно,  включил монитор порта, там веселые надписи 00-00-2000, 00:00:00, Dec
. Подозреваю все же неисправность именно микрух DS1302 1705с2+163AN.

 

DSH81
Offline
Зарегистрирован: 28.05.2018

Кстати пробовал еще так со старой материнки кварц 32768п рипоял его напрямую к ногам микрухи (2 и 3ноги) корпус на землю (4 нога)  попробывал нифига или кварц убил или схему добил или просто руки кривые но ничего нового не произошло. Буду искать кондеры на 6 пФ и резисторы добавить может поможет.

Кстати вставил HYM1302 в модуль  откуда достал DS1302 все сразу заработало...похоже все же проблема в микрухе.

redsunset
Offline
Зарегистрирован: 12.09.2018

Всем привет!

Я бы посоветовал выкинуть все DS1302, но если других нет, то просто поставьте резистор на 4,7-10 кОм между выводами GND Ваших часов и выводом GND Arduino. Еще один способ - подключить питание к часам не от вывода 5V а от вывода 3V3 Arduino.

Но все же лучше выкинуть DS1302 и не жалеть об этом, так как точность их хода иногда достигает ±5 мин в неделю. Песочные часы точнее будут!

semen741
semen741 аватар
Offline
Зарегистрирован: 28.03.2018

redsunset пишет:

Всем привет!

Я бы посоветовал выкинуть все DS1302, но если других нет, то просто поставьте резистор на 4,7-10 кОм между выводами GND Ваших часов и выводом GND Arduino. Еще один способ - подключить питание к часам не от вывода 5V а от вывода 3V3 Arduino.

Но все же лучше выкинуть DS1302 и не жалеть об этом, так как точность их хода иногда достигает ±5 мин в неделю. Песочные часы точнее будут!

 

Добрый день. Какой модуль реального времени посоветуте? Я пробывал несколько китайских модулей, но все спешат на 5-10 в месяц. Лучше взять один раз нормальный модуль, чем перебирать разные китайские некорректно рабочие.

Заранее благодарен.

bwn
Offline
Зарегистрирован: 25.08.2014

DS3231, лучше вряд-ли отыщете. 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

можно еще за PCF8583 паматреть, у ей вся мощь Филипса за спиной, но там самому паять надо

sadman41
Offline
Зарегистрирован: 19.10.2016

PCF8563, лежит в коробке, на тесте работала, точность не измерял.

https://ru.aliexpress.com/item/1PCS-PCF8563-PCF8563T-8563-IIC-Real-Time-...

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Проблемма в кварце.
Замена на выпаянный из материнки сильно помогает.

lazy-fox
Offline
Зарегистрирован: 22.08.2014

Модуль DS1302 в итоге оказался действительно не на I2C или SPI, а на некой 3-wire шине.
Делал очередной псевдо-астротаймер для цветочной подсветки и в итоге всё завелось.

Вот код:

#include <iarduino_RTC.h>               // iarduino_RTC для работы с модулями реального времени
iarduino_RTC time(RTC_DS1302, 8, 6, 7); // Объект time для модуля DS1302, к выводам RST, CLK, DAT
#define RELAY 4                         // Выход управления реле нагрузки     
int H;        //  часы в 24-часовом формате     от      0    до       23 
int i;        //  минуты                        от      0    до       59 
int y;        //  год без века                  от      0    до       99
int on = 17;  //  вкл в 24-часовом формате      от      0    до       23 
int off = 23; //  выкл в 24-часовом формате     от      0    до       23 
void setup(){
  time.begin();
  Serial.begin(9600);
  pinMode(RELAY, OUTPUT);   
  //time.settime(0,59,21,0,0,0);          // отладка включения
  if (time.year == 0) {                   // если часы сбросились
    Serial.setTimeout(10000);             // таймаут на ввод
    Serial.println("hours:    0-23"); H = Serial.parseInt();
    Serial.println("minutes:  0-59"); i = Serial.parseInt();
    Serial.println("year:     0-99"); y = Serial.parseInt();
    time.settime(0,i,H,-1,-1,y);
  }
  else {digitalWrite(RELAY, HIGH); delay(3000);}
  Serial.print("Time and year = "); Serial.println(time.gettime("H:i Y"));
  time.period(1);
  Serial.end();
}
void loop(){                                                
    if(millis()%(60000)==0){
      time.gettime();
      if (time.Hours>=on&&time.Hours<off ) digitalWrite(RELAY, HIGH);
      else digitalWrite(RELAY, LOW);  
    }                                                      
}       

АЛГОРИТМ:
Если часы не установлены спросит в UART часы, минуты и год.
Иначе Включит нагрузку на 3 сек и перейдёт в рабочий режим.
Раз в минуту смотрит который час и переключает нагрузку по условию.

ОПИСАНИЯ ПАРАМЕТРОВ ФУНКЦИЙ:

/*    ОПИСАНИЯ ПАРАМЕТРОВ ФУНКЦИЙ:     
 *     
  iarduino_RTC time(название модуля [, вывод SS/RST [, вывод CLK [, вывод DAT]]]);
      если модуль работает на шине I2C или SPI, то достаточно указать 1 параметр, например: iarduino_RTC time(RTC_DS3231);
      если модуль работает на шине SPI, а аппаратный вывод SS занят, то номер назначенного вывода SS для модуля указывается вторым параметром, например: iarduino_RTC time(RTC_DS1305,22);
      если модуль работает на трехпроводной шине, то указываются номера всех выводов, например: iarduino_RTC time(RTC_DS1302, 1, 2, 3); // RST, CLK, DAT
  
  Для работы с модулями, в библиотеке реализованы 5 функций:
      инициировать модуль  begin();
      указать время        settime(секунды [, минуты [, часы [, день [, месяц [, год [, день недели]]]]]]);
      получить время       gettime("строка с параметрами");
      мигать времем        blinktime(0-не_мигать / 1-мигают_сек / 2-мигают_мин / 3-мигают_час / 4-мигают_дни / 5-мигают_мес / 6-мигает_год / 7-мигают_дни_недели / 8-мигает_полдень)
      разгрузить шину      period (минуты);
  
  Функция begin():
      функция инициирует модуль: проверяет регистры модуля, запускает генератор модуля и т.д.
  
  Функция settime(секунды [, минуты [, часы [, день [, месяц [, год [, день недели]]]]]]):
      записывает время в модуль
      год указывается без учёта века, в формате 0-99
      часы указываются в 24-часовом формате, от 0 до 23
      день недели указывается в виде числа: 0-воскресенье, 1-понедельник, 2-вторник ..., 6-суббота
      если предыдущий параметр надо оставить без изменений, то можно указать отрицательное или заведомо большее значение
      пример: time.settime(-1, 10); установит 10 минут, а секунды, часы и дату, оставит без изменений
      пример: time.settime(0, 5, 13); установит 13 часов, 5 минут, 0 секунд, а дату оставит без изменений
      пример: time.settime(-1, -1, -1, 9, 2, 17); установит дату 09.02.2017 , а время и день недели оставит без изменений
  
  Функция gettime("строка с параметрами"):
      функция получает и выводит строку заменяя описанные ниже символы на текущее время
      пример: time.gettime("d-m-Y, H:i:s, D"); ответит строкой "01-10-2015, 14:00:05, Thu"
      пример: time.gettime("s");               ответит строкой "05"
      указанные символы идентичны символам для функции date() в PHP
  s   секунды                       от      00    до       59  (два знака)
  i   минуты                        от      00    до       59  (два знака)
  h   часы в 12-часовом формате     от      01    до       12  (два знака)
  H   часы в 24-часовом формате     от      00    до       23  (два знака)
  d   день месяца                   от      01    до       31  (два знака)
  w   день недели                   от       0    до        6  (один знак: 0-воскресенье, 6-суббота)
  D   день недели наименование      от     Mon    до      Sun  (три знака: Mon Tue Wed Thu Fri Sat Sun)
  m   месяц                         от      01    до       12  (два знака)
  M   месяц наименование            от     Jan    до      Dec  (три знака: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
  Y   год                           от    2000    до     2099  (четыре знака)
  y   год                           от      00    до       99  (два знака)
  a   полдень                               am   или       pm  (два знака, в нижнем регистре)
  A   полдень                               AM   или       PM  (два знака, в верхнем регистре)
  
  если требуется получить время в виде цифр, то можно вызвать функцию gettime() без параметра, после чего получить время из переменных
      пример:  time.gettime();
               Serial.print(time.Hours);   Serial.print(":");  // Вывод часов
               Serial.print(time.minutes); Serial.print(":");  // Вывод минут
               Serial.print(time.seconds); Serial.println(""); // Вывод секунд
      seconds  секунды     0-59
      minutes  минуты      0-59
      hours    часы        1-12
      Hours    часы        0-23
      midday   полдень     0-1 (0-am, 1-pm)
      day      день месяца 1-31
      weekday  день недели 0-6 (0-воскресенье, 6-суббота)
      month    месяц       1-12
      year     год         0-99
  
  Функция blinktime(параметр [, частота ]):
      указывает функции gettime мигать одним из параметров времени (заменять параметр пробелами)
      функция может быть полезна, для отображения на дисплее, устанавливаемого параметра времени
      например при установке минут, они начинают мигать, и Вам понятно, что именно Вы устанавливаете
      первым аргументом функции указывается параметр в виде числа от 0 до 8
  0   не мигать
  1   мигают сек
  2   мигают мин
  3   мигают час
  4   мигают дни
  5   мигают мес
  6   мигает год
  7   мигают дни недели
  8   мигает полдень
      второй аргумент функции является необязательным, он указвает частоту миганий в Гц, по умолчанию 1Гц
      пример: time.blinktime(6);    // при выводе на дисплеё будет мигать год с частотой по умолчанию 1Гц
      пример: time.blinktime(6, 2); // при выводе на дисплеё будет мигать год с частотой 2Гц
  
  Функция period(минуты):
      устанавливает минимальный период обращения к модулю в минутах (от 0 до 255)
      функция может быть полезна, если шина сильно нагружена, на ней имеются несколько устройств
      пример: time.period(10); // теперь каждые 10 минут к модулю может быть отправлен только 1 запрос на получение времени
      ответом на все остальные запросы будет результат последнего полученного от модуля времени + время прошедшее с этого запроса */

 

Green
Offline
Зарегистрирован: 01.10.2015

lazy-fox пишет:

Модуль DS1302 в итоге оказался действительно не на I2C или SPI, а на некой 3-wire шине.

Сначала нужно испробовать все варианты, а затем прочесть инструкцию. Как обычно.