суббота, 4 января 2014 г.

STM32 RTC & LCD - или очередная попытка построить часы.

На новогодних праздниках, а точнее с 01/01 по 01/04 решил собрать часы на плате STM32F4Discovery. Вот что из этого получилось:






Дисплей взял от старого Siemens M55, разрешения экрана 101х80 и числа цветов 4096, вполне хватает для текущей задачи. Условно разделив ПО на несколько частей, получил возможность гибко добавлять как новые режимы так и пункты меню. В текущей версии нет дополнительного функционала, кроме собственно самих часов и их настройки (время, дата).

Вот общий вид устройства в текущем его состоянии (режим отображения текущего времени):


Разделение происходит по экранам (screen). Каждый экран содержит инициализацию, деинициализацию, а также обработчик событий (в текущей версии реализована обработка нажатий клавиш). Иерархия элементов собрана в виде дерева, что позволяет обновлять как всё дерево (при инициализации интерфейса), так и отдельные его части (при перерисовке значений).
Вот вид экрана режима отображения текущего времени:
Обновление элементов происходит по мере изменения значений - обновляется отображение тех блоков которые отображают изменившееся значение даты/времени. Например, как видно из снимка происходит обновление секунд.

Также доступно меню настройки (выбрана настройка времени):


Меню состоит из обновляемых сегментов каждый из которых перерисовывается при изменении положения курсора (выбрана настройка даты):


При настройке времени/даты, происходит отображение последнего значения с возможностью поразрядного изменения каждого блока значений. Выделенный разряд отображается инверсировано:


После нажатия клавиши настройки происходит сохранение изменённого значения времени/даты и переход на экран меню.

Исходный код этого проекта доступен на Github.

На этом всё.

Комментариев нет:

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