Не прекращая осваивать Ардуинку, более ради собственного интереса, в голову пришла очередная не более чем бредовая идея, - сделать бинарные часы. В доме вполне хватало и самый обычных часов, будь то стрелочные или цифровые, но вот стационарных бинарных пока не было.
Ну решено и решено, надо пробовать. А да, вначале пару слов о том, что такое бинарные часы, хотя для многих это вовсе не будет открытием, они в этом случае могут опустить свой взгляд сразу на один абзац ниже...
Что такое бинарные часы и какой у них цикл работы
Весь наш мир состоит из каких-то условностей. Именно так мне хотелось бы начать рассказывать о бинарных часах. Ведь мы привыкли считать в десятичной системе исчисления, при этом в минутах у нас 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 К, дабы не словить дребезг контактов.
На этом все, будут пожелания и вопросы, пишите!