Из бинарных переделать в обычные часы. Бинарные часы на ATMega32. Простые бинарные часы

Эти наручные электронные часы показывают время в двоичной системе, поскольку для этого требуется меньше светодиодов для отображения времени, чем у обычных цифроиндикаторных часов, да и оригинальность будет на уровне. Распространённый кварц 32С417 на 32.786 кГц был использован, чтобы PIC16F527 запустить в режиме низкой мощности и помочь повысить точность хронометража. Для ношения на запястье руки использовался подходящий матерчатый ремень.

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

Увеличить изображение можно сохранив его на компьютере. Проектировка схемы тут на базе типовой двухслойной печатной платы.

А стандартный 20 мм ремешок как раз помещается внутри вырезов.

Алгоритм работы часов

Основной цикл отслеживает, в каком режиме работают часы в настоящее время. Первое состояние - в нерабочем виде, где часы опрашивает коммутатор и ждет ввода пользователя. После того, как кнопка нажата, система движется ко второму состоянию, которое вычисляет, как долго часы будут отображаться. Затем идёт переход на состояние три, которое делает большую часть работы по разветвлению исходя из того, что пользователь в данный момент делает. Часы включают светодиоды в таком состоянии. Если пользователь удержал кнопку в течение более 3 секунд - часы переходят в состояние четыре. Это состояние коррекции времени. Чем дольше кнопка нажата, тем быстрее время меняется.

Часы есть практически у каждого, и являются одной из тех вещей, без которой не обойтись ни одному современному человеку. Конечно, есть те, кто предпочитает смотреть на часы в телефоне, или же на системное время компьютера, но без наручных часов каждый чувствует дискомфорт, всякий раз по привычке глядя на руку. Кажется порой, что уже ничего не придумают, что ещё такого можно вытворить с часами для того, чтобы сделать их оригинальными и по-настоящему необычными. Одним из удачных решений на этом пути, несомненно, являются , на циферблатах которых изображены забавные картинки, а время можно определять лишь приблизительно – тут работают интуиция и эмоциональная сторона. Но ещё, хотелось бы, чтобы часы давали пищу и для ума. Возможно ли это? Оказывается, более, чем возможно! Как раз для тех, кто хочет найти в часах ежедневную тренировку для ума, или просто удивлять окружающих своими нестандартными часами, создаются так называемые бинарные часы .

Что это такое? По сути, бинарные часы – это такие часы, где кардинально изменён способ представления информации – не привычными нам цифрами, а в двоичном коде. Хотя, конечно, немало бинарных часов и с цифрами, но отображается время совсем не так, как в обычных часах. В бинарных для индикации времени применяют светодиоды, потому их ещё называют диодными часами . Время на таких часах поначалу определять непросто – либо колонки цифр, либо вовсе просто светящиеся точки, расположенные в странном порядке на циферблате. Однако, освоившись, можно легко читать время по этим часам. А вот непосвящённые этого сделать не смогут! В этом есть определённое удовольствие – обладать стильными часами и в чём-то уникальными знаниями.

Вот, например, одни из самых простых для понимания, и вместе с тем, на редкость стильных бинарных часов.

Black Rock

Где купить: inter-time.ru
Цена: 1850 рублей

На первый взгляд, их циферблат наводит на ассоциации с фильмом “Матрица”, однако, это лишь первое впечатление. Четыре вертикальных колонки цифр от 0 до 9 отображают: две левые – часы, а пара правых – минуты. Таким образом, время читается справа налево. На фото, как нетрудно определить, часы показывают 5:27. Дополнительные значки вверху отражают всю остальную информацию: солнце соответствует отображению дня недели и даты, а доллар означает, что на дисплее показывается год. Бокал служит индикатором наступления второй половины дня. Для того, чтобы увидеть время, просто нажимается кнопка. Это позволяет экономить энергию батарейки.

А в этих бинарных часах цифр нет – необходимо считать светящиеся точки в столбцах самостоятельно.

Fashion Star

Где купить: inter-time.ru
Цена: 1600 рублей

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

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

Futurama

Где купить: inter-time.ru
Цена: 1700 рублей

Индикаторы могут располагаться на циферблате как угодно. Например – дугами. Эффектно и удобно.

Flash Metal

Где купить: inter-time.ru
Цена: 1600 рублей

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

Mickey Stile

Где купить: inter-time.ru
Цена: 1200 рублей

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

Delta V2

Где купить: leddirect.ru
Цена: 1700 рублей

Кстати, в этом магазине есть немало очень интересных бинарных часов, которые способны понравиться самым взыскательным ценителям бинарного времени.

Ну а тем, кто достиг истинного мастерства в определении времени по бинарным часам, будут особо интересны часы

Где купить: inter-time.ru
Цена: 1550 рублей

Для “непосвящённых” будет очень непросто понять, сколько всё-таки времени показывают такие часы. Для этого есть отличная и наглядная расшифровка

Определять время по ним, зная этот простой принцип, совсем не сложно.

И особо эффектно смотрятся часы c зеркальной поверхностью дисплея, под которой находится сетка с 27 диодами.

Где купить: inter-time.ru
Цена: 1400 рублей

Часы отсчитываются по вертикальным линиям, минуты по горизонтальным.

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

Идея использования двоичной системы для представления времени появилась с возникновением вычислительных машин на электронных . Отдельные экземпляры самодельных бинарных часов часто создавались любителями электроники. Однако бинарные часы редко использовались ввиду отсутствия заводского производства и большого веса.

В 2008 году британская компания Anelace впервые выпустила бинарные наручные часы с LED экраном. Это событие нашло бурный отклик среди молодежи. Сегодня бинарные часы выпускают не только производители компьютерной техники, но и ювелирные фабрики.

Как выбрать

Существуют модели бинарных часов с разным количеством «циферблатов». На некоторых можно заменять диодную подсветку. Бинарные часы можно разделить на две большие категории: с подсветкой группы и ключевым горящим индикатором. В первом вам предстоит суммировать степени двоек, во втором - переводить двоичное число в десятичное. Первый способ предпочтительнее для людей, желающих привлечь внимание, второй - программистам и людям, желающим как можно скорее узнавать время. В целях простоты использования вы можете купить бинарные часы с подписанными диодами (1, 2, 4, 8 и т.д.).

Где купить

В интернет-магазинах имеется множество выгодных приложений по покупке бинарных часов. На специализированных сервисах торговли можно подобрать эксклюзивные модели из разных материалов. Торговый сервис eBay - это самая оживленная площадка электронной коммерции в мире. На сайте eBay, в разделе «Аксессуары» представлены тысячи вариантов бинарных часов. Для их оплаты потребуется электронная валюта PayPal.

Как пользоваться

Для использования бинарных часов в быту необходимо быстро переводить числа и складывать их друг с другом. Прочитайте инструкцию к своим часам, уточните, какой ряд диодов отвечает за часы, какой - за минуту. Если инструкции нет, попробуйте определить это экспериментально - показания минутной шкалы будут изменяться скорее, чем часовой. Общее время складывается из показаний часовой и минутной шкалы. Допустим, на часовой шкале горит первый и пятый диод, а на минутной - третий и четвертый. Это , что на часовой шкале отображается 2 в нулевой степени и 2 в четвертой, то есть 1 + 16 = 17 часов. Сумма минут: 2 в квадрате плюс 2 в кубе: 12 минут. Таким образом, бинарные часы показывают 17:12.

Достоинства бинарных часов

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

Они привлекают внимание, многие люди будут восторгаться вашими «арифметическими способностями». Кроме того, бинарные часы представляют дизайн, несут технологичный «стиль будущего». Настенные (настольные) бинарные часы способны стать частью вашего интерьера.

Оценка 1 Оценка 2 Оценка 3 Оценка 4 Оценка 5

Идея

Началось все с того что захотелось сделать какое-нибудь полностью законченное устройство на микроконтроллере AVR. Выбор пал на бинарные часы, т.к. они просты в изготовлении и достаточно эффектно смотрятся. А еще потому что мне всегда нравился плазмоид бинарных часов из KDE который выглядит вот так:

Что такое бинарные часы?

Для тех кто не знает что такое бинарные часы и как по ним определить время, сделаю небольшое отступление. Бинарные часы это просто часы которые показывают время в двоичной (или бинарной) системе счисления, вместо привычной нам десятичной.

Бинарные часы бывают разные (как в общем-то и обычные часы) - с разным количеством и расположением индикаторов, с секундами или без, с 24-х или 12-и часовым форматом времени и т.д. Я решил остановиться на варианте максимально похожем на вышеупомянутый плазмоид из KDE:

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

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

Проще всего понять какое время показывают часы анализируя "циферблат" слева на право, снизу вверх. Запишем значение двоичного числа представленного самым левым столбцом часов изображенных на картинке выше (условившись что горящий индикатор обозначает единицу, а потухший - ноль): 0010 в двоичной системе счисления это 2 - в десятичной. Аналогичным образом запишем значение второго столбца: 0001 в двоичной системе счисления (как и в десятичной), или просто единица. То есть на часах 21 час. Точно так же можно прочитать что часы показывают 35 минут и 28 секунд. Немного практики и читать время с бинарных часов будет получаться почти так же быстро как и с обычных.

Реализация

Итак, с идеей понятно, приступим к реализации.

Начнем с индикатора ("циферблата") - который представляет собой решетку из светодиодов.
Поскольку в часах 4 горизонтальных и 6 вертикальных рядов, общее количество необходимых светодиодов - 6 * 4 = 24. На самом деле, можно обойтись меньшим количеством светодиодов, т.к. не все разряды будут задействованы - например старшая цифра часов (самый левый столбец), может показывать число не больше двух (при двадцати часовом формате времени), а значит можно сэкономить целых два светодиода. Но я этого делать не стал и поставил все 24 светодиода, т.к. хотел (в будущем) использовать эти часы для показа простых текстовых сообщений.

Для настройки времени потребуются кнопки. Их три: первая кнопка переводит часы в режим установки времени и обратно. Вторая кнопка, выбор разряда, переключает столбец в котором в текущий момент настраивается время. И наконец третья увеличивает время в выбранном столбце на единицу.

В качестве микроконтроллера используется ATMega32. Конечно не обязательно использовать такой мощный микроконтроллер для такой простой задачи, но он уже был у меня под рукой, поэтому я использовал его.

Схема и печатная плата

Схема достаточно стандартная: микроконтроллер, питание, сброс, разъем для подключения программатора. К TOSC1 и TOSC2 подключен часовой кварц от которого будут тикать часы. Кнопки настройки времени подтянуты к напряжению питания. Десять выходов на светодиоды (6 столбцов+ 4 строки). На каждую горизонтальную строку подключен резистор для ограничения тока через светодиод.

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

Корпус

Наверное, это самая неинтересная часть. Но, в то же время, именно она заняла большую часть времени.

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

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

К передней части часов приклеено двустороннее матовое стекло. Заднюю часть закрывает крышка на шурупах, из которой торчат кнопки настройки времени.

Программная часть

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

Весь код описывать не буду, т.к. он достаточно подробно откомментирован. Опишу только ключевые моменты.

Развертка производится по столбцам, то есть сначала некоторое время горят светодиоды только первого столбца, затем второго и т.д. Происходит это очень быстро и глаз не успевает этого заметить, поэтому создается впечатление что все зажженные светодиоды горят одновременно. Для отображения значения времени в столбце используется макрос DISPLAY_COLUMN . Переключение столбцов осуществляется по таймеру Timer0.

Смена времени происходит раз в секунду по прерыванию переполнения таймера Timer/Counter2. Поскольку частота кварца равна 32768Гц, а предделитель таймера установлен на 128, то переполнение однобайтового таймера будет происходить раз в секунду (32768 / (128 * 256) = 1) , что очень удобно.

Обработка нажатий на кнопки происходит в процедурах button_stop_pressed для кнопки перевода часов в режим настройки и обратно, button_set_pressed для кнопки установки времени и button_switch_pressed для кнопки переключения столбца. Обратите внимание, что в процедуре button_stop_pressed текущее время сохраняется в EEPROM. Это сделано для того что бы время не сбрасывалось если нужно, например, переключить часы в другую розетку (при включении часов время считывается из EEPROM).

Class="eliadunit">

Вся основная "работа", такая как - опрос состояние кнопок, переключения активного столбца развертки и вывод времени происходит в main. Начальная инициализация выполняется в reset.

Результат

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

И разные радиодетали для ознакомления с микроконтроллерами автор решил сделать что-то интересное и одновременно полезное. Имея в запасе большое количество светодиодов, пришла идея создать бинарные часы.

Со стороны электроники бинарные часы не являются особо сложными, но автор усложнил задачу и решил не экономить кнопки и светодиоды. Изначально в проекте должно было использоваться 22 светодиода, 6 кнопок, и одна пищалка. Также была идея собирать часы на Arduino Mega из-за большего количество пинов, но спасением оказались сдвиговые регистры 74HC595.

Материалы:
- Arduino Uno
- 2 полноразмерные макетные платы
- Светодиоды красные 7 шт
- Светодиоды зелёные 7 шт
- Светодиоды синие 6 шт
- Светодиоды жёлтые и белые по 2 шт
- Резисторы 220 ом 25 шт
- Пьезопищалка 1 шт
- Тактовые кнопки 6 шт
- Сдвиговые регистры выходные 74HC595 в корпусе DIP-16 3 шт
- Соединительные провода 90 шт
- Модуль часов реального времени на базе RTC-чипа DS1307

Как всё будет работать.
Существует около 10 видов бинарных часов. Одни показывают время в двоично-десятичном (BCD) формате, другие в виде двоичных чисел. Так как автору не особо нравятся BCD-часы, он решил сделать свои чисто двоичными. Некоторым их сложнее читать, но разница в них невелика, потому что переводить числа из двоичных в десятичные несложно. Также обязательным условием создателя часов являлась индикация секунд на часах.

Вдобавок часы имеют 6 кнопок:
Set - отвечает за режим настройки часов/будильника и сохранение параметра в режиме настройки.
Mode - отвечает за переключение между режимами часов, будильника и таймера.
Up - в настройке часов/будильника/таймера, повышает параметр на один. В будильнике и таймере отвечает за активирование и выключение выбранного режима. При срабатывании сигнала - отключит сигнал будильника/таймера.
Down - в настройке часов/будильника/таймера, уменьшит параметр на один. В таймере приостановит его без сброса отсчёта. При срабатывании сигнала будильника - перенесёт сигнал на 5 минут.
24/12 - изменение формата времени.
Dim - отвечает за включение и отключение светодиодов (когда светодиоды отключены остальные кнопки перестают работать).
Схема положения светодиодов:

Подключение компонентов
Все светодиоды автор будет подключать последовательно и с резистором. Резистор припаивается к одному из выводов светодиоды, не имеет значения к какому. Подключение светодиодов будем происходить через сдвиговые регистры, этот чип имеет 16 контактов. Такое количество контактов позволяет использовать большое количество выводов, занимая на Arduino всего 3 пина.


Распиновка сдвигового регистра 74HC595:
Q0-Q7 - это выводы регистра, к которым будут подключать светодиоды.
Vcc - пин питания на него подадут 5В.
GND - земля соединяемая с GND на Ардуино.
OE - пин отвечает за инвертированную активацию выводов, но использоваться он не будет, его просто замыкают на землю.
MR - инвертированная очистка регистра, управлять им не нужно, поэтому подключатся будет к питанию 5В.
ST_CP - пин отвечает за обновление состояния регистра. При записи состояния на него нужно подать LOW, после записи - HIGH, для обновления состояния выводов. Его нужно подключат к пину на Arduino. Соединить этот пин трёх регистрах можно параллельно.
SH_CP - пин, отвечает за сдвиг на 1 бит регистра. Его нужно подключат к пину на Arduino. Соединяются на микросхемах также параллельно.
DS - на этот пин подаются данные, он подключается к пину на Arduino.
Q7" - этот пин используется для каскадного соединения с остальными регистрами 74HC595.

Схема подключения:

Пьезопищалка будет подключена к третьему пину Arduino последовательно с резистором. Перед включением пищалки в схему автор посмотрел какие пины поддерживают ШИМ, так как для неё это обязательно. На Arduino Uno ШИМ поддерживают 3, 5, 6, 9, 10 и 11 пины.

В подключении кнопок используются резисторы, встроенные в Arduino, при этом одна сторона кнопок подключается к земле, а другая к пинам Arduino.

Так, выглядит итоговая конструкция:

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

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

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

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

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

Изучив эту проблему, было выяснено что оригинальная Arduino Uno использует керамический резонатор, а ему не хватает точности для измерения времени в длительных сроках. Наиболее рациональным решением была покупка часов реального времени, плюс из-за этого модуля время на часах не будет сбиваться при отключении. Автором был приобретен модуль Grove RTC от Seeed Studio. Он представляет из себя готовую плату с чипом часов. Пины модуля SDA и SCL автор подключил к Arduino на пины A4 и A5, GND к земле. Так как питание 5В занято платой часов подключать модуль было некуда. Автор решил запитать модуль от одного из цифровых пинов, который будет находиться постоянно под напряжением. Также автору потребовалось дорабатывать исходный код и добавить библиотеку часов реального времени.

Сборка часов
Завершив долгую работу над кодом, пришло время придать устройству завершённый внешний вид, и перенести его с макетной платы на печатную. В первую очередь потребовалось сделать разводку для платы. Для этого была использована Fritzing, так как автор уже имел представление о внешнем виде часов, и у него была построена схема устройства. Трассировку платы автор также провёл вручную, на это потребовалось немало времени.
Проект для производства печатной платы:

Производство печатной платы было заказано в Китае. Seeed Studio имеет сервис по производству плат Fusion PCB. Через Fritzing был произведён экспорт файла в формат Extended Gerber, с ним работают многие производители плат. Через две недели автор получил долгожданную плату на почте.

Оставалось только припаять уже немного запылённые детали на плату. Готовый результат после пайки выглядел намного лучше макета на Breadboard.

Автор проекта долго трудился и получил то что хотел - уникальные бинарные часы с таймером и будильником. Используя батарейный отсек часы можно поместить куда угодно. Arduino оправдала ожидания и полностью справилась с поставленной задачей.



Закрытие ИП