Часы на Arduino без модуля часов — с большим 4-разрядным индикатором
Часы на Arduino без модуля часов — отличное решение для проектов, где нужно считать время с момента включения питания, а внешний RTC-модуль (DS3231, DS1307) слишком дорог или избыточен. В этом проекте своими руками мы соберём простые, но яркие часы на большом четырёхразрядном семисегментном индикаторе с общим катодом, управлением тремя кнопками и точностью до секунды.
Возможности проекта
- Отсчёт времени с момента включения Arduino
- Формат ЧЧ:ММ (автоматическое скрытие ведущего нуля)
- Установка часов и минут тремя кнопками
- Быстрая прокрутка при удержании
- Яркий большой 4-разрядный индикатор (высота цифр ~25–30 мм)
- Всего 8 токоограничивающих резисторов 220–330 Ом
Необходимые компоненты
- Arduino Uno / Nano
- Четырёхразрядный семисегментный индикатор с общим катодом (0.8–1 дюйм)
- 8 резисторов 220–330 Ом
- 3 тактовые кнопки
- Макетная плата и провода
Схема подключения
Катоды цифр:
- 1-я цифра → D6
- 2-я цифра → D9
- 3-я цифра → D8
- 4-я цифра → D12
Сегменты a–g + dp через резисторами 220–330 Ом:
- a → D7, b → D13, c → D10, d → D5, e → D4, f → D2, g → D3, dp → D11
Кнопки (с подтяжкой к +5В):
- Кнопка установки → A0
- Кнопка + час → A1
- Кнопка + минута → A2
Установка библиотеки
Скачайте и установите библиотеку Time — ссылка в описании видео и на сайте.
Готовый скетч
#include <TimeLib.h>
const byte digitPins[] = {6, 9, 8, 12}; // катоды цифр
const byte segmentPins[] = {7, 13, 10, 5, 4, 2, 3, 11}; // a b c d e f g dp
// Полный рабочий код в прикреплённом архиве ниже
Как пользоваться
- Удерживайте кнопку A0 — вход в режим настройки
- Кнопка A1 — прибавить час
- Кнопка A2 — прибавить минуту
- Отпустите A0 — сохранение и возврат к отсчёту
Заключение
Получились недорогие, яркие и полностью автономные часы без RTC-модуля. Идеально для таймеров полива, фотобудок, счётчиков времени работы устройства и любых проектов, где питание не отключается.
FAQ — Часы на Arduino без модуля часов
Сбивается ли время при отключении питания?
Да, отсчёт начинается с 00:00 при каждом включении. Для сохранения времени нужен RTC-модуль или батарейка на суперконденсаторе.
Можно использовать индикатор с общим анодом?
Да, нужно поменять логику в скетче: HIGH/LOW местами и подключить катоды к +5В через резисторы.
Почему нужны резисторы на каждый сегмент?
Без них можно сжечь сегменты или выходы Arduino. 220–330 Ом — безопасный и яркий режим.
Можно вывести секунды?
Да, добавьте мигание точкой или используйте 6-разрядный индикатор — код легко расширяется.
Сколько памяти занимает скетч?
На Arduino Uno — около 9 КБ (30 % Flash), остаётся много места.
Можно ли сделать 12-часовой формат?
Да, добавьте условие if (hour() > 12) hour()-12 и выводите AM/PM точкой.
Как сделать автосброс в 24:00?
В loop() добавьте: if (hour() == 23 && minute() == 59 && second() > 58) setTime(0,0,0,1,1,2000);