На новогодних праздниках, а точнее с 01/01 по 01/04 решил собрать часы на плате STM32F4Discovery. Вот что из этого получилось:
Дисплей взял от старого Siemens M55, разрешения экрана 101х80 и числа цветов 4096, вполне хватает для текущей задачи. Условно разделив ПО на несколько частей, получил возможность гибко добавлять как новые режимы так и пункты меню. В текущей версии нет дополнительного функционала, кроме собственно самих часов и их настройки (время, дата).
Вот общий вид устройства в текущем его состоянии (режим отображения текущего времени):
Разделение происходит по экранам (screen). Каждый экран содержит инициализацию, деинициализацию, а также обработчик событий (в текущей версии реализована обработка нажатий клавиш). Иерархия элементов собрана в виде дерева, что позволяет обновлять как всё дерево (при инициализации интерфейса), так и отдельные его части (при перерисовке значений).
Вот вид экрана режима отображения текущего времени:
Обновление элементов происходит по мере изменения значений - обновляется отображение тех блоков которые отображают изменившееся значение даты/времени. Например, как видно из снимка происходит обновление секунд.
Также доступно меню настройки (выбрана настройка времени):
Меню состоит из обновляемых сегментов каждый из которых перерисовывается при изменении положения курсора (выбрана настройка даты):
При настройке времени/даты, происходит отображение последнего значения с возможностью поразрядного изменения каждого блока значений. Выделенный разряд отображается инверсировано:
После нажатия клавиши настройки происходит сохранение изменённого значения времени/даты и переход на экран меню.
Исходный код этого проекта доступен на Github.
На этом всё.
Комментариев нет:
Отправить комментарий