Еще одни часы на матрицах

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

Несколько лет назад, в процессе изучения ардуины, собрал на макетке часы (на "стоячих" матрицах). Часы были сделаны, и интерес к ним пропал. Так они и проработали все эти годы на макетке, собирая пыль.

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

Долго думал, стоит ли делиться с общественностью сим "гениальным творением". В общем - "По телевизору показывают жуликов! Ну, чем я хуже?!" (с). Доделал то, что оставалось недоделанным и вот, что в итоге получилось, и что часы умеют:

  1. Само собой, показывать текущее время с вертикальной прокруткой цифр при смене времени.
  2. Выводить бегущей строкой дату.
  3. В последние дни года выводить обратный отсчет до Нового года.
  4. 1 января выводить бегущей строкой поздравлялку - "С Новым годом!".
  5. Сохранять в памяти и выводить до 16 пользовательских сообщений (до 44 символов каждое) с настраиваемыми датами (можно назначать несколько сообщений на одну дату и таким образом объединять их, если текст не помещается в одно).
  6. Показывать забортную температуру (с помощью выносного DS18B20, никаких радиомодулей, только хардкор - только провода :) ).
  7. Выводить значения минимальной и максимальной забортной температуры за текущие сутки (с указанием времени).
  8. Показывать температуру и влажность в помещении.
  9. Показывать текущее давление и строить график (с автомасштабом по значению).
  10. Замерять напряжение батарейки на модуле часов и выводить сообщение при его низком значении.
  11. Автоматически подстраивать яркость, в зависимости от внешнего освещения.
  12. 7 будильников (по одному на каждый день недели) с раздельной или одновременной (всех 7 сразу) настройкой.
  13. Встроенное меню настроек - время, дата, будильники.
  14. Настройка по USB или, при подключении соответствующего модуля, по Bluetooth - время, дата, будильники, сообщения. Выводится краткая подсказка по командам.
  15. При первом включении или если по какой-либо причине часы останавливались (например, дохлая батарейка и пропадало питание) часы "попросят" установить время и дату.
  16. При отсутствии какого-либо датчика соответствующая ему информация выводиться не будет. Исключение DS18B20 - если его нет, то вместо температуры будут знаки вопроса.

Часы работают с кодировкой Win-1251, поэтому перед компиляцией необходимо в файле preferences.txt найти параметр preproc.substitute_unicode и установить его в false. Где находится этот файл, можно посмотреть в настройках Arduino IDE.

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

В качестве часового модуля используется DS3231. При желании можно поставить DS1307 (для этого в скетче это надо указать), но его точность хромает, а в часах автоподстройка отсутствует.

Для определения напряжения батарейки используется внутреннее опорное напряжение 1.1В. Но, как показала практика, а также гласит даташит, оно не совсем такое. Например, в моем экземпляре Nano оно было 1.043В. Поэтому для повышения точности замеров его желательно (но не обязательно) измерить мультиметром и подправить в скетче константу Vref. Также необходима небольшая доработка модуля - нужно разорвать цепь заряда, тем более, что при использовании батарейки (а не аккумулятора) она там не к месту.

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

Часы ничем особенным не выделяются и не лишены недостатков, но, может, кто-то (у кого с программированием еще хуже, чем у меня) захочет их повторить.
 

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

Ссылка на скачивание https://drive.google.com/file/d/1u1wEnY6zXO5CkDsKshvwJDCNAcxzFrx8/view?u...
В архиве папка с файлами проекта, папка с используемыми библиотеками и схема.
Компилировал в версии 1.6.5, код занимает почти всю память (около 27 кБ). Пробовал также в 1.0.6 - тоже норма, но код на полтора килобайта больше.
 

bizzon
Offline
Зарегистрирован: 29.03.2016

Здорово! А то матрицы такие же валяются- никак руки не дойдут... Сыпасибо. 

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

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

bizzon
Offline
Зарегистрирован: 29.03.2016

Настройка по USB - это с изменениями в скетче? 

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

bizzon пишет:

Настройка по USB - это с изменениями в скетче? 

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

bizzon
Offline
Зарегистрирован: 29.03.2016

Понял- через монитор порта. Ещё раз спасибо.

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

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

Здесь на всякий случай напишу на русском:

Thhmmss - команда установки времени (hh, mm и ss - часы, минуты и секунды соответственно). Например, команда T094500 установит время на 09:45:00.
DddMMyy - команда установки даты (dd, MM и yy - день, месяц и год). Пример, D050418 соответствует установке даты на 5 апреля 2018 года.
A    - вывести список будильников;
Ax=hhmmz - установка будильника/ов,
x - порядковый номер дня недели: 0 или 7 - воскресенье, 1 - понедельник, 2 - вторник и т.д. Если указать * - то команда сработает на все будильники;
z может быть + или - (вкл и выкл соответственно), можно ничего не указывать - тогда состояние будильника/ов (вкл или выкл) не изменится. Пример, A*=0700+ установит все будильники на время 07:00 и включит их.
Ax+    - включить будильник номер х.
Ax-    - выключить будильник номер х.
M    - вывести список сообщений.
Mn=ddMMtext - записать пользовательское сообщение (n - номер сообщения: 0 - 9 и A - F; dd и MM - день и месяц; text - сам текст, максимальная длина текста 44 символа - лишние отбрасываются). Например, M0=2509С Днем рождения! - 25 сентября будет показываться бегущей строкой сообщение С Днем рождения!
Mn-    - удалить сообщение.
Mn    - показать сообщение бегущей строкой на часах.
Команды можно писать и заглавными, и строчными буквами - разницы нет.
 

yucan
Offline
Зарегистрирован: 20.04.2015

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

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

Не вижу причин, чтобы не работало. Разве что надо что-то придумывать для настройки пользовательских сообщений - они записываются/удаляются через Serial. Т.е., или использовать дополнительный переходник для подключения по USB, или подключать Bluetooth-модуль. А также использовать версию с ATmega328 (в ATmega168 не влезет). Ну и пины можно использовать любые другие (у меня такой выбор обусловлен разводкой платы).

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

Дополнительно опишу управление часами с помощью кнопок. Всего в часах 3 кнопки: "Вверх" (она же "Вправо"), "ОК" и "Вниз" (она же "Влево").

При отображении времени нажатие на любую кнопку, кроме "ОК", принудительно переведет часы в режим отображения дополнительной информации (при обычной работе дополнительная информация вызывается через 30 сек отображения времени, этот интервал можно настроить в скетче).
Кнопка "ОК" вызывает меню с настройками: - время, дата, будильники, связь с компьютером. Выбор нужного пункта осуществляется кнопками "Вправо" и "Влево". Активный пункт указывается мерцанием соответствующей пиктограммы. Подтверждение выбора - кнопка "ОК". Чтобы выйти из меню необходимо несколько раз нажать "Вправо" или "Влево" (чтобы выйти за его границы).
Настройка времени  и даты . Мигающий курсор указывает на изменяемое значение. Кнопки "Вверх" и "Вниз" меняют его, а "ОК" подтверждает ввод и осуществляет переход к следующему значению. Кнопки "Вверх" и "Вниз" можно удерживать для быстрой смены цифр.
При настройке будильников сначала выбирается день недели (точка в первом столбце): самая верхняя позиция соответствует понедельнику, нижняя - воскресенье, горят все семь точек - одновременная настройка всех будильников. Потом можно переключать состояние будильника/ов: включить (+) или выключить (х). И в самом конце - время срабатывания. Управление такое же как и при настройке времени и даты: кнопками "Вверх" и "Вниз" производятся изменения, а "ОК" - подтверждение ввода и переход дальше. Мигающий курсор указывает на меняемое значение.
Последний пункт меню - связь с компьютером . Перед этим надо подключить часы к компьютеру и запустить монитор порта. При включении этого пункта меню в мониторе отобразиться краткая справка по командам и можно работать. Выход - любая кнопка (на часах).

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

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

хорошая работа.

yucan
Offline
Зарегистрирован: 20.04.2015

vk007 пишет:

Т.е., или использовать дополнительный переходник для подключения по USB, или подключать Bluetooth-модуль. А также использовать версию с ATmega328 (в ATmega168 не влезет). Ну и пины можно использовать любые другие (у меня такой выбор обусловлен разводкой платы).

Да, про переходник понятно. Код откомпилировался и занял 90% памяти, поэтому конечно ATmega328.

Radon
Offline
Зарегистрирован: 19.02.2018

Спасибо за часики. А где уменьшить скорость бегущей строки?

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

Интересный вопрос :) Я как-то над этим не заморачивался. Там специальных задержек никаких нет, скроллинг "тормозится" естественным путем - скоростью передачи информации на матрицы. Мне казалось, что на одинаковом оборудовании, с одинаковой тактовой частотой, оно должно работать с одинаковой "плюс минус лапоть" скоростью.

Можно в функции Show() в конце дописать нужную небольшую задержку - delay(...); Тогда и горизонтальный и вертикальный скроллинги будут двигаться медленный.
Если надо только для бегущих строк, т.е. горизонтального скроллинга, то задержку следует добавить в конец функции ScrollScreenBufferOneLeft().

А что, реально очень быстро? Или вы просто для себя хотите немного скорректировать скорость?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Отличная работа!!!

Radon
Offline
Зарегистрирован: 19.02.2018

vk007 пишет:

Можно в функции Show() в конце дописать нужную небольшую задержку - delay(...); Тогда и горизонтальный и вертикальный скроллинги будут двигаться медленный.
Если надо только для бегущих строк, т.е. горизонтального скроллинга, то задержку следует добавить в конец функции ScrollScreenBufferOneLeft().

А что, реально очень быстро? Или вы просто для себя хотите немного скорректировать скорость?

 Да вот увидел Ваши часики - красиво, фукционально! По быстрому на проводках собрал, но у меня дисплейчик из 4 вместе собранных матриц. На них информация повернута на 90 градусов и пробегает на всех 4 матрицах. Ломать (разделять) их не хочется. Заказал отдельные матрицы, но пока дойдут, тестирую на отдельном одном матричном модуле. Так вот текст бежит ну очень быстро ( кстати так же быстро и на 4 матричном дисплее) даже не успеваю прочитать. С задержкой попробую попозже. Если бы можно было б развернуть текст по быстрому (для вместе собранного на 4 модулях дисплея) - вообще было бы класс! Но глянул код -  мне не по силам самому :-(  И если часики у Вас пока не в корпусе - не покажите ли на какой они у Вас платке обосновались?

ShAlex13
Offline
Зарегистрирован: 19.01.2018

vk007, классные часики!

А нельзя вместо BMP180 и SHT21 применить один датчик BME280? (температура, влажность, давление) 3 в 1. Вот тех. данные:

 

  • Напряжение питания: 1.8-5 В DC
  • Интерфейс: I2C (до 3.4 мГц), SPI (до 10 мГц)
  • Рабочий диапазон:
  • Температура: от-40 до + 85°c
  • Влажность: от 0-100%
  • Давление: 300-1100 ппа
  • Разрешение:
  • Температура: 0.01 ° С
  • Влажность: 0.008%
  • Давление: 0.18 pa
  • Точность:
  • Температура: +-1°c
  • Влажность: +-3%
  • Давление: +-1 Па
vk007
Offline
Зарегистрирован: 16.06.2015

ShAlex13 пишет:

А нельзя вместо BMP180 и SHT21 применить один датчик BME280? (температура, влажность, давление) 3 в 1.

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

ShAlex13
Offline
Зарегистрирован: 19.01.2018

Видимо скетч без переделки под такой модуль не подойдет? 

https://ru.aliexpress.com/item/MAX7219-dot-matrix-module-microcontroller-module-4-in-one-display/32689479860.html?spm=a2g0s.9042311.0.0.0uFARX

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

Radon пишет:

Если бы можно было б развернуть текст по быстрому (для вместе собранного на 4 модулях дисплея) - вообще было бы класс! И если часики у Вас пока не в корпусе - не покажите ли на какой они у Вас платке обосновались?

Развернуть, к сожалению так просто не получится. Вы, конечно, можете попробовать в скетче все setRow поменять на setColumn, но, во-первых, setColumn передает данные ощутимо медленнее и тормоза бегущей строки будет очень заметны. А, во-вторых, если я правильно понимаю как соединены эти матрицы в одну, то изображение надо будет еще и отзеркалить, а это уже надо копать код.

В то время, когда я делал эти часы, "4 матрицы на одной плате" были еще мало распространены на али и стоили существенно дороже. Ну и одна матрицы у меня до этого уже была для экспериментов. Докупил еще 3, плюс бонусом получил еще и провода с разъемами, что шли в комплекте к каждой.

Что касается платы, то она самодельная, двусторонная, сделанная лутом. Хоть и получилась компактной (чуть больше матриц, около 135х55 мм), но не лишена некоторых недостатков.

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

ShAlex13 пишет:

Видимо скетч без переделки под такой модуль не подойдет? 

https://ru.aliexpress.com/item/MAX7219-dot-matrix-module-microcontroller-module-4-in-one-display/32689479860.html?spm=a2g0s.9042311.0.0.0uFARX

К сожалению, нет. Я в предыдущем сообщении написал, почему. Или резать и компоновать их по-другому или использовать отдельные матрицы.

Radon
Offline
Зарегистрирован: 19.02.2018

vk007 пишет:

Можно в функции Show() в конце дописать нужную небольшую задержку - delay(...); Тогда и горизонтальный и вертикальный скроллинги будут двигаться медленный.
Если надо только для бегущих строк, т.е. горизонтального скроллинга, то задержку следует добавить в конец функции ScrollScreenBufferOneLeft().

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

Платка нормальная уже тем, что всё культурненько без проводов ;)

an
Offline
Зарегистрирован: 21.02.2018

Отличные часы спасибо автору
Вот правда заметил такую вещь.
Минуты у часов обновляются после второго прохода бегущей строки, выставлял отображение часов 3 минуты, так вот все три минуты часы не обновляются. По скетчи вроде всё нормально так не нашёл причину может это у меня одного или не обращал никто внимания. Подключён только один датчик температуры ds18b20.

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

an пишет:
заметил такую вещь. Минуты у часов обновляются после второго прохода бегущей строки, выставлял отображение часов 3 минуты, так вот все три минуты часы не обновляются. По скетчи вроде всё нормально так не нашёл причину может это у меня одного или не обращал никто внимания. Подключён только один датчик температуры ds18b20.

Странно, но я такого не замечал. Там время должно проверяться из RTC в начале каждого общего цикла отобажения информации и потом каждые 2 секунды (для показометра считаю этого достаточно), пока на экране выводится время. Я не исключаю ошибок, код писался давно. Надо будет проверить.

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

Проверил. Да, действительно, иногда такое могло происходить. Код исправил, ссылка та же, можете проверять, как работает. an, спасибо за тестирование!

an
Offline
Зарегистрирован: 21.02.2018

Спасибо большое vk007 проверил все работает отлично.
Отличные часы

yucan
Offline
Зарегистрирован: 20.04.2015

Здравствуйте! Хочу спросить - каким редактором можно воспользоваться для корректировки шрифта?

yucan
Offline
Зарегистрирован: 20.04.2015

Попробовал matrixclockeditor-ом.

Хочу под себя подправить некоторые символы.

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

Я, в основном, использовал GLCD Font Creator.

bizzon
Offline
Зарегистрирован: 29.03.2016

Собрал, всё работает,спасибо. Вот только с кириллицей проблема. В преференцах строку исправил. ЧЯНТД ? fonts.h надо куда-то положить? Датчики температуры не подключал. Уже голова не варит, пойду спать.

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

Если видны хотя бы цифры, то fonts.h лежит там, где надо (в одной папке с основным скетчем).

Что касается кириллицы, то может не тот preferences.txt или не так правили? Проще всего сделать так: открыть Arduino IDE, зайти в "файл - настройки", где-то внизу будет строка-ссылка к файлу preferences.txt, нажав на нее откроется папка с этим файлом, после этого надо обязательно закрыть Arduino IDE, и только после этого можно открывать и править preferences.txt. Также стоит проверить, может там preproc.substitute_unicode прописан дважды (а вдруг, кто его знает)? Больше предположений у меня пока нет.

Датчики подключать не обязательно и их наличие/отсутствие не связано с выводом кириллицы. Я уже писал, что при отсутствии какого-либо датчика соответствующая ему информация просто не будет выводиться. Как исключение DS18B20 (отвечающий за температуру на улице) - если он не будет подключен, то картинка появится, но вместо цифр температуры будут знаки вопроса.

bizzon
Offline
Зарегистрирован: 29.03.2016

Спасибо, вечерком попробую ещё разок.

an
Offline
Зарегистрирован: 21.02.2018

На счёт кириллицы, пробовал Arduino Ide последнюю текст не корректно отражается как бы в настройках не выставлял. Нашёл версию 1.6 как написано выше и все проблемы решились.

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

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

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

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

bizzon
Offline
Зарегистрирован: 29.03.2016

Действительно,скачал 1.6.0 - кириллица заработала. До зтого была 1.6.8 и пробовал самую свежую с сайта ардуины.

Radon
Offline
Зарегистрирован: 19.02.2018

vk007 пишет:

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

Пришли мне матрицы одиночные, залил этот скетч (не помню вроде на старом так не было (скетч не сохранился)) - время, дата и остальные параметры перелистываются. Но само время отображается буквально 2 секунды. Перелистнулись цифры и снова дата и т.д. Вопрос к уважаемому автору как сделать чтобы время отображалось хотя бы минуту. (затем остальное). Пробовал менять в начале скетча переменную define TIME_SHOW_MSEC       30000UL    // продолжительность отображения времени (30 сек). Результата нет. А мельтешение раздражает. Термометр, барометр ,кнопки - не подключены. 

bizzon
Offline
Зарегистрирован: 29.03.2016

Кнопки к плюсу подтяни ( или сделай для пинов на кнопки INPUT_PULLUP).

Radon
Offline
Зарегистрирован: 19.02.2018

bizzon пишет:

Кнопки к плюсу подтяни ( или сделай для пинов на кнопки INPUT_PULLUP).

Подтянул через  INPUT_PULLUP кнопки 7,6 и 5 . Результат тот же.  DS18b20,  buzzer тоже подключен.
 

bizzon
Offline
Зарегистрирован: 29.03.2016

Тогда померяй напряжение на этих пинах. Больше 4 вольт? Если нет, ищи коротыш. Программа думает, что нажата какая-то кнопка.

Radon
Offline
Зарегистрирован: 19.02.2018

bizzon пишет:

Тогда померяй напряжение на этих пинах. Больше 4 вольт? Если нет, ищи коротыш. Программа думает, что нажата какая-то кнопка.

Спасибо! Действительно помогла только "железячная" подтяжка. Всё работает,  ну есть маленькие ньансы под мои нужды но пока об этом не стоит ;-)  .

bizzon
Offline
Зарегистрирован: 29.03.2016

Странно. У меня пуллапа хватило, ну да ладно.

Radon
Offline
Зарегистрирован: 19.02.2018

Заметил такую вещь: уровень яркости как бы прыгает каждый цикл показа времени - то есть сначала включается полная яркость, а затем медленно затухает ( в темное время) . Нельзя ли как бы поправить (сравнить если освещение поменялось -> тогда только менять яркость дисплея) или сделать наоборот от меньшей яркости дисплея к большей.

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

С автоподстройкой яркости я особо не заморачивался, поскольку в планах было сделать ее аппаратной - включить фоторезистор в цепь токоограничения для МАХ7219. Даже статью недавно видел, как кто-то так уже делал, но руки так и не дошли.

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

Если не получится, то можно подправить скетч. Сейчас при отображении времени слежение за освещением идет постоянно. Это конечно хорошо, но если наблюдаются глюки, то лучше этим пожертвовать и перенести SetBrightness() из цикла while((millis() - time_previous_millis... в самое начало loop'а. Тогда установка яркости будет происходить один раз перед выводом времени. В этот момент экран пустой и влиять на фоторезистор он не будет.

bizzon
Offline
Зарегистрирован: 29.03.2016

Автор молодец!!! Жена как увидела часики в работе, приравняла меня к лику святых:)) Шучу. Осталось засунуть их в бутылку от вина. Где-то в инете был образец. Ещё раз спасибо.

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

bizzon, делали плату сами или спаяли на макетке?

bizzon
Offline
Зарегистрирован: 29.03.2016

Ну скажем так.. Объёмный монтаж .Бутербродом.

yucan
Offline
Зарегистрирован: 20.04.2015

vk007 пишет:

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

А в каком виде должен выводиться график давления? Подключил сегодня BMP180. За 3 часа давление упало на еденицу. Вот что рисует

Спустя 3 дня график почти заполнен. Получается это барограф)

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

Правильно рисует. Там логика такая - пока история показаний пустая, то рисуется такое себе "многоточие" (чтобы совсем пусто не было). Со временем данные будут накапливаться и график заполнится полностью. Старые данные выводятся слева, данные посвежее - справа. У вас сейчас в память занесено только одно показание, поэтому виден только один столбец справа. Еще через 3 часа (или как вы там себе настроили) в память сохранится новое свежее значение и уже оно будет в самом правом столбце, а то, что сейчас, сдвинется влево, и т.д. Таким образом, примерно через 3 суток у вас уже будет полный график.

bizzon
Offline
Зарегистрирован: 29.03.2016

А я вот думаю не про график (польза от него в мои года ..) А про оформление.

Изменение давления организм сам подскажет, а вот как оформить подарок- ..