- Платы Ардуино
- Обучение Ардуино
- Мой блог
- Уроки
- Урок № 1 "Пишем свой первый скетч"
- Урок № 2 "Подключение фоторезистора"
- Урок № 3 "Подключение пищалки(BUZZER)
- Урок № 7 "Модуль часов RTC DS3231"
- Урок № 8 - "Шаговый двигатель 28BYJ-48"
- Урок № 10 - "ИК пульт на Ардуино"
- Урок № 11- "Сканер отпечатка пальца"
- Урок № 12- "Датчик наклона SW-200D"
- Урок № 13- "Гирлянда светодиодная WS2812b"
- Книги
- Мой YOUTUBE
Часы на Ардуино без модуля часов
Часы на ардуино без модуля часов
В одном из моих проектов мне надо было знать текущее время, прошедшее с момента включения питания. Желательно без модуля часов, чтобы удешевить изделие. Немного подумав, я решил сделать так.
Для работы мне не нужно было выводить время на экран и этот индикатор, я уже подключил после, только для этого видео. Я стоял перед выбором какой подключать, TM1637, про который у меня уже много видео. Посмотреть можете по ссылке, или использовать что-то новое. Я пошёл вторым путём, тем более, что у меня были такие индикаторы, и они в несколько раз больше TM1637.
Нам сегодня понадобятся только 3 кнопки, индикатор и 8 резисторов, на номинал от 200 Ом.
Давайте посмотрим, что получилось, а потом, как это собрать.
Принцип работы.
Индикаторы бывают с общим Катодом и общим Анодом. У меня установлен с общим Катодом, поэтому и в скетче прописаны команды для этого варианта. Я встречал много схем, где подключают индикатор к микроконтроллеру без токоограничивающих резисторов. Это неправильно. Поэтому у меня к каждому сегменту подключен резистор. Всего их 8. Семь сегментов и точки. Схему подключения и как работает скетч я покажу и расскажу позже.
При включении Ардуино индикатор устанавливает все сегменты в ноль, и с этой секунды начинается отсчёт времени. Для того чтобы настроить время, вам надо нажать кнопку 1 и не отпускать её до окончания установки времени. Эту кнопку можно заменить на тумблер или на кнопку с фиксатором.
Если текущее время меньше 1 часа, то предыдущий ноль не показывается, а то было бы странным видеть два нуля.
Чтобы не заслонять камеру для нажатия на кнопки я использовал авторучки, поэтому нажатие, не всегда происходили плавными, но у вас всё будет нажиматься хорошо.
Про что здесь ещё рассказывать я не знаю, смотрите сами как работает.
Нажимая на кнопку установки, можно устанавливать отдельно часы и минуты. Длительное нажатие позволяет быстро перемещаться по времени, а одиночное, не промахнуться, так как уменьшение времени я не делал, сделал только плюс.
Ещё надо помнить, что при сбрасывании питания, время не будет сохранено, мне просто это не было нужно, у меня было условие, что Ардуино будет работать непрерывно.
Вот схема подключения.
У индикатора 12 выводов, по 6 с каждой стороны. Выводы 12, 8, 9, и 6 это катоды для каждого из 4 индикаторов.
- 12 – отвечает за первый индикатор,
- 9 - за второй,
- 8 – за третий,
- 6 - за четвёртый.
- За вывод точки отвечает 3 контакт.
Как подключить каждый контакт к Ардуино, показано в этой таблице. Так же здесь показано за какой из сегментов отвечает тот или иной контакт.
А теперь давайте посмотрим, как эти контакты загораются. Я буду менять катоды, и мы увидим, что одни и те же контакты отвечают за такие же сегменты, но на разных индикаторах. За верхнюю и нижнюю точки отвечают 2 и 3 индикатор.
Ну и осталось рассмотреть кнопки.
Кнопки подключены к аналоговым входам Ардуино, так как все цифровые уже заняты, но это никак не повлияет на работы. Аналоговые входы, можно использовать как цифровые и обращаться к ним как к А0 так и D14 и D19
Вот мы и добрались до скетча. В принципе, он не такой уж и сложный, но довольно большой. Это из-за того, что там много одинаковых действий. А точнее 4. Для каждой цифры. А ещё там 10 значений для каждой цифры, а у каждой цифры по 7 сегментов. В общем вы поняли.
Для работы вам надо установить библиотеку Time. Как ни странно, но её нельзя установить из менеджера библиотек и вам надо будет скачать её с гитхаба, или скачать из моего архива. Архив как и всегда будет на моём сайте, ссылка на который будет в описании. Там же будет лежать и скетч этого примера.
В эти переменные мы записываем к каким контактам будут подключены катоды индикатора.
Здесь указываем куда будут подключены сегменты.
А это выводы отвечающие за кнопки.
Так как мы будем зажигать сегменты индикатора, то объявляем эти контакты как выход.
С кнопок мы наоборот будем получать информацию, поэтому они будут обозначены как входа, и подтянем их к высокому уровню, чтобы не болтались просто так.
По умолчанию выставляем на них высокий уровень.
В этоу переменную мы сохранять значения которые будут выводиться на дисплей.
Это выглядит вот так.
Например надо вывести 5 часов 10 минут. Это значит на дисплее должно быть 510.
Этот цикл отвечает за то, какие сегменты будут загораться в нужное время. Этим управляют функции которые описаны ниже в скетче.
Это отвечает за нажатие кнопки установки режима настройки часов и минут.
А это сама функция управляющая установкой времени. Пока кнопка нажата, мы находимся внутри этой функции и можем управлять часами и минутами. После отпускания кнопки время будет считаться установленным.
А в таком состоянии находятся сегменты при определённых цифр. Например при нуле все сегменты кроме G включены.
При единице, включены только B и C, и так далее.
Если вам нравятся мои видео, то вы можете помочь в развитии канала став его спонсором. Все ваши вклады пойдут на закупки новых модулей. Вам же за это будут предоставлены дополнительные бонусы, и они довольно интересные.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне. Ведь любой ваш просмотр - это знак YOUTUBE, что это кому-то интересно и что его надо показывать чаще.
Спасибо.
А пока на этом всё.
Скетчи