Часики ds3231 и ардуинка

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

В общем нашел вот такую библиотеку с примерчиками. все отлично работает. вопрос следующий: может кто посоветует что то лучше? (вдруг я не увидел какие то подводные камни в ней)

спс. :)

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

exez, открою секрет -для устройств на шине I2C вообще не нужны никакие библиотеки, максимум -библа wire для удобства общения с самой шиной. Смотрите в даташит по какому адресу что лежит, и читаете. Библы -для чайников, которые не хотят ничего учить :)

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

спасибо. буду иметь ввиду :)

зы: странно что ссылка в первом посте не отобразилась :)

http://lesson.iarduino.ru/page/podklyuchenie-rtc-chasy-realnogo-vremeni-ds1302-ds1307-ds3231-k-arduino/

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

exez, посмотрел из любопытсва эту библу, так она ж вроде ничего кроме показа и установки часов не умеет? Там же ещё два будильника, встроенный датчик температуры.. Вот например как просто читается температура из ds3231 Только на одной библе wire:

Wire.beginTransmission(0x68);
Wire.write(0x11);
Wire.endTransmission();
Wire.requestFrom(0x68, 2);
float temp= (Wire.read()<<2 | Wire.read()>>6)*0.25;
Serial.println(temp);

 

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Странно, но с библиотекой Wire.h у меня ничего не работает.. ошибка вот такая:

 
exit status 1
#include expects "FILENAME" or <FILENAME>
dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

exez,  видимо ошибка в синтакисе подключения файла  нужно так:

#include "Wire.h"
 

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Спасибо! Помогло.  Правда теперь новая ошибка вылазит: WARNING: Category '' in library OneWire is not valid. Setting to 'Uncategorized'

Но компилируется и работает!

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

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

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Попробую все снести и переустановить. Спасибо.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Использую для работы с часами вот этот код. http://arduino.ru/forum/apparatnye-voprosy/arduino-uno-podklyuchenie-rtc-ds3231#comment-54064

Хочу применить в проэкте, когда человек вводит время через кнопки с пульта и потом применяет настройки записывая время в ds3231. До этого ввел время через библиотеку RTC.h.

Не могу понять как установить время через Wire.h. 

Буду признателен за пинок в нужном направлении.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

exez пишет:

Использую для работы с часами вот этот код. http://arduino.ru/forum/apparatnye-voprosy/arduino-uno-podklyuchenie-rtc-ds3231#comment-54064

Хочу применить в проэкте, когда человек вводит время через кнопки с пульта и потом применяет настройки записывая время в ds3231. До этого ввел время через библиотеку RTC.h.

Не могу понять как установить время через Wire.h. 

Буду признателен за пинок в нужном направлении.

Ответ на этот вопрос ищите в функции void set3231Date() в этом скетче.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Я его видел. На как заставить эту функцию залить правильные настройки времени?

Это? 

  Wire.write(0x00);
  Wire.write(decToBcd(seconds));
  Wire.write(decToBcd(minutes));
  Wire.write(decToBcd(hours));
  Wire.write(decToBcd(day));
  Wire.write(decToBcd(date));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));

 

 

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Странно. Как только убрал эту часть кода:

//  seconds = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); // Use of (byte) type casting and ascii math to achieve result.  
//  minutes = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
//  hours   = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
//  day     = (byte) (Serial.read() - 48);
//  date    = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
//  month   = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));
//  year    = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48));

И добавил это время стало устанавливаться..


 if (digitalRead(2) == LOW) 
   {
  seconds = 00; // Use of (byte) type casting and ascii math to achieve result.  
  minutes = 02;
  hours   = 11;
  day     =  7;
  date    = 8;
  month   = 11;
  year    = 15; 
  set3231Date();
   }     
   else {}

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

exez, а что, через сериал не заливается? Судя по коду там нужно послать 13 цифр отправляя их по-одной, а последняя цифра года - двумя. Т.е. исходя из вашего предыдущего примера нужно было посылать так 0, 0, 0, 2, 1, 1, 7, 0, 8, 1, 1, 15

PS А, нет, год тоже по-одной. Хотя у года судя по даташиту не нужно  отделять единицы от десяток.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Не понимаю что писать в Serial.write.. ^(

Уже и так и эдак перепробовал. не компилируется..

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

exez, не понимаю в чём суть вопроса. По той ссылке полностью рабочий скетч. Там и пример посылки команды для установки времени есть:

//T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year)

058 //T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99)
059 //Example: 02-Feb-09 @ 19:57:11 for the 3rd day of the week -> T1157193020209

 

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Он работает если под руками есть комп. Тогда нет вопросов. Действительно забиваешь то что указано в примере и выставляется время.

Вопрос в том, что в готовом девайсе комп не присутствует. Есть кнопки которыми вводятся значения часов и потом время надо сохранить. Пока это удалось сделать только так, как описал это выше.

Пример девайса:

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

exez, нужно дописать довольно серьёзную подпрограмму, что-б с кнопок устанавливать время. Чем больше кнопок будет под это дело, тем легче всё обыграть, и тем удобнее устанавливать время. Навеняка кто-то уже делал подобное..

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Я понял. Спасибо. Буду пользоваться тем, что дописал сам. Меня в принципи все устраивает из того как оно работает.

Вот может кому понадобится.

Кусочек работы с режимами:

 if (Regim==1) {Serial.println("R1 hh"); Cminus(); delay(300); C1(); delay(500); Cminus(); delay(300); CC();} else      //  1 Часы
 if (Regim==2) {Serial.println("R2 mm"); Cminus(); delay(300); C2(); delay(500); Cminus(); delay(300); CC();} else      //  2 Минуты
   

Работа с кнопками:

// -- hh1

  if (digitalRead(KeyD) == LOW && Regim == 1) 
  {
  hh1--; if(hh1 < 0) {hh1 = 23;} V = hh1; Vivod(); Serial.println(hh1);
  }

  if (digitalRead(KeyU) == LOW && Regim == 1) 
  {
  hh1++; if(hh1 > 23) {hh1 = 0;} V = hh1; Vivod(); Serial.println(hh1);
  }

// -- mm1

  if (digitalRead(KeyD) == LOW && Regim == 2) 
  {
  mm1--; if(mm1 < 0) {mm1 = 59;} V = mm1; Vivod(); Serial.println(mm1);
  }

  if (digitalRead(KeyU) == LOW && Regim == 2) 
  {
  mm1++; if(mm1 > 59) {mm1 = 0;} V = mm1; Vivod(); Serial.println(mm1);
  }

Установка времени(мне нужно только время, кому надо больше - допишите остальное) для того кода что приведен выше:

  seconds = 00; // Use of (byte) type casting and ascii math to achieve result.  
  minutes = mm1;
  hours   = hh1;
  set3231Date();

 

 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

У себя в часах я с помощью библиотеки #include "DS3231.h"  сделал следующим образом: 1. создал функцию установки часов

void wraitData() //Установка часов и даты
{
  Clock.setSecond(00);//Установка second (секунд)
  Clock.setMinute(minA);//Установка minute (минуты)
  Clock.setHour(chas2); //Установка hour (часов)
  //Clock.setDoW(2); //Установка day (день недели)
  //Clock.setDate(23); //Установка date (дата месяца)
  //Clock.setMonth(12); //Установка month (месяц года)
  //Clock.setYear(14); //Установка year (Года)
}

2. Выставляю время на экране и в момент перехода секунд через 00 нажимаю кнопку записать  и спомощью данной функции задаю время. День, месяц, год установил один раз о больше не меняю.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

спасибо за совет по дате.

я по совету Димакса не пользовался дополнительными библами.. поэтому выкручивался как мог имея на руках что что было..

зы: ну и уже подводя итоги могу сказать что памяти на моей тестовой ардуине 168(которую хотел использовать) не хватит для того проекта что собираюсь в конце сделать. скорее всего придется использовать 328ой чип. Поэтому буду стараться теперь оптимизировать код.

Joiner
Offline
Зарегистрирован: 04.09.2014

Хочу сделать небольшую плату. На нее установить разъем для дисплея, микроконтоллер Atmega 328, пищалку, микросхемку часов реального времени, сделать разъемчик для аналоговой пятикнопочной клавиатуры. В общем такой блок, чтобы ....ну в общем, чтобы компактно и удобно.

В связи с этим вопрос:    Зачем на модуле часов реального времени присобачена микросхема памяти.

Интересуюсь для того, надо ли мне ее на плату присабачивать?

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

Joiner пишет:

Хочу сделать небольшую плату. На нее установить разъем для дисплея, микроконтоллер Atmega 328, пищалку, микросхемку часов реального времени, сделать разъемчик для аналоговой пятикнопочной клавиатуры. В общем такой блок, чтобы ....ну в общем, чтобы компактно и удобно.

В связи с этим вопрос:    Зачем на модуле часов реального времени присобачена микросхема памяти.

Интересуюсь для того, надо ли мне ее на плату присабачивать?

Чтобы було))))

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

Я себе такую состряпал.

Дисплей I2C, пятиклавишный джойстик аналоговый, буззеры активный и пассивный, детектор нуля, три симистора+моськи в кроватках. Часы на 1307 и 3231, первые деть было некуда)))). И семь светиков.

Joiner
Offline
Зарегистрирован: 04.09.2014

bwn пишет:

Я себе такую состряпал.

..................................

Занятно. А я не хочу готовые модули ставить, хочу микросхемами на печатку, и дисплей TFT. Уже сделал нечто подобное, но готовый модуль часов поставил, клавиатуру сделал. Оно висит у меня на стенке, часики со стрелками заменяет. Попробовал на нем поиграться....удобно, ни каких проводов не надо, ну....если для каких-то умеренных целей. О ней, или о нем писал в теме про TFT дисплейчик.

http://arduino.ru/forum/apparatnye-voprosy/tft-lcd-ili9163c-128x128#comment-148230

Сейчас пока делаю самодельный модуль DS3231, чтобы проверить микросхемки, которые пришли с ебея 5шт за 120 рублей. Что-то цена подозрительная.

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

Joiner пишет:

Сейчас пока делаю самодельный модуль DS3231, чтобы проверить микросхемки, которые пришли с ебея 5шт за 120 рублей. Что-то цена подозрительная.

Реальная цена, я их в прошлом году по 16р/шт брал. Все работают. Для проверки я себе такой зажим взял. Недешевый, но удобный.

Joiner
Offline
Зарегистрирован: 04.09.2014

Дороговасто....тем более пока редко с микросхемками сталкиваюсь.

Joiner
Offline
Зарегистрирован: 04.09.2014

Жаба победила....Решил сам сделать переходник в виде крокодила. Сделал печатку....по лазерно-алкогольно-ацетоновой технологии. Мелкие дорожки получились с шагом даже меньше чем на микроконтроллере Atmega 8-328. Успех :) Вот фото.

Конечное устройство покажу позднее.

P.S. Самая тоненькая линия 0.1 мм

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Joiner пишет:

Мелкие дорожки получились с шагом даже меньше чем на микроконтроллере Atmega 8-328.

В DIP корпусе что ли? (шаг 2,54мм) Дык это самый большой шаг на микросхемах.

Joiner
Offline
Зарегистрирован: 04.09.2014

Jeka_M пишет:

В DIP корпусе что ли? (шаг 2,54мм) Дык это самый большой шаг на микросхемах.

Конечно же нет.

2.54 для меня давно не проблема. Я имел в виду атмегу малюсенькую, в квадратненьком корпусе. На фотке по спичке видно же примерно пропорции. Кругленькие площадки с шагом 2.54 для штырьков, чтобы в макетку вставлять, а после поворота дорожки гораздо плотнее.

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

vk007
Offline
Зарегистрирован: 16.06.2015

Joiner пишет:

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

Печатаю на фотобумаге. Меня устраивает почти все. Единственное что в некоторых местах (особенно в местах для отверстий под выводы) часто остается тонкий слой покрытия и его я легко удаляю иголкой. Читал на форумах, что можно не удалять и он стравится. В последний раз решил так и сделать. Стравился, но не сразу. И получилось, что дорожки уже все протравленные, а в будущих отверстиях медь стравилась еще не полностью. В итоге при ручном сверлении было неудобно центрировать сверло.

Joiner
Offline
Зарегистрирован: 04.09.2014

vk007 пишет:

Печатаю на фотобумаге. ................

Спасибо, попробую. Фотобумага для струйника? Глянцевая или матовая?

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

Joiner пишет:

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

Я на факсовой, почти не липнет. Где много узких дорожек рядом проходит, надо немного пальцем потереть.

vk007
Offline
Зарегистрирован: 16.06.2015

Joiner пишет:

Фотобумага для струйника? Глянцевая или матовая?

Да, для струйника. Глянцевая.

И еще, такая бумага обычно потолще факсовой и журнальной, то и прогревать ее надо чуть лучше. В общем, как и во всем, надо приловчиться.

Joiner
Offline
Зарегистрирован: 04.09.2014

vk007 пишет:

......., то и прогревать ее надо чуть лучше. В общем, как и во всем, надо приловчиться.

Я нагрев не использую. У меня лазерно-алкоголно-ацетоновая технология.

Намачиваю смесью спирта и ацетона, и прижимаю на 40 мин.

Joiner
Offline
Зарегистрирован: 04.09.2014

Доделал переходник для микросхемок. Теперь без пайки смогу с ними поиграться. Начну с DS3231.

А пока в переходнике торчит Attiny2313.......это для фотоотчета. Беленькие детали на переходнике - это распиленный вдоль разъем PCI с дохлой материнки. Шаг как раз совпадает, и контакты подпружиненные. Только на сам крокодил надо какую-то пружину придумать. Пока колечком из резины воспользуюсь.

Доступно 24 ноги, все можно использовать для опытов :)

 

 

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

Супер, произведение исскуства))).
А соики мелкие зажмет?

"Намачиваю смесью спирта и ацетона, и прижимаю на 40 мин."
А как равномерный прижим обеспечивается?
 

a5021
Offline
Зарегистрирован: 07.07.2013

Занятная конструкция, но проще сделать по такому принципу:

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

a5021 пишет:

Занятная конструкция, но проще сделать по такому принципу:

Я себе подобную на sot23 и мельче сделал.

Joiner
Offline
Зарегистрирован: 04.09.2014

bwn пишет:

Супер, произведение исскуства))).
А соики мелкие зажмет?

"Намачиваю смесью спирта и ацетона, и прижимаю на 40 мин."
А как равномерный прижим обеспечивается?
 

Спасибо...

Тиньку 13 зажимает, и все остальное до 2313....более ни чего не пробовал.

У меня столешница от кухонного гарнитура толщиной 36 мм с ровным краем. По краю кладу небольшую пластинку дюраля 4мм, на нее плату, сверху платы отпечатанные рисунок (все предварительно смоченное смесью ацетона и спирта), накрываю несколькими листочками бумаги (штук 5-10) по размеру платы, сверху накрываю пластинкой упругого материала толщиной 3мм (у меня какой-то прозрачный силикон), и наконец другой пластинкой дюраля. Все сжимаю умеренно сильно струбцинкой...и жду.

Потом разбираю пирог, аккуратненько....Отпечаток с платы сразу не отдираю, а даю просохнуть. Сейчас сушу несколько минут на батарее отопления. Потом смываю бумагу. У меня это самый гемор. Глянец с журналов сильно прилипает и трудно смывается. Потом кладу плату на подставочке в пластиковую баночку с крышкой, на дно которой брызгаю немного ацетона, и оставляю там еще минут на 40. Потом опять просушиваю, и плата готова к травлению.

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

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

Joiner пишет:

У меня столешница от кухонного гарнитура толщиной 36 мм с ровным краем. По краю кладу небольшую пластинку дюраля 4мм, на нее плату, сверху платы отпечатанные рисунок (все предварительно смоченное смесью ацетона и спирта), накрываю несколькими листочками бумаги (штук 5-10) по размеру платы, сверху накрываю пластинкой упругого материала толщиной 3мм (у меня какой-то прозрачный силикон), и наконец другой пластинкой дюраля. Все сжимаю умеренно сильно струбцинкой...и жду.

Потом разбираю пирог, аккуратненько....Отпечаток с платы сразу не отдираю, а даю просохнуть. Сейчас сушу несколько минут на батарее отопления. Потом смываю бумагу. У меня это самый гемор. Глянец с журналов сильно прилипает и трудно смывается. Потом кладу плату на подставочке в пластиковую баночку с крышкой, на дно которой брызгаю немного ацетона, и оставляю там еще минут на 40. Потом опять просушиваю, и плата готова к травлению.

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

Как раз качество понравилось, у меня такие тонкие норовят расползтись под утюгом. Какие пропорции спирт-ацетон ? Попробую.
Бумагу попробуйте факсовую, у меня лучше всех пошла. Оттирание после утюга на плотных дорожках типа вашей платы, минуту-полторы занимает.

Joiner
Offline
Зарегистрирован: 04.09.2014

bwn пишет:

Как раз качество понравилось, у меня такие тонкие норовят расползтись под утюгом. Какие пропорции спирт-ацетон ? ......................

Навел пузырек смеси и забыл пропорции. Эту технологию узнал на этом форуме, и проборции здесь же. Не помню в какой теме. Найду, дам ссылочку. Там что-то вроде 5:8.

Там и ролик есть. Товарищ показывает эту технологию, но без струбцины. Он просто приглаживает, немного ждет, потом снимает бумагу, а рисунок остается. У меня так не получилось :(

a5021
Offline
Зарегистрирован: 07.07.2013

Как-то у вас все сложно. Однажды мне захотелось посмотреть, какие минимальные размеры дорожек/зазоров могут получаться с помощью обычного ЛУТа, без каких либо дополнительных приспособлений. По результатам эксперимента вышло, что дорожки 0.127мм и зазоры 0.085мм (две дорожки внизу) вполне по силам, если озадачиться.

Площадки в центре под типоразмер 0402.

Joiner
Offline
Зарегистрирован: 04.09.2014

a5021 пишет:

Как-то у вас все сложно. ............дорожки 0.127мм и зазоры 0.085мм (две дорожки внизу) вполне по силам, если озадачиться.

................

Не знаю....может руки у меня немного кривые, но ЛУТом у меня так не получается. А по алкогольно-ацетоновой дорожку 0.1мм сделаю, если сильно постараюсь.

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

a5021 пишет:

Как-то у вас все сложно. Однажды мне захотелось посмотреть, какие минимальные размеры дорожек/зазоров могут получаться с помощью обычного ЛУТа, без каких либо дополнительных приспособлений. По результатам эксперимента вышло, что дорожки 0.127мм и зазоры 0.085мм (две дорожки внизу) вполне по силам, если озадачиться.

Площадки в центре под типоразмер 0402.

Получаются, но повторяемости нет, значит нетехнологично. У себя еще на тонер грешу, "Brother", а по нему попадалось, что весьма тугоплавкий. Другого нет, не сравнить.(((((

Joiner
Offline
Зарегистрирован: 04.09.2014

Собрал на макетке модуль часов DS3231. Цель-проверить работоспособность микросхемы. Получил истинное удовольствие. 5-10 минут и все готово! Без пайки и прочего геммороя. Теперь не жалко времени, убитого на изготовление переходника. Следущий шаг - прошивка тинек 85 и 2313.

Вот так выглядят часики на макетке

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

P.S. Часики идут уже больше суток. Отключаю их от ардуинки, и они лежат в шкафу. Временами подключаю и проверяю уход от олайн часов точного времени. Онлайн часы синхронизируются с мировыми атомными часами, и позволяют оценить точность хода модуля. При установке часов получилось отставание от мировых на 2 сек, которое за сутки совсем не изменилось. Понаблюдаю еще недельку. Но уже видно, что микросхемка просто классная!!!! Заявленные характеристики оправдывает и обвязки минимум, и встроенный внутри кварц и термокомпенсация. А еще можно и температуру выводить. Молодцы буржуи!

А вот с готовым модулем DS3231 мои часики при отключении от питания почему-то немного сбиваются. Т.Е. если время было настроено точно, то после отключения оно не обнуляется, а уходит в сторону, и чем дольше отключение, тем больше ошибка. Часики идут с ноября прошлого года....может батарейка сдохла? Но слышал, что батарейки должно хватать года на три.

Joiner
Offline
Зарегистрирован: 04.09.2014

Решил "переделать" модуль часов, который стоит в моих часиках. И как оказалось не зря. Вот фотка часов, уже с исправленным модулем

Стрелкой обозначено место где был диод, который подавал напряжение через резистор от VCC на батарейку. На фотке можно заметить, что батарейка стала пузатая. В натуре это конкретно заметно. Понаблюдаю изменения в работе, отпишусь.

P.S. Батарейку заменил. Поотключал, поподключал...Все очень здорово, время не сбивается ни на секунду. Остается испытание временем. Кто пользуется данным модулем, рекомендую сделать с ним тоже самое.

rapidshe
Offline
Зарегистрирован: 31.12.2015

vosara пишет:

У себя в часах я с помощью библиотеки #include "DS3231.h"  сделал следующим образом: 1. создал функцию установки часов

void wraitData() //Установка часов и даты
{
  Clock.setSecond(00);//Установка second (секунд)
  Clock.setMinute(minA);//Установка minute (минуты)
  Clock.setHour(chas2); //Установка hour (часов)
  //Clock.setDoW(2); //Установка day (день недели)
  //Clock.setDate(23); //Установка date (дата месяца)
  //Clock.setMonth(12); //Установка month (месяц года)
  //Clock.setYear(14); //Установка year (Года)
}

2. Выставляю время на экране и в момент перехода секунд через 00 нажимаю кнопку записать  и спомощью данной функции задаю время. День, месяц, год установил один раз о больше не меняю.

время менять получается, а вот относительно даты ругается 'class DS3231' has no member named 'setYear'

хотя библиотека <DS3231.h>

UPD в библиотете нашел только setDate(день, месяц, год); 

а как по-отдельности?

Joiner
Offline
Зарегистрирован: 04.09.2014

dimax пишет:

exez, открою секрет -для устройств на шине I2C вообще не нужны никакие библиотеки, максимум -библа wire для удобства общения с самой шиной. Смотрите в даташит по какому адресу что лежит, и читаете. Библы -для чайников, которые не хотят ничего учить :)

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

Имеется три варианта. 1 - библиотека ds3231,   2 - библиотека DS3231 (автор из польши, не помню имени),   3 - непосредственное обращение к регистрам часиков. Попробовал все 3 варианта, все работают, претензий нет. Но в первом варианте нет будильников,  а может и в третьем их нет, но можно сделать. Но самое большое отличие в следующем:

Я внял советам многих форумчан, что часики должны работать на прерываниях, что я и сделал. Соединил вызод SQW с пином ардуинки и добавил соответствующие строчки в скетч. Первый вариант работает без проблем, остальные два на прерываниях виснут наглухо. В первом варианте библиотека Wire.h не упоминается, в остальных двух используется. Видимо это конфликт с библиотекой Wire.h.  Не понимаю, как это обойти.

Xeornonn
Offline
Зарегистрирован: 22.10.2016

дороговато как по мне

Joiner
Offline
Зарегистрирован: 04.09.2014

Xeornonn пишет:

дороговато как по мне

Ну да...модуль DS3231 + Ардуинка про мини + дисплейчик ILI9263c + активный буззер....получается примерно 400р. Ну да..дороговато. В китае можно часы готовые дешевле купить. Но с ними ни чего уже не сделаешь. А свои можно менять со временем. Надоели, взял и что-то поменял. Да и точность DS3231 того стоит. Я уже писал, что являюсь фанатом DS3231. Ни на какие не променяю.