Страница 1 из 1
Дни недели.
Добавлено: 17 апр 2019, 19:42
hatul
Решил в свои часики добавить показ дней недели.Реализовать решил через сдвиговый регистр 74НС595.Схема такова:7 светодиодов подключаем к модулю часов через сдвиговый регистр. Каждый день загорается свой светодиод.Вроде ничего сложного,но довести до ума не получается.Пробовал два варианта. Первый вариант: просто подключил к часам сдвиговый регистр. Неделю работало нормально,а с субботы на воскресенье все светодиоды погасли. Начал разбираться.В FLProg зашел в настройки часов,а там стоит вместо воскресенья суббота.Пробую другие дни,просто устанавливаю время 23ч.58мин.,жду пару минут,все работает,день переключается.Доходит до субботы,конец,дальше день не переключается.Хотя время идет нормально.[spoiler]
Screen9.jpg
[/spoiler]
Попробовал второй вариант.Подключил счетчик.Здесь неважно какой день установлен в часах,после загрузки скетча загорается понедельник.
[spoiler]
Screen8.jpg
[/spoiler]
Подскажите,где собака зарылась!
Pr_1.flp
Pr_2.flp
Дни недели.
Добавлено: 18 апр 2019, 07:42
Goosr
А он дни недели не с 0 ли считает?

Дни недели.
Добавлено: 18 апр 2019, 08:50
mgr
Считает от 1 до 7. 1 - воскресенье..7- суббота
Дни недели.
Добавлено: 18 апр 2019, 09:35
Sancho
[ref]mgr[/ref],
Вот что говорит код

[spoiler]
Код: Выделить всё
//Плата: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("");
[/spoiler]
Обратите внимание на цифры case и вызов функции в строке 3

Дни недели.
Добавлено: 18 апр 2019, 11:43
mgr
[ref=#ff8000]Sancho[/ref], я сегодня код посмотреть не смогу к сожалению, но на выходе "Dow" (Byte) - 1 будет в воскресение.
Сегодня четверг - у меня на выходе пятёрка.
А вы наверное про стринговую говорите?
Дни недели.
Добавлено: 18 апр 2019, 11:59
Sancho
mgr писал(а): 18 апр 2019, 11:43
Сегодня четверг - у меня на выходе пятёрка.
А вы наверное про стринговую говорите?
Странно - у меня сегодня, в четверг, 4

[spoiler]
2019-04-18 09-07-32.JPG
[/spoiler]
[ref]hatul[/ref], или перед селектором прибавьте единицу, или добавьте ещё один выход Q7 и Q0 освободите.
Дни недели.
Добавлено: 18 апр 2019, 12:58
mgr
[ref=#ff8000]Sancho[/ref], Я сегодня всё равно не смогу посмотреть ничего. А вы можете проверить такое, у меня 3231 синхронизируются по NTP (и день в том числе) встроенному в flprog, может быть из за этого у меня так?
Ну по крайней мере не с 0-я начинается, как сделано у hatul, с чего пост то начался.
Дни недели.
Добавлено: 18 апр 2019, 12:59
mgr
у него отсчёт с нуля наверное поэтому и пропадают показания?!
Дни недели.
Добавлено: 18 апр 2019, 18:47
hatul
Спасибо всем кто откликнулся.Приношу свои извинения,что долго не отвечал. Дело в том,что моя работа никаким образом не связана с компьютером,поэтому проверить советы,и отвечать я могу только вечером.
Goosr писал(а): 18 апр 2019, 07:42
А он дни недели не с 0 ли считает?
mgr писал(а): 18 апр 2019, 12:59
у него отсчёт с нуля наверное поэтому и пропадают показания?!
Да,с Q0. А как иначе? Если Q0 не подцеплен к сдв.регистру,то просто один день не горит.
Sancho писал(а): 18 апр 2019, 11:59
или перед селектором прибавьте единицу
Не совсем понял.Если Вы имели в виду так
Screen9.jpg
Просто дни стали показывать на день больше,но один день все равно не горит.
Sancho писал(а): 18 апр 2019, 11:59
или добавьте ещё один выход Q7 и Q0 освободите.
Так?
Screen8.jpg
Тоже самое.Первый день не горит.
Дни недели.
Добавлено: 18 апр 2019, 19:02
Sancho
[ref]hatul[/ref], У Вас дисплей есть, типа 1602?
Если да - загрузите проект из поста выше.
Насчёт прибавить 1 - ошибся, нужно в Вашем случае отнять.
Но для начала проект попробуйте

Дни недели.
Добавлено: 18 апр 2019, 19:47
hatul
Sancho писал(а): 18 апр 2019, 19:02
У Вас дисплей есть
Нет. Да и дело то я думаю не в дисплее. Вот нашел пост с похожей проблемой [scroll]при установке часов через соответствующее меню, воскресенье записывается как нулевой день недели, а при компиляции рабочего проекта - как седьмой. При выводе значений строкой параметр "D" не отображает воскресенье. Проблема незначительная, можно подправлять значение case sun на нуль. Заметил в последней версии, в 2.5 работало без проблем. В описании блока версии 3.0.3 воскресенье обозначено седьмым днем, а в 2.5 - нулевым.[/scroll]
К автору поста обратится не могу.Он последний раз был на форуме пол года назад.
Буду разбираться.