Pull to refresh

Простые бинарные часы с будильником на Arduino

Reading time4 min
Views24K


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

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

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

Первые шаги


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

Еще понадобится breadboard и провода для соединения, вот их, пришлось заказать. Доставка много времени не заняла.

Также мелочевка, в виде резисторов, светодиодов, кнопочек, пьезопищалок и то, что можно найти, разобрав старый модем или привод CD-ROM. У меня еще были запасы старых советских радиодеталей.

Для начала этого более чем достаточно. Теперь можно начать тренироваться, для начала поморгать светодиодами, разобраться как работать с аналоговыми разъемами и с ШИМ.

Возврат к первоначальной идее. Подготовка


Разобравшись с основными принципами работы arduino и средой разработки, возвращаемся к идее сделать бинарные часы. Только мне уже захотелось немножко большего, не просто сделать отображение часов и минут, а еще хоть простенький будильник добавить.
Таким образом, для всего этого нам понадобится:

  • arduino;
  • breadboard (не обязательно, можно сразу припаивать все на макетную плату);
  • провода. Для перемычек я вообще использовал из витой пары, они там медные, замечательно паяются, а для подключения к arduino из корпусов старых системников, т.к. на самодельной arduino у меня штырьки, а не разъемы, в отличие от заводской;
  • 13 светодиодов;
  • 4 кнопочки (одна с фиксацией);
  • 14 резисторов 220 Ом, можно и 360 Ом (для светодиодов и пищалки);
  • 4 резистора примерно по 2.2 кОм (для кнопок);
  • пьезопишалка.

Как они будут работать




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

Схемы


Светодиоды подключаются очень просто, только их обязательно через резисторы надо втыкать, одну ногу на землю, другую в arduino, к пинам от 0 до 8 и от 10 до 13. Резистор можно подключать хоть со стороны земли, хоть со стороны платы.

Все как на следующей схеме, все выводы расписаны.


Для подключения пищалки как раз и оставил свободный 9 пин, так как нам нужен пин поддерживающий ШИМ. Резистор к пищалке я прицепил на 220 Ом, но можно и поменьше, громче будет пищать. Что такое ШИМ можно прочитать здесь.


Так как на arduino моего типа больше нет свободных цифровых пинов(если приобрести Arduino Mega, то там их еще много), под кнопки придется использовать аналоговые. Один выход выводим на землю, другой через резистор к arduino. Разница подключения к аналоговым пинам в том, что мы уже будем считывать не цифровой сигнал HIGH или LOW, а уровень входного напряжения, преобразованный в целочисленное значение. Поэтому определять нажата кнопка или нет, придется путем проверки значения с АЦП. Займут они аналоговые пины с 0 по 3.

Две кнопки для задания минут и часов. Одна для переключения режимов. И еще одна, которая с фиксацией, для включения/выключения подсветки светодиодов.

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


Общий вид:


Ее можно легко собрать на breadboard. Но хочется же законченное устройство, хоть и подключенное к arduino.

Прикинем, как будет работать и выглядеть


Поэтому, сначала все – таки набросаем наш скетч, в которой пока сделаем переключение минут, и соберем все это на breadboard, для проверки.

Собрали, подключили:



Работает. Отлично.

Теперь посмотрим, как это будет выглядеть уже на плате.


Выглядит опять же не плохо, еще куча свободного места для кнопочек и пищалки.

Будем паять


Прежде всего, надо проверить то, что у нас работало на breadboard.


И убедившись, что я еще на что-то способен, в плане припаять и не спалить, можно продолжать.

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


Код


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

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


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

Заключение


В целом я очень доволен. Буду и дальше изучать платформу arduino.

Видео реализации:

Спасибо за внимание!

Ссылки


Самодельный Arduino — robocraft.ru/blog/arduino/19.html
Что такое ШИМ — arduino.ru/Tutorial/PWM
Исходники — github.com/proshik/binary_clock
Tags:
Hubs:
Total votes 38: ↑33 and ↓5+28
Comments19

Articles