DS1302 настройка\вывод времени

Banko
Offline
Зарегистрирован: 03.11.2015

подключена к выходу 5v

Доброго всем вечера, собсна проблема заключается в том, что помимо необходимой инфы выводится какой-то бред, типа стандартного времени или рандомной даты:

Вывод 1:

Friday 03.11.2015 — 04:35:55 
304:35:55 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 04:36:03 
Friday 03.11.2015 — 04:36:05 
Friday 03.11.2015 — 04:36:07 
304:36:07 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 04:36:15 
Friday 03.11.2015 — 04:36:17 
Friday 03.11.2015 — 04:36:19

вывод 2:

000:00:85 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:39 
319:50:39 00.00.2012 — 00:00:85 
000:00:85 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:41 
319:50:41 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:43 
319:50:43 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:45 
319:50:45 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:47 
319:50:47 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:49 
319:50:49 00.00.2012 — 00:00:85 
Friday 03.11.2015 — 19:50:51

пример одного из кодов, которыми пытался её заставить работать:

#include <DS1302.h> // Подключение библиотеки часов.

 // DS1302:
 // CE pin -> Arduino Digital 3
 // I/O pin -> Arduino Digital 1
 // SCLK pin -> Arduino Digital 0
DS1302 rtc(45, 46, 44);
void setup()
 {
 // Запуск часов
rtc.halt(false);
rtc.writeProtect(false);
  Serial.begin(9600);
 // Три нижние строчки в первый раз раскомментированы, в них указываем текущую дату и время. Второй раз - закомментруем.
 rtc.setDOW(THURSDAY); // День недели, если пятница, то FRIDAY на русском не писать!
 rtc.setTime(20, 11, 0); // Часы, минуты, секунды 24-часовой формат.
 rtc.setDate(03, 11, 2015); 
 }
 void loop()
 {

// Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
delay (1000); 
 }

библиотеку для этого кода юзал http://kazus.ru/nuke/objects/circuits/Y/y6047y49d1p14587p726su88ihp6i867/file/2-DS1302.rar

цель вывод в консоль инфы о времени вида:

Monday 22.01.2018 — 00:00:00 
Monday 22.01.2018 — 00:00:01 
Monday 22.01.2018 — 00:00:02 
Monday 22.01.2018 — 00:00:03 
Monday 22.01.2018 — 00:00:04 
 

нид хэлп, мб не там копаю, грешу уже на глюки чисто модуля 1302, тк в банальных туториал с простым кодом и библиотекой всё норм выводится хХ

 

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

А если в 31 строке написать

Serial.println(rtc.getTimeStr(FORMAT_SHORT));

Не помогает? Хотя, вряд-ли, но попробуйте и скажите что поменялось.

Только пожалуйста, если Вы действительно хотите помощи, не надо "вывод 1", "вывод 2", "а вот один из скетчец". Публикуйте скетч и тот самый протокол, который именно этот скетч выдаёт. Иначе невозможно смотреть, понимаете?

 

Banko
Offline
Зарегистрирован: 03.11.2015

хорошо, вот вывод, что дала замена на Serial.println(rtc.getTimeStr(FORMAT_SHORT));

Thursday 03.11.2015 -- 20:23
320:23 00.00.2012 -- 00:00
Thursday 03.11.2015 -- 20:24
320:24 00.00.2012 -- 00:00
Thursday 03.11.2015 -- 20:24
 

 

Banko
Offline
Зарегистрирован: 03.11.2015

после комментирования 3-ех строчек программирования, затем получения того результата, выключил питание на всей ардуино, включил и вывод стал:

Monday 01.01.2000 -- 00:05
100:05 00.00.2012 -- 00:00
Monday 01.01.2000 -- 00:06
100:06 00.00.2012 -- 00:00
Monday 01.01.2000 -- 00:07
100:07 00.00.2012 -- 00:00
Monday 01.01.2000 -- 00:07
100:07 00.00.2012 -- 00:00

походу батарейка не сохраняет время на часах, или я что-то не так делаю?
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Знаете, я не парился с этой лишней информацией. Оная явно идёт после перевода строки. Я бы его искал сразу после получения строки и заменял бы на '\0'. Просто отбрасывал бы ненужное.