В данной статье описываются часы на микроконтроллере ATMega48PA со светодиодными индикаторами и множеством функций:
- Автоматическая регулировка яркости в зависимости от освещенности.
- Управление часами с помощью сенсорных кнопок.
- Встроенный секундомер.
- Встроенный таймер.
- Встроенный будильник.
- Индикатор дня года, от 1 до 365.
- Отправка текущего времени по интерфейсу UART каждую минуту.
- Меню настройки времени и даты.
- Переключение между режимами ЧЧ:ММ и ММ:СС.
- Анимация окончания суток, прорисовка нулей при переходе 23:59-00:00.
Часы представляют собой прямоугольный бокс и подставку, сделанные из пластика (поливинилхлорид). Все части корпуса вырезаны ножом и склеены секундным клеем. На передней части корпуса располагается тёмный светофильтр, отсеивающий часть красного света от индикаторов. На подставке располагаются три сенсорных кнопки. Каждая кнопка – это круг небольшого диаметра, вырезанный из медной фольги и приклеенный к основе клеем. На задней стороне располагаются: разъем для подключения адаптера питания и внешних устройств, и звуковое отверстие динамика. Сверху расположен фотоэлемент, реагирующий на изменение освещения. Индикаторами в часах являются семи сегментные светодиодные индикаторы, с типом подключения: общий катод. Всего в часах четыре индикатора, то есть одновременно можно выводить четыре цифры с дополнительными точками внизу. Часы работают от сетевого адаптера с выходным напряжением 5 вольт и минимальной силой тока не менее 150 мА.
При первом включении часы необходимо настроить. Для этого нужно нажать и держать 2 секунды среднюю кнопку (далее СК), часы перейдут в режим настройки. Затем необходимо настроить текущий час левой и правой кнопками (далее ЛК и ПК соответственно) и нажать СК. Так же нужно настроить минуты. Затем таким же образом нужно будет настроить текущий день и нажать СК (далее во всех дополнительных режимах будет использоваться такая же настройка цифр). Часы перейдут в главный режим ЧЧ:ММ (режим 0), то есть на индикаторах отображаются часы и минуты. Однократным нажатием на СК можно перейти в режим ММ:СС (режим 1) и обратно. Если в режиме 0 нажать на ЛК, то часы войдут в режим будильника. После настройки времени сигнала нужно нажать и держать 2 секунды ПК или ЛК. В назначенное время включится тоновый сигнал с частотой около 700 Гц, через 10 секунд сигнал выключится, и будильник автоматически деактивируется. Если в режиме 0 нажать ПК, то часы войдут в режим таймера. По умолчанию, таймер установлен на 5 минут. После настройки времени следует нажать и держать 2 секунды ПК или ЛК и таймер активируется. По истечении времени, так же, как и в случае с будильником, прозвенит тоновый сигнал и отключится через 10 секунд. Если в режиме 1 нажать ПК, то часы перейдут в режим секундомера. Нажатием ЛК секундомер запускается или останавливается, нажатием ПК секундомер сбрасывается. Если в режиме 1 нажать ЛК, то часы перейдут в режим даты, на индикаторах появится текущий день года. Для выхода из этого режима можно нажать любую кнопку. Также, из дополнительных режимов можно перейти в главный режим нажатием СК. Так как все дополнительные режимы являются параллельными, можно установить будильник, поставить таймер и запустить секундомер одновременно.
Яркость индикаторов меняется в зависимости от освещения, днем часы светят ярко, ночью тускло. Всего несколько градаций яркости, которые вычисляются на основе показаний фотодатчика.
В часах присутствует интерфейс UART, с помощью которого каждую минуту на внешние устройства (если таковые имеются) посылается 2 байта: байт часов с выставленным восьмым битом (например, если 15 часов, то байт равен 15+128=143), и байт минут. Восьмой бит при передачи часов используется для того, чтобы внешние устройства могли сразу определить, передается байт часов или байт минут. Можно подключать другие устройства на AVR и получать в них текущее время по UART.
Каждую полночь (при переходе от 23:59 к 00:00) на индикаторах воспроизводится простая анимация в виде поочередной прорисовки нулей, после чего часы продолжают работать в штатном режиме.
Фьюз-биты:
В прикрепленном файле: проект в Proteus, прошивка, исходник, печатная плата в SLayout.