Календарь на Arduino.


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

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

Пиксельный макет календаря для Arduino
Примерно так должен выглядеть экран в календарем. С боку и посередине размерная линейка для удобства центровки. На этой картинке два варианта выделения текущего дня. Числа 14 и 24.
Первая мысль была создать модули для быстрого вывода информации в соответствии с днем недели и числом. Ведь в календаре строчки с датами повторяются.

Например:
1, 8, 15, 22, 29
2, 9, 16, 23, 30
...
и т.д. всего семь строк.

Можно нарисовать строку с нужным порядком цифр или нарисовать отдельно цифры и из них создавать нужную комбинацию.

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


Получил следующие данные.
матрица пикселей 5*5=25 байт*7строк=175байт (здесь хранится одна строка, всего их семь)
матрица пикселей 1*5= 5 байт*10строк=50байт (это данные на одну цифру, всего их десять)
Возможно я не правильно посчитал и часть нагрузки уйдет куда-то еще. Пока я оставлю символьный вариант.
Битовые матрицы
Битовые матрицы со строкой из цифр и одной цифры. В строке вмещается гораздо больше символов чем используя отдельные символы. На комментарии можно не обращать внимание, это мысли на полях что-бы не забыть.

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

Вариант выделения числа
Предпалагаемый вариант для выделения текущего числа.

Была еще сложность с размещение 30 и 31 числа. Они появлялись когда первое число попадало на субботу и воскресенье. Автоматом появлялся шестой столбик с цифрами 30 и 31.
У меня экран 48 пикселей. На один символ зарезервирована три пикселя. Всего нужно вместить 11 символов плюс 16 пробелов (один пиксель между символами и два между знаками). Итого прлучается 11*3+16=49. Мне не хватало одного пикселя для правильной отрисовка чисел 30 и 31. Я решил эти числа слепить вместе, и для этого пришлось немного изменить шрифт. Изменил цифры 2, 3, 8, 9, 0.

"Проблемные" цифры и их решение.

Код исправно работает, вся информация отображается. В дальнейшем, этот экран можно использовать как самостоятельный экран для электронных часов.

Рабочее окно Arduino 1.6.13
Так выглядит рабочий процесс написания кода у меня. Такие ошибки появляются только в Arduino 1.6.13 и выше.
Скорей всего, в ближайшее время я буду заниматся изготовление корпуса для часов. Естественно буду делать из подручных материалов, без навыков и знаний. Поэтому заранее готов к результату и готов его принять как есть.

Позже я перенесу каждую функцию на отдельную страницу, а пока все свалено в общую кучу Электронные часы на Arduino. С будильником, таймером и другими плюшками :) Начало.
Ищите все связанны статьи с этим проектом #PIX4884

Готовы меня поддержать?
Перечисли любую сумму на Yandex деньги или PayPal (другие варианты пишите на почту).
Часть денег пойдет на реализацию проекта носимых электронных часов PIX4884 (не смарт) на базе Arduino (ATmega 328), остальное, если останется, пойдет на покупку всякой ерунды для её изучения.
Ниже ссылки на кошельки:
paypal.me/ArduClock 
money.yandex.ru/to/410011319696385

Комментарии

  1. ПРикольно! Долго мучился?

    ОтветитьУдалить
    Ответы

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

      Удалить

Отправить комментарий

Популярные сообщения из этого блога

Ремонт подсветки в электронных часах.

На рюкзаке сломалась пряжка. Вариант ремонта.

Восстановление кнопки шуруповёрта длиною в год.