В процессе создания своего робота нашлась свободная неделя. Как известно, "Природа не терпит пустоты" (Аристотель), вот и захотелось сделать что-то простое и быстрое. То есть что-то, что легко изготовить. Идей было куча, радиоприемник, андронный коллайдер и кипятильник я отмел сразу, осталось заняться часами. И не простыми, а бинарными. В таких часах время отображается в двоичном коде (1100 - 12, где 1 - горящий светодиод). В сети есть куча примеров, в основном ручные. На такой уровень я пока не способен, поэтому получились , так сказать, карманные.
Теперь детально...
Используемые компоненты:
- ATmega328 в TQFP корпусе с загрузчиком Arduino;
- кварц на 16 МГц, два конденсатора на 22 пФ, один резистор smd на 10 кОм;
- часовая микросхема реального времени RTC DS1307;
- часовой кварц 32,768 кГц;
- SMD резисторы на 3,3 кОм (11 шт.) и 4,7 кОм (5 шт.);
- SMD светодиоды красные (4 шт.), желтые(3 шт.), белые(3 шт.) и синие(4 шт.);
- две батарейки типа "таблетка" на 3 В размером 1620 и одна 1632;
- кнопка;
- какой-нибудь самодельный (подходящий) корпус.
Вот как выглядят часы в сборе и изнутри:
Алгоритм работы.
Батарейка 1632 на 3 В питает часовую микросхему DS1307 и та беззвучно "тикает" в полуспящем режиме, отмеряя дату и время, но ни кому ничего не сообщает. Производитель утверждает, что микросхема верно "считает" время и дату до 2100 года, а на "таблетке" способна работать несколько лет. Меня это устраивает вполне. ))) В это время ATmega328 отключена от питания и индикации времени нет. В момент нажатия на кнопку питание с двух "таблеток" 1620 (3+3=6В) подается на ATmega328 и DS1307, оба включаются на полную. На одной ножке часовой микросхемы ежесекундно происходит смена состояния с низкого на высокий и обратно, к этой ножке подключен светодиод 7, которые мигает, показывая, что часы идут. ATmega328 опрашивает часовую микросхему DS1307 по поводу времени и даты, которые, затем, отображает в двоичном коде. Красные светодиоды 3,4,5,6 - часы 0-12 (значение месяца 1-12), желтые светодиоды 8,9,10 - десятки минут 0-5 (десятки дней 0-3), синие светодиоды 11,12,13,14 - единицы минут 0-9 (единицы дней 0-9). Сначала часы отображают время в 12-часовом формате, одновременно светодиоды 1(после полудня) и 2 (до полудня) показывают время суток. Через 5 секунд часы переходят в режим отображение даты (день, месяц). Еще через 5 секунд отображение прекращается, мигает только светодиод, показывающий ход часов. Для повторного просмотра времени нужно отпустить и нажать кнопку.
Для удобства считывания значений на обороте корпуса есть подсказка. Если использовать часы регулярно, то необходимость в подсказке отпадает.
Вот пример отображения времени 19 часов 42 минуты:
А это отображение даты 19 августа:
Внешний вид устройства оставляет желать лучшего, но ведь и времени ушло всего несколько дней с момента задумки и до окончательной сборки.
В результате эксплуатации часов на протяжении 2 недель выяснилось, что от качества кнопки многое зависит, иногда переходные процессы при нажатии приводят к сбою в программе и время не отображается. Наверное, еще и питание 6В (с копейками) сказывается.
Но главное не это... Главное, что работает!
Конечно, нужно отметить, что пользы от этих часов крайне мало. Время узнавать по ним весьма сложно и не очень-то удобно. Но эффект, производимый внешним видом часов на моих знакомых стоит потраченного времени и сил на изготовление. )))) Еще ни одни не угадал, что это за штука, пока я не рассказал сам. Но даже после этого во взгляде было недоверие и осторожность. ))))))) Полное непонимание. )))))) Эх...
Дальше будет лучше....
Проект под кодовым названием "БИНАРНЫЕ ЧАСЫ ARDUINO"
Проект под кодовым названием "БИНАРНЫЕ ЧАСЫ ARDUINO"
Последний раз редактировалось idealsoul 28 дек 2013, 09:53, всего редактировалось 1 раз.
Проживи эту жизнь счастливо и получи вторую в подарок!
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Бинарные часы на ATmega328 ("Arduino Uno")
Класс! А на руке их носить можно?
Re: Бинарные часы на ATmega328 ("Arduino Uno")
Хотел было предусмотреть петельки на плате для ремешка, но это уж совсем странно будет. )))) Хотя, модернизировать корпус проще простого. Вот если кто купить такое захочет, то буду выпускать в двух вариантах - на ремешке на руку и на цепочке в карман. ))))
Проживи эту жизнь счастливо и получи вторую в подарок!
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Бинарные часы на ATmega328 ("Arduino Uno")
Может быть такое поведение связано с "дребезгом" контактов кнопки в момент нажатия? Есть разные алгоритмы для подавления этого эффекта. Например, такой.В результате эксплуатации часов на протяжении 2 недель выяснилось, что от качества кнопки многое зависит, иногда переходные процессы при нажатии приводят к сбою в программе и время не отображается.
Re: Бинарные часы на ATmega328 ("Arduino Uno")
Я уверен, что глюки связаны с дребезгом, но программным путем дребезг не убрать, ведь микроконтроллер в момент дребезга только включается. И если он все же включился, значит дребезг уже позади. Была мысль впаять конденсатор 0,1 мкФ между +5В и GND, но заранее не планировалось, и теперь нет места для конденсатора. А вот параллельно кнопке впаять могу, может поможет. Сегодня попробую.
Проживи эту жизнь счастливо и получи вторую в подарок!
Re: Проект под кодовым названием "БИНАРНЫЕ ЧАСЫ ARDUINO"
а можешь печатку скинуть хочу попробовать собрать