что такое бинарные часы? К ним нужна инструкция?…

В наручных бинарных часах вы не найдете ни циферблата, ни привычных стрелок: информация о времени выводится на панель часов с помощью светодиодов (LED технологии) . Кодирование времени отличается в разных моделях, о чем написано в прилагаемых инструкциях.

а нахрена тебе бинарные часы, ты что программист? долго будешь запоминать как цифиры выглядят

Бинарные часы — очень модное в наши дни словосочетание, но немногие знают, что оно действительно означает. Люди измеряют время с давних времен — часы были песочными, водяными, солнечными, механическими и т. д. В наше время часы со стрелками сменились на электронные часы, отображающие время с помощью цифр. Так вот, в бинарных часах изначально вместо привычных нам десятичных цифр использовались двоичные! Да, да! были любители посмотреть время в двоичном коде! Очень долго рассказывать как вообще история подвела к тому, что такое чудо появилось на свет, но не думайте, что бинарные часы были изобретены потехи ради — они создавались в научных целях. Много позже создания первых бинарных часов (точной даты не установлено; бинарные часы придумали 1920х-1940х) в Японии в городе Токио уже немолодой, но очень мудрый профессор медицинского университета работал над проблемой улучшения памяти. Японцы — известные во всем мире долгожители, но в свои преклонные года они становятся забывчивые и рассеянные. Профессор Хивари хотел придумать тренажер для памяти и случайно наткнулся на бинарные часы. Для человека, незнакомого с двоичными кодами, их переводом и всей вытекающей отсюда наукой это было поистине тяжело! Группа его пациентов должна была научиться в жизни пользоваться такими часами. По предположению Хивари, это должно было улучшить их память и внимание. Два месяца занятий не привели к успеху. Как оказалось, это слишком сложно для людей в пожилом возрасте, Хивари не смог даже обучить своих пациентов пользоваться бинарными часами. Тогда он заменил бинарные часы, часами, которые отображали время с помощью палочек, которые нужно было сосчитать, а так же точек — значения которых нужно было складывать. Результаты не заставили себя ждать! уже через три месяца использования в быту таких часов у японских пенсионеров начали улучшаться память и внимание! Чтобы эффект «работы головы» сохранялся, профессор менял часы своим пациентам, как можно чаще. Вот так и получилось, что бинарными часами называются практически любые часы с нестандартным способом индикации времени: они отображают время точками, символами, перевернутыми цифрами, лампочками и проч. Развитие LED технологии (диодной технологии) позволило создать наручные бинарные часы — они могут содержать какое угодно количество диодов.

Бинарные часы — это как правило часы, отображающие время в двоичном формате. Чтобы понятнее было, вот конструкция: <a rel=»nofollow» href=»http://cxem.net/house/1-194.php» target=»_blank» >Бинарные часы </a>

Nullblog: Бинарные часы на AVR

Началось все с того что захотелось сделать какое-нибудь полностью законченное устройство на микроконтроллере 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).

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


Результат

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

Файлы

Исходные коды прошивки, схематика и разведеная плата находятся в этом репозитории на GitLab.

В качестве заключения

В общем, для первого устройства, думаю, получилось весьма неплохо.

Если вы найдете какие-то неточности в этой статье, или по-вашему что-то следует описать более подробно — пожалуйста, пишите в комментариях.

как появились бинарные часы и зачем они нужны

Покупайте бинарные часы :http://www.12-5-9.ru/html_watches/the_one.htm

Бинарные часы — для того, кто готов сполна заплатить за экстравагантность, и не столько купюрами, сколько полнейшей непрактичностью.
В конце концов, часы нужны, чтобы показывать время: с этим согласится обладатель и аристократического турбийона, и пестрого swatch, и набитого электронными примочками G-shock.
Бинарные часы теоретически тоже показывают время, но радикальный двоичный формат стремится превратить владельца в оператора «Матрицы» , умеющего разглядеть в потоке ноликов и единичек целый мир плюс блондинку в красном платье.
Часы снабжены пристойной маркетинговой легендой: подчеркнутый no-name, производство в Японии крошечными тиражами в несколько сотен штук, дизайн каждой серии — авторский и настолько эксклюзивный, что после ее распродажи не повторяется.

К тому же полное отсутствие встроенных функций вроде барометра или mp3−плеера и даже водонепроницаемости. Продаются часы только в интернет-магазинах; цена, однако, умеренная, как, впрочем, и срок доставки. Пока часы едут к вам, можете потренироваться в распознавании двоичных чисел, чтобы в дальнейшем непринужденно отвечать на вопрос «Сколько времени? »

Интернет магазины, в которых продают 100% подделки:
Watcher.ru (Россия) ; DealExtreme (ГонгКонг) ; ChinaVasion (Китай) ; ILtempo (Россия) ; FlashStyle (Украина) ; Fufla.net (Украина) ; 100cd.ru (Россия) ; Chinastuff.ru (Россия) ; Leddirect.ru (Россия) ; Corestore.ru (Россия) ; diod.7910.org (Россия) ; Inter-time.ru (Россия) ; Niksol.ru (Россия) ; Binarywatch.ru (Россия) ; Clockwill.ru (Россия) ; Freakywatch.ru (Россия) ; Mityaveselkov.ru (Россия) ; i-gadgets.ru (Россия) ; Blukatik.kz (Казахстан) .

Также все продажи (реклама, спам) в социальных сетях/блогах/интернет-аукционах (одноклассники, в контакте, livejournal, facebook, молоток. ру, мешок. ру, аукро. уа и. т. д. ) являются нелегальными. Многие продавцы и не скрывают что продают подделки. Будьте внимательны!

Бинарный часы на Arduino (скетч) (видео)

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

Что такое бинарные часы и какой у них цикл работы

Весь наш мир состоит из каких-то условностей. Именно так мне хотелось бы начать рассказывать о бинарных часах. Ведь мы привыкли считать в десятичной системе исчисления, при этом в минутах у нас 60 единиц, а часов в сутках — 24! Все это весьма странно, если только начать задумываться об этом. Однако если жить каждодневным и неизменным, то использование каких-либо величин на подсчета у нас не вызывает внутренних напряжений по поводу определения примерного времени суток. Ведь мы сами уже услышав что сейчас 18 часов понимаем, что это вечер. Если бы скажем бинарные часы использовались повсеместно, то можно было с таким же успехом сказать 2 и 4, что подразумевало бы что горит 2 светодиод указывающий на прошедшие 2 часа и 4 — на 16 часов. Мы бы даже не складывали, просто знали, бы что сейчас вечер.
 Так вот, в бинарных часах время идет примерно следующим образом. Есть ряд светодиодов, пусть это будут условно светодиоды, хотя нам подойдет любой источник света, звука, чего-то иного, что раздражает наши органы чувств, для снятия информации с них. И вот, каждый второй час первый светодиод загорается, а на третий час гаснет, при этом разряд переполняется и начинает гореть второй светодиод. Далее по прошествии трех часов загорается вновь первый, вместе с уже горевшим вторым и так происходит для последующих светодиодов… В общем я четко осознаю, что все это можно представить себе в уме, но не так ясно, как можно было бы этого увидеть.
 Я сам когда начал писать скетч впал в некую прострацию, так как держать в голове 6 переменных, было делом весьма нелегким. В итоге на свет появился такой вот рисунок, он станет нам помощником в написании и понимании скетча, а также еще рас визуально расскажет как же работают бинарные часы.

 

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

Схемотехника подключения Arduino к светодиодам и кнопкам управления для бинарных часов

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

Примечание выход, ножки вход, ножки
использовать с резистором 10 кОм   1
  2
ножки для выхода минут 13  
12  
11  
10  
9  
8  
ножки для выхода часов 7  
6  
5  
4  
3  

 Теперь о скетче, что более важно!

Скетч для бинарных часов на Arduino

Чтобы скетч был у вас под рукой, лучше его открыть в отдельном окне, а о его принципе я расскажу далее.

Смотреть скетч

Начинается все с того, что необходимо организовать циклы. Именно по ним можно будет ориентироваться сколько же времени прошло. При этом есть одно важное условие, так как будет происходить постоянное сравнение условий, то есть если вдруг наша переменная со временем меняется нам надо будет зажигать какой-либо из светодиодов, то в скетче надо применять не delay, а функцию millis.
 Ну, а далее все по накатанной, зная чему равен у нас цикл и ориентируюсь на алгоритм работы из рисунка выше, можно обозначит условия для свечения светодиодов. Все вроде как даже просто. Еще одно НО, что в скетче есть входы 1 и 2, которые подают положительный импульс для изменения значения переменной минут или часов соответственно. Так вот, для подключения кнопок обязательно используем сопротивления по 10 К, дабы не словить дребезг контактов.

На этом все, будут пожелания и вопросы, пишите!




Отправить ответ

avatar
  Подписаться  
Уведомление о