Дни недели.

Не могу сделать показ дней недели с DS3231

Ответить
hatul
Сержант
Сообщения: 147
Зарегистрирован: 06.05.2017{, 18:40}
Репутация: 0
Откуда: Netanya

Дни недели.

#1

Сообщение hatul » 17.04.2019{, 19:42}

Решил в свои часики добавить показ дней недели.Реализовать решил через сдвиговый регистр 74НС595.Схема такова:7 светодиодов подключаем к модулю часов через сдвиговый регистр. Каждый день загорается свой светодиод.Вроде ничего сложного,но довести до ума не получается.Пробовал два варианта. Первый вариант: просто подключил к часам сдвиговый регистр. Неделю работало нормально,а с субботы на воскресенье все светодиоды погасли. Начал разбираться.В FLProg зашел в настройки часов,а там стоит вместо воскресенья суббота.Пробую другие дни,просто устанавливаю время 23ч.58мин.,жду пару минут,все работает,день переключается.Доходит до субботы,конец,дальше день не переключается.Хотя время идет нормально.
СпойлерПоказать
Screen9.jpg
Screen9.jpg (15.13 КБ) 529 просмотров
Попробовал второй вариант.Подключил счетчик.Здесь неважно какой день установлен в часах,после загрузки скетча загорается понедельник.
СпойлерПоказать
Screen8.jpg
Подскажите,где собака зарылась!
Pr_1.flp
Первый вариант
(54.27 КБ) 29 скачиваний
Pr_2.flp
Второй вариант
(78.87 КБ) 31 скачивание

Аватара пользователя
Goosr
Сержант
Сообщения: 184
Зарегистрирован: 07.06.2016{, 08:25}
Репутация: 16
Откуда: Тольятти
Имя: Дмитрий

Дни недели.

#2

Сообщение Goosr » 18.04.2019{, 07:42}

А он дни недели не с 0 ли считает? :smile37:
FLProg 6.3.1 - 7.3.4 - Linux

mgr
Рядовой
Сообщения: 83
Зарегистрирован: 07.11.2015{, 10:22}
Репутация: 5

Дни недели.

#3

Сообщение mgr » 18.04.2019{, 08:50}

Считает от 1 до 7. 1 - воскресенье..7- суббота
Dgordg

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Дни недели.

#4

Сообщение Sancho » 18.04.2019{, 09:35}

mgr,
Вот что говорит код :)
СпойлерПоказать

Код: Выделить всё

//Плата:1
get3231Date(0x68, &_RTC1);
_RTC1_GetTime1_StrOut = ( _dayNameFromRealTimeClockNumber(_RTC1.weekday)); 
// получаем день недели строкой функцией

_RTC1_GetTime1_DowOut = _RTC1.weekday; 
// получаем день недели числом

//Сама функция получения строки из числа
String _dayNameFromRealTimeClockNumber(byte value)
{
  switch (value) {
    case 1:                     // для 1
      return  String("Mon");  // вернём, по буржуйски, понедельник
      break;
    case 2:                       // для 2
      return  String("Tue"); // вторник и т.д.
      break;
    case 3:
      return  String("Wed");
      break;
    case 4:
      return  String("Thu");
      break;
    case 5:
      return  String("Fri");
      break;
    case 6:
      return  String("Sat");
      break;
    case 7:
      return  String("Sun");
      break;
  }
  return  String("");
Обратите внимание на цифры case и вызов функции в строке 3 :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

mgr
Рядовой
Сообщения: 83
Зарегистрирован: 07.11.2015{, 10:22}
Репутация: 5

Дни недели.

#5

Сообщение mgr » 18.04.2019{, 11:43}

Sancho, я сегодня код посмотреть не смогу к сожалению, но на выходе "Dow" (Byte) - 1 будет в воскресение.
Сегодня четверг - у меня на выходе пятёрка.
А вы наверное про стринговую говорите?
Dgordg

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Дни недели.

#6

Сообщение Sancho » 18.04.2019{, 11:59}

mgr писал(а):
18.04.2019{, 11:43}
Сегодня четверг - у меня на выходе пятёрка.
А вы наверное про стринговую говорите?
Странно - у меня сегодня, в четверг, 4 :)
СпойлерПоказать
2019-04-18 09-07-32.JPG
hatul, или перед селектором прибавьте единицу, или добавьте ещё один выход Q7 и Q0 освободите.
Вложения
Часы день v01.flp
Для проверки дня недели числом
(30.32 КБ) 35 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

mgr
Рядовой
Сообщения: 83
Зарегистрирован: 07.11.2015{, 10:22}
Репутация: 5

Дни недели.

#7

Сообщение mgr » 18.04.2019{, 12:58}

Sancho, Я сегодня всё равно не смогу посмотреть ничего. А вы можете проверить такое, у меня 3231 синхронизируются по NTP (и день в том числе) встроенному в flprog, может быть из за этого у меня так?
Ну по крайней мере не с 0-я начинается, как сделано у hatul, с чего пост то начался.
Dgordg

mgr
Рядовой
Сообщения: 83
Зарегистрирован: 07.11.2015{, 10:22}
Репутация: 5

Дни недели.

#8

Сообщение mgr » 18.04.2019{, 12:59}

у него отсчёт с нуля наверное поэтому и пропадают показания?!
Dgordg

hatul
Сержант
Сообщения: 147
Зарегистрирован: 06.05.2017{, 18:40}
Репутация: 0
Откуда: Netanya

Дни недели.

#9

Сообщение hatul » 18.04.2019{, 18:47}

Спасибо всем кто откликнулся.Приношу свои извинения,что долго не отвечал. Дело в том,что моя работа никаким образом не связана с компьютером,поэтому проверить советы,и отвечать я могу только вечером.
Goosr писал(а):
18.04.2019{, 07:42}
А он дни недели не с 0 ли считает?
mgr писал(а):
18.04.2019{, 12:59}
у него отсчёт с нуля наверное поэтому и пропадают показания?!
Да,с Q0. А как иначе? Если Q0 не подцеплен к сдв.регистру,то просто один день не горит.
Sancho писал(а):
18.04.2019{, 11:59}
или перед селектором прибавьте единицу
Не совсем понял.Если Вы имели в виду так
Screen9.jpg
Просто дни стали показывать на день больше,но один день все равно не горит.
Sancho писал(а):
18.04.2019{, 11:59}
или добавьте ещё один выход Q7 и Q0 освободите.
Так?
Screen8.jpg
Тоже самое.Первый день не горит.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Дни недели.

#10

Сообщение Sancho » 18.04.2019{, 19:02}

hatul, У Вас дисплей есть, типа 1602?
Если да - загрузите проект из поста выше.
Насчёт прибавить 1 - ошибся, нужно в Вашем случае отнять.
Но для начала проект попробуйте :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

hatul
Сержант
Сообщения: 147
Зарегистрирован: 06.05.2017{, 18:40}
Репутация: 0
Откуда: Netanya

Дни недели.

#11

Сообщение hatul » 18.04.2019{, 19:47}

Sancho писал(а):
18.04.2019{, 19:02}
У Вас дисплей есть
Нет. Да и дело то я думаю не в дисплее. Вот нашел пост с похожей проблемой
при установке часов через соответствующее меню, воскресенье записывается как нулевой день недели, а при компиляции рабочего проекта - как седьмой. При выводе значений строкой параметр "D" не отображает воскресенье. Проблема незначительная, можно подправлять значение case sun на нуль. Заметил в последней версии, в 2.5 работало без проблем. В описании блока версии 3.0.3 воскресенье обозначено седьмым днем, а в 2.5 - нулевым.

К автору поста обратится не могу.Он последний раз был на форуме пол года назад.
Буду разбираться.

Ответить

Вернуться в «Помогите, а то я "нимагу"»