ARDUINO Часы на ГРИ. Альтернативная прошивка

Sergo_ST

★★★★★★✩
15 Мар 2020
1,301
952
Универсальная прошивка для различных проектов часов ГРИ под 4/6 ламп на базе Atmega328p.
Позволяет настроить любые параметры работы часов под разные потребности.
Поддерживает большинство существующих схем и аппаратных решений.

Последняя версия 2.3.0 от 17.07.2026.
-> Скачать прошивку <-
-> Список изменений <-

-> Описание работы с WiFi модулями <-



Для настройки прошивки под другую конфигурацию плат, отличающуюся от преднастроенных,
необходимо указать BOARD_TYPE 0, пины подключения периферии в connection.h
и настроить используемую периферию в userConfig.h, config.h.

Маска дешефратора и порядок катодов указываются в config.h. Свои настройки можно разместить в boards.h
для более удобного переноса на новые версии прошивки.

Поддерживаются:
  • MH2024K-24*
  • GD3200B
  • YX5200-24
  • AB23A797393.1-74
  • AB23A795250.1-74
  • AF25E001674-84A2
  • AA19HFF859-94
  • TD5580A
Не поддерживаются:
  • MH2024K-16
  • AS21CN27OC
*Возможна задержка между фразами!
Connecting peripherals.png
Connecting extended.png
Wireless_Sensor.png
Периферия:
  • Модуль ESP8266 - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчики температуры DHT11/DHT12/MW33/DHT21/DHT22(AM2301/AM2302), DS18B20/DS18S20/DS1820(поддержка отрицательных температур) - доступные пины подключения(D0..D13) с подтяжкой 4.7-10кОм к +5в.
  • Датчик температуры BME280(BMP085/180/280) - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры SHT20(SHT21/SHT25), SHT30(SHT31/SHT35) - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры AHT10(AHT15), AHT20 - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Датчик температуры DS3231 - встроенный в модуль часов реального времени.
  • Модуль реального времени DS3231 - доступные пины подключения(A4 и A5).
  • Синхронизация времени по SQW - доступные пины подключения(D2..D3).
  • Управление разделительными точками в индикаторах ИН12Б/14/16 - доступные пины подключения(D0..D13), для левых и правых точек используется свой пин.
  • Управление декатроном ОГ-4 - доступные пины подключения(D0..D13).
  • Радиоприёмник RDA5807M - доступные пины подключения(A4 и A5) параллельно модулю часов.
  • Неоновая секундная точка(одна или две) - доступные пины подключения(D0..D13), для каждой точки используется свой пин.
  • Подсветка на адресных светодиодах WS2812B - доступные пины подключения(D0..D13).
  • Подсветка на обычных светодиодах - доступные пины подключения(D11), с софт. шимом(D0..D13).
  • Цифровые кнопки - доступные пины подключения(D0..D13).
  • Дополнительная цифровая кнопка для управления таймером - секундомером - доступные пины подключения(D0..D13).
  • Аналоговые кнопки(в т.ч. и дополнительная) - доступные пины подключения(A6..A7).
  • Преобразователь ВВ напряжения(Затвор мосфета) - доступные пины подключения(D9..D10).
  • Обратная связь преобразователя ВВ напряжения на резистивном делителе(АЦП или компаратор) - доступные пины подключения(для АЦП)(A6..A7)(для компаратора)(только пин D7).
  • Бузер(Для будильника и оповещений) - доступные пины подключения(D0..D13).
  • Озвучка на DF player - доступные пины подключения указаны в прошивке.
  • Озвучка на SD карте - доступные пины подключения указаны в прошивке.
  • Управление питанием усилителя - доступные пины подключения(D0..D13).
  • Приемник ИК пульта(Пульты только с протоколом NEC) - доступные пины подключения(D0..D13).
  • Датчик яркости освещения - доступные пины подключения(A6..A7).
  • Датчик движения - доступные пины подключения(D0..D13).
  • Сдвиговый регистр для управления анодами ламп и разделительными точками/неоновыми лампами - доступные пины подключения указаны в прошивке.
  • Динамическая индикация на 1-й или 2-х К155ИД1 - доступные пины подключения указаны в прошивке.
Программно:
  • Поддержка часов на 4/6 ламп.
  • 12/24 часовой формат времени.
  • Переход на летнее/зимнее время(Только при использовании есп).
  • Будильник(Один или несколько).
  • Радиобудильник(При наличии модуля радио).
  • Звук хода секунд(При наличии бузера).
  • Автоматическое определение подключенного датчика температуры(Если выбрано несколько датчиков).
  • Второй датчик температуры(DHTxx или DS18x20) для "Улицы"(Требуется наличие есп).
  • Беспроводной WiFi датчик температуры(Требуется наличие есп).
  • Авто-показ температуры/влажности/давления.
  • Авто-показ даты/года.
  • Отображение метеоданных из погодного сервиса(Требуется наличие есп).
  • Отображение текущей температуры/давления/влажности.
  • Отображение текущей даты/года.
  • Режим сна(Отключение ламп через заданное время).
  • Упрощённый режим управления в режиме часов.
  • Меню настройки яркости и др. функций.
  • Быстрое меню для выбора анимации смены минут(секунд)/точек/подсветки.
  • Таймер - секундомер(Только при наличии доп. кнопки).
  • Радиоприёмник(Только при наличии доп. кнопки или есп).
  • Антиотравление ламп(3 варианта анимации, выбор из меню).
  • Мелодия смены часа(Или озвучка при использовании плеера).
  • Озвучка пунктов меню, времени и температуры.
  • Смена яркости по времени и по датчику освещённости.
  • Анимация глюков.
  • 10 режимов анимации авто-показа(Есть случайный режим).
  • 10 режимов анимации смены минут(Есть случайный режим).
  • 3 режима анимации смены секунд для 6-ти ламп.
  • 3 режима подсветки для обычных диодов и 16 для адресных WS2812B.
  • 5 режимов анимации секунд для декатрона.
  • 5 режимов работы секундных точек + 2 для двух неоновых ламп и 7 для разделительных точек.
  • Возможность создания собственных мелодий будильника.
  • Система контроля основных параметров часов(Отображение кодов ошибок).
  • Меню отладки(Для опытных пользователей).
  • Программирование кнопок ИК пульта из меню отладки.
  • Веб-интерфейс для настройки и мониторинга(Требуется наличие есп).
  • Обновление прошивки часов через веб интерфейс(Требуется наличие есп).
  • Автоматическое обнаружение других часов в локальной сети wifi(Требуется наличие есп).
  • Добавить возможность использовать отдельный светодиод для индикации состояния будильника.
  • Добавить поддержку датчика освещения BH1750.
  • Добавить поддержку двух символьных ламп.
  • Добавить поддержку статической индикации.

Для сброса настроек - необходимо зажать среднюю кнопку и подать питание на часы.
Для запуска меню отладки - необходимо зажать левую кнопку и подать питание на часы.
Для запуска теста системы(ламп тест) - необходимо зажать правую кнопку и подать питание на часы.

Если при работе часов возникла какая-то проблема, то при старте часов будет звуковой код, а на индикаторах отобразится код ошибки:
  • 0001 - Нет связи с модулем DS3231(модуль часов неисправен или проблемы с шиной i2c).
  • 0002 - Сбой осциллятора DS3231(батарейка модуля часов разряжена или проблемы с тактированием модуля часов).
  • 0003 - Слишком короткий сигнал SQW(во время работы часов были обнаружены помехи или неверный сигнал на SQW).
  • 0004 - Слишком длинный сигнала SQW(пропал сигнал SQW во время работы часов или сигнал отсутствовал при запуске).
  • 0005 - Выбранный датчик температуры не обнаружен(проверить подключение датчика температуры).
  • 0006 - Слишком низкое или слишком высокое напряжение питания(проверить источник питания).
  • 0007 - Сбой памяти EEPROM(повреждение данных, если ошибка будет повторятся слишком часто - износ EEPROM).
  • 0008 - Софтовая перезагрузка(говорит о нестабильности программы или об аппаратных проблемах с мк).
  • 0009 - Сбой работы преобразователя(регистры таймера были неожиданно изменены).
  • 0010 - Переполнение заполнения шим преобразователя(превышен верхний предел заполнения шим).
  • 0011 - Переполнение стека(утечка памяти).
  • 0012 - Переполнение тиков времени(основная программа не отвечает).
  • 0013 - Сбой работы динамической индикации(регистры таймера были неожиданно изменены или превышен предел регистра сравнения).
  • SECS_DOT 0 - Обычная светодиодная секундная точка(пин подключения указывается в SECL_PIN)(возможно комбинирование с точками в индикаторах)
  • SECS_DOT 1 - Одна неоновая лампа в качестве секундной точки(пин подключения указывается в SECL_PIN)(возможно комбинирование с точками в индикаторах)
  • SECS_DOT 2 - Две неоновые лампы в качестве секундных точек(пин подключения указывается в SECL_PIN и SECR_PIN)(возможно комбинирование с точками в индикаторах)
  • SECS_DOT 3 - Точки в индикаторах в качестве секундных точек(пин подключения указывается в DOTSL_PIN и DOTSR_PIN)
Пины подключения периферии к сдвиговому регистру указываются в connection.h: ANODE_0_PIN..ANODE_6_PIN, SECL_PIN, SECR_PIN, DOTSR_PIN, DOTSL_PIN. Доступные номера пинов 0..7.
  • Аноды ламп.
  • Разделительные точки в индикаторах.
  • Две раздельные неоновые лампы.
  • Одну неоновую лампу.
  • Два дешифратор К155ИД1.
  • Оба дешифратора подключаются сдвиговому регистру, сначала первый(левая половина ламп) к пинам сдвигача 0-3, затем второй(правая половина ламп) к пинам сдвигача 4-7.
  • Порядок подключения входов К155ИД1 к сдвиговому регистру и выходов к катодам ламп должен быть идентичен у обоих К155ИД1.
  • При использовании точек в индикаторах потребуется 2 пина, один для левой половины ламп, второй - для правой.
  • Пины точек в индикаторах указываются через запятую, сначала для левой половины ламп затем - для правой.
При использовании сдвигового регистра есть ограничения на пины D13-D10, а именно:
  • D13 может быть использован только как пин сдвигового регистра - SCK.
  • D12 может быть использован для остальной периферии в качестве входа(цифровые кнопки, датчик движения, ИК приёмник, BUSY DF плеера, MISO SD карты).
  • D11 может быть использован только как пин сдвигового регистра - DATA.
  • D10 может быть использован для остальной периферии в качестве выхода(ВВ преобразователь, секундные точки, точки в индикаторах, декатрон, подсветка, бузер, управление питанием усилителя, RX DF плеера при использовании софтового UART, MOSI/SCK/CS SD карты, защёлка сдвигового регистра).

Отладка: Удерживать "левую" кнопку при включении питания
Ввод пароля:
  • Клик по "средней кнопке" - переход между разрядами
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - подтвердить ввод пароля
Меню отладки:
  • Клик по "средней кнопке" - выбор пункта отладки
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - выход к часам
Пункты отладки:
  • 01 - Коррекция хода часов DS3231(Коррекция (0..255)(128 = 0)(0 = -127)(255 = 127))(Максимальная коррекция +- 1сек/сутки)
  • 02 - Коррекция хода внутреннего осциллятора(Коррекция (2000..4000)(мкс))
  • 03 - Минимальное значение шим(Для линейной регулировки)(100..150)
  • 04 - Максимальное значение шим(Для линейной регулировки)(150..200)
  • 05 - Коррекция напряжения преобразователя(Для регулировки по обратной связи)(Внимание! Значение может меняться в зависимости от напряжения питания)(+-30)
  • 06 - Программирование кнопок ИК пульта(Поддерживаются пульты только с протоколом NEC)(1..8)
  • 07 - Калибровка датчика освещенности(Автоматическое определение диапазона)
  • 08 - Сброс настроек отладки(0..1)(0 - отмена | 1 - подтверждение)
  • Войти в режим отладки(удерж. левой кнопки при подаче питания).
  • Выбрать пункт меню отладки 07(калибровка датчика освещенности).
  • Поставить часы в светлое место(на 1-3 сек).
  • Поставить часы в тёмное место(на 1-3 сек).
  • Клик средней кнопкой(выйти к выбору пунктов меню отладки).
  • Удержание средней кнопки(выйти из меню отладки и сохранить настройки).
Управление:
  • Клик по "средней кнопке" - выйти из режима программирования кнопок ИК пульта
  • Клик по "левой кнопке" - уменьшить значение номера кнопки ИК пульта
  • Клик по "правой кнопке" - увеличить значение номера кнопки ИК пульта
  • Удержать "среднюю кнопку" - сбросить текущую кнопку ИК пульта

Нумерация кнопок:
  • 1 - Левая клик.
  • 2 - Левая удержание.
  • 3 - Правая клик.
  • 4 - Правая удержание.
  • 5 - Средняя клик.
  • 6 - Средняя удержание.
  • 7 - Доп.кнопка клик.
  • 8 - Доп.кнопка удержание.
  • 9 - Вкл/выкл питание радио.
  • 10 - Прибавить громкость радио.
  • 11 - Убавить громкость радио.
  • 12 - Переключить на следующую радиостанцию.
  • 13 - Переключить на предыдущую радиостанцию.
  • 14..23 - Переключить на ячейку памяти радиостанции 0..9

Настройка времени: Удерживать "правую" кнопку
  • Средняя кнопка - выбор, остальные "меньше" и "больше"
  • Клик по "выбору" - смена настройки часы/минуты | месяц/дата | год
  • Клик "меньше" или "больше" - изменение времени/даты
  • Удержать "выбор" - возврат к режиму часов

Настройка будильника: Удерживать "левую" кнопку
В режиме часов удержание левой клавиши – переход к настройке будильников.
После входа в настройку:
  • В левых двух разрядах отображается текущий номер будильника (0 – нет будильников).
  • В четвёртом разряде отображается текущий режим будильника (если будильников нет – ничего не отображается).
Экран «Выбор номера будильника»
Нажатие на:
  • Правую клавишу – увеличивает значение.
  • Левую клавишу – уменьшает значение.
  • Среднюю клавишу - переход к настройке выбранного будильника.
Удержание:
  • Правой клавиши – добавить новый будильник.
  • Левой клавиши – удалить текущий будильник.
  • Средней клавиши – выход к режиму часов.
После перехода к настройке будильника:
  • Клик по "средней кнопке" - перемещение по индикаторам.
  • Клик по "левой кнопке" или "правой кнопке" - изменение значений.
  • Удержать "левую кнопку" или "правую кнопку" - смена настройки.
    • Часы : Минуты -> Режим(0 - выкл | 1 - одиночный | 2 - ежедневный | 3 - по будням | 4 - по дням недели) : День недели(1..7)/Активация(0 - выкл | 1 - вкл) -> Громкость(для плеера и радио) : Мелодия(радиостанция).
  • Удержать "среднюю кнопку" - возврат к выбору будильника.
  • Удержать "доп. кнопку" - переключить режим мелодия/радио.
В режиме часов удержание левой клавиши – переход к настройке будильников.
После входа в настройку:
  • Клик по "средней кнопке" - перемещение по индикаторам.
  • Клик по "левой кнопке" или "правой кнопке" - изменение значений.
  • Удержать "левую кнопку" или "правую кнопку" - смена настройки.
    • Часы : Минуты -> Режим(0 - выкл | 1 - одиночный | 2 - ежедневный | 3 - по будням | 4 - по дням недели) : День недели(1..7)/Активация(0 - выкл | 1 - вкл) -> Громкость(для плеера и радио) : Мелодия(радиостанция).
  • Удержать "среднюю кнопку" - возврат к режиму часов.
  • Удержать "доп. кнопку" - переключить режим мелодия/радио.

Основные настройки: Удерживать "среднюю" кнопку
  • Клик по "средней кнопке" - переход в пункт меню для настройки/выход к выбору пункта меню
  • Клик "левой кнопке" или "правой кнопке" - выбор пункта меню
  • Удержать "среднюю кнопку" - возврат к режиму часов
  • Удержать "левую кнопку" или "правую кнопку" - выбор подпункта меню.
Пункты меню:
  • 01 -
    • Бузер(Формат времени(12ч | 24ч))
    • Плеер(Глюки(0 - выкл | 1 - вкл) : Формат времени(12ч | 24ч))
  • 02 -
    • Бузер(Глюки(0 - выкл | 1 - вкл))
    • Плеер(Голос озвучки(0 - Алёна | 1 - Филипп) : Громкость озвучки(0..15))
  • 03 -
    • Бузер(Звук кнопок/секунд(0 - выкл | 1 - вкл звук кнопок | 2 - вкл звук кнопок и секунд) : Озвучка часа(0 - выкл | 1 - вкл)
    • Плеер(Озвучка действий(0 - выкл | 1 - вкл) : Озвучка часа(Температура/Новый час))
  • 04 - Время беззвучного режима(Начало : Конец)(Выключить беззвучный режим: начало = конец)
  • 05 - Время смены подсветки(Ночь : День)(Выключить смену яркости(включить датчик освещения): ночь = день)
  • 06 - Яркость индикаторов(Ночь : День)
  • 07 - Яркость подсветки(Ночь : День)
  • 08 - Яркость секундных точек(Ночь : День)
  • 09 - Коррекция датчика температуры(Коррекция : Сенсор(только отображение))
  • 10 - Настройка интервала и анимации автоматического отображения(Время в минутах(0 - выключить) : Анимация)
  • 11 - Настройка интервала и анимации антиотравления индикаторов(Время в минутах : Анимация)
  • 12 - Установка времени ожидания после выхода из сна(Ночь(сек) : День(мин))(0 - выключить)

Таймер/секундомер: Клик по "дополнительной" кнопке
  • Клик по "дополнительной кнопке" - пуск/пауза
  • Клик по "средней кнопке" - вход в настройку таймера(только в режиме таймера)
  • Клик по "левой кнопке" или Удержать "левую кнопку" - режим секундомера
  • Клик по "правой кнопке" или Удержать "правую кнопку" - режим таймера
  • Удержать "дополнительной кнопку" - сброс таймера/секундомера
  • Удержать "среднюю кнопку" - возврат к режиму часов(таймер продолжает работать в фоне, секундомер ставится на паузу)

Настройка таймера: В режиме таймера - Клик по "средней" кнопке
  • Клик по "средней кнопке" - переключение разрядов ММ:СС(максимум 99:59)
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" или Удержать "дополнительной кнопку" - выход к таймеру

Радиоприёмник: Удерживать "дополнительную" кнопку(или клик по "дополнительной" кнопке, если таймер/секундомер отключен)
  • Клик по "дополнительной кнопке" - переключить ячейку памяти радиостанций
  • Клик по "средней кнопке" - настройка громкости(текущая громкость):
    • Клик по "левой/правой кнопке" - изменить громкость.
    • Клик по "средней кнопке" - выход к часам(радио останется включенным).
    • Клик по "дополнительной кнопке" - вернуться к радио.
  • Клик по "левой/правой кнопке" - изменить текущую частоту
  • Удержать "дополнительной кнопку" - настройка ячеек памяти радиостанций(запись в ячейке : номер ячейки):
    • Клик по "левой/правой кнопке" - выбрать номер ячейки.
    • Клик по "дополнительной кнопке" - сохранить текущую частоту в выбранную ячейку.
    • Удержать "дополнительной кнопку" - удалить данные из выбранной ячейки.
  • Удержать "среднюю кнопку" - выход к часам(радио выключится)
  • Удержать "левую/правую кнопку" - авто поиск станций вниз/вверх

Управление кнопками В РЕЖИМЕ ЧАСОВ:
  • Клик по "правой" кнопке отображает текущую дату, затем клик по "правой" кнопке переключает дату/год.
  • Клик по "средней" кнопке отображает текущий режим анимации смены минут, затем:
    • Клик по "средней" кнопке - переключает режим анимации смены минут.
    • Удержание "средней" кнопки во время отображения режима анимации смены минут(если нет дополнительной кнопки) - переводит в режим установки анимации смены секунд, выбор анимации осуществляется "средней" кнопкой.
    • Клик по "левой" кнопке переключает режим подсветки.
    • Удержание "левой" кнопки во время отображения режима подсветки(для адресных светодиодов) - переводит в режим установки цвета, выбор цвета осуществляется "левой" кнопкой(войти можно только в режимах поддерживающих смену цвета - статичная, дыхание, бегущий огонь, волна)
    • Клик по "правой" кнопке - переключает режим точек.
    • Клик по "дополнительной" кнопке - переключает режим анимации смены секунд.
  • Клик по "левой" кнопке отображает текущую температуру, затем клик по "левой" кнопке переключает температуру/давление/влажность.
  • Клик по "правой" кнопке - переключает режим точек.
  • Клик по "средней" кнопке - переключает режим анимации смены минут.
  • Удержание "средней" кнопки - переключает режим анимации смены секунд.
  • Клик по "левой" кнопке - переключает режим подсветки.
  • Режимы анимации точек:
    • SECS_DOT 0..1 - (0 - выкл | 1 - статичная | 2 - мигает один раз в секунду | 3 - мигает два раза в секунду | 4 - динамичная(плавно мигает)), (для точек в индикаторах)(5 - мигающая | 6 - бегущая | 7 - змейка | 8 - резинка | 9 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 10 - двойной маятник(только для 6-ти ламп и если используются левые и правые точки) | 11 - маятник со смещением(только для 6-ти ламп и если используются левые и правые точки))
    • SECS_DOT 2 - (0 - выкл | 1 - статичная | 2 - мигает один раз в секунду | 3 - мигает два раза в секунду | 4 - динамичная(плавно мигает) | 5 - маятник(мигает один раз в секунду) | 6 - маятник(плавно мигает)), (для точек в индикаторах)(7 - мигающая | 8 - бегущая | 9 - змейка | 10 - резинка | 11 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 12 - двойной маятник(только для 6-ти ламп и если используются левые и правые точки) | 13 - маятник со смещением(только для 6-ти ламп и если используются левые и правые точки))
    • SECS_DOT 3 - (0 - выкл | 1 - статичная | 2 - мигает один раз в секунду | 3 - мигает два раза в секунду | 4 - мигающая | 5 - бегущая | 6 - змейка | 7 - резинка | 8 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 9 - двойной маятник(только для 6-ти ламп и если используются левые и правые точки) | 10 - маятник со смещением(только для 6-ти ламп и если используются левые и правые точки))
    • SECS_DOT 4 - (0 - выкл | 1 - статичная | 2 - мигает один раз в секунду | 3 - мигает два раза в секунду | 4 - метроном | 5 - шажки | 6 - таймер | 7 - маятник | 8 - луна), (для точек в индикаторах)(9 - мигающая | 10 - бегущая | 11 - змейка | 12 - резинка | 13 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 14 - двойной маятник(только для 6-ти ламп и если используются левые и правые точки) | 15 - маятник со смещением(только для 6-ти ламп и если используются левые и правые точки))
  • Режим анимации смены минут:
    • 0 - выкл, 1 - случайная анимация, 2 - плавное угасание и появление , 3 - перемотка по порядку числа, 4 - перемотка по порядку катодов в лампе, 5 - поезд, 6 - резинка, 7 - ворота, 8 - волна, 9 - блики, 10 - испарение | 11 - игровой автомат
  • Режимы анимации смены секунд:
    • 0 - выкл, 1 - плавное угасание и появление , 2 - перемотка по порядку числа, 3 - перемотка по порядку катодов в лампе
  • Режимы анимации подсветки:
    • Для обычных светодиодов - (0 - выкл | 1 - статичная | 2 - динамичная(дыхание))
    • Для адресных светодиодов - (0 - выкл | 1 - статичная | 2 - дыхание | 3 - дыхание со сменой цвета при затухании | 4 - бегущий огонь | 5 - бегущий огонь со сменой цвета | 6 - бегущий огонь с радугой | 7 - бегущий огонь с конфетти | 8 - волна | 9 - волна со сменой цвета | 10 - волна с радугой | 11 - волна с конфетти | 12 - плавная смена цвета | 13 - радуга | 14 - конфетти | 15 - свечи)

Большой набор мелодий будильника от bill01

Если есть вопросы/проблемы, или вы нашли баг, пишите в ЛС или ниже в теме.

Для тех кто хочет участвовать в тестировании прошивки можно скачать бета версию тут.

Огромное спасибо psyx86 за тестирование, видео-обзоры и идеи для прошивки!
Так-же есть базовая заготовка платы часов от psyx86 и плата-модуль для замены оптопар на транзисторы. Проекты для EasyEDA прикреплены во вложениях.
 

Вложения

Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
1,301
952
@Kinst, Всё тоже самое, анимации, индикация разделительной точки и тд.
 

MoonLight33

★✩✩✩✩✩✩
16 Мар 2023
106
35
Russia, Moscow
@Kinst, они могут работать совместно с внешними точками
также в некоторых режимах достаточно хорошо они смотрятся (например, отображение температуры 20,4)
 
  • Лойс +1
Реакции: Sergo_ST

Slovator

✩✩✩✩✩✩✩
21 Окт 2020
14
6
Подскажите, пожалуйста, есть ли в прошивке такой эффект ламп как "Лототрон" как на видео.... Если нет, планируется ли добавить?
?
 
  • Лойс +1
Реакции: Emiliano

Kinst

✩✩✩✩✩✩✩
31 Янв 2026
60
5
Не принципиально, но перфекцинизм не дает покоя. Уважаемый Автор прошивки точно скажет - прав я или нет. Имею вторые часы вот такие:

IMG_6067.jpeg

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

Наблюдаю баг: хотя "волна" идет верно, Ч-Ч-С-С-М-М, при автоотображении температуры и давления цветом выделяется не давление (секунды) а крайние правые лампы (минуты).

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

Я прав? Тога лечить это бесполезно. Точнее можно, но перелопатив логику прошивки...

ПОПРАВКА: для ЛАМП явно есть "назначение", ибо иначе секунды тоже были бы в крайних правых, но для СД подсветки только "порядок" для упрощения логики... Хотя на мой взгляд дальновиднее привязать СД к лампе...
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
1,301
952
@Slovator, На данный момент такого эффекта нет, в будущем может будет добавлен.

@Kinst, Порядок светодиодов должен соответствовать нормальному порядку ламп(ЧЧ:ММ:СС или СС:ММ:ЧЧ). Об этом должен позаботиться разработчик платы, при её разводке, с учётом особенностей работы софта. К тому-же такое расположение ламп в принципе никогда не предусматривалось.
 
  • Лойс +1
Реакции: dinamitch1

Kinst

✩✩✩✩✩✩✩
31 Янв 2026
60
5
такое расположение ламп в принципе никогда не предусматривалось.
Я так и понял. Штош.

Можно по точкам? Имею неоновые разделительные отдельные и точки (только левые) в индикаторах (все 6 с точками - ИН14 и ИН16). Правильно понимаю?

#define SECS_DOT 1 //тип основных секундных точек(0 - точка светодиод | 1 - точка неоновая лампа(1 шт) | 2 - точка неоновая лампа(2 шт) | 3 - точка в индикаторе | 4 - точка в декатроне)
#define DOTS_PORT_ENABLE 1 //включить использование порта разделительных точек в индикаторах(0 - порт не используется | 1 - прямое подключение к микроконтроллеру | 2 - подключение через сдвиговый регистр(только для динамического режима(x1 К155ИД1))
#define DOTS_SHIFT [???] //сместить левые разделительные точки на один разряд(для вертикального расположения ламп)(0 - точки не смещены | 1 - точки смещены)
#define DOTS_TYPE 0 //тип разделительных точек в индикаторах(0 - только левые точки | 1 - только правые точки | 2 - левые и правые точки)
#define DOTS_NUM 6 //количество ламп в которых используются разделительные точки(4 или 6)
#define DOTS_MAIN [not_in_use] //выбор расположения основных секундных точек(для режимов - статичная, мигающая, одинарный маятник))(только если используются левые и правые точки)(0 - только левая точка | 1 - только правая точка | 2 - одна левая и одна правая точка(внутри) | 3 - одна левая и одна правая точка(снаружи) | 4 - две левых и две правых точки)
#define DOTS_DIV [not_in_use] //выбор расположения разделительных точек(в режимах - температура, дата, радио)(только если используются левые и правые точки)(0 - левая точка | 1 - правая точка)

... и все? Сигнал управления точками снимается с RX (pin 2) ардуино.
 

Kinst

✩✩✩✩✩✩✩
31 Янв 2026
60
5
И про усилитель плиз подскажите. Правильно понимаю, схема у меня такая, не используется D13. На усилителе есть вход mute.

2026-02-26_21h03_08.png

Завожу D13 на mute (подтягивать к +5?), настройки

connection.h
#define AMP_PIN 13 //пин управления питанием усилителя(0..13)(pin D)
userConfig.h
#define AMP_PORT_ENABLE 1 //включить использование порта управления питанием усилителя(0 - порт не используется | 1 - порт используется)
#define AMP_POWER_MODE 0 //режим управления питанием усилителя(0 - низкий уровень | 1 - высокий уровень)
#define AMP_WAIT_TIME 100 //время ожидания активации усилителя(10..150)(мс)
 

shustryj

★✩✩✩✩✩✩
17 Мар 2025
93
10
@Kinst, правые не используете же? Не важно тогда, что в правых указано. (По умолчанию 1)
Второй пин ардуино - это D0 (RX)
 

psyx86

★★★★✩✩✩
31 Янв 2020
502
266
Завожу D13 на mute (подтягивать к +5?), настройки
Для начала нужно узнать какием сигналом происходит активация усилителя: высоким или низким, это можно узнать в даташит на усилитель, там же и рекомендации по подключению (нужна или нет подтяжка).
 

Kinst

✩✩✩✩✩✩✩
31 Янв 2026
60
5
Для начала нужно узнать какием сигналом происходит активация усилителя: высоким или низким, это можно узнать в даташит на усилитель, там же и рекомендации по подключению (нужна или нет подтяжка).
Это понятно... Active LOW - соответственно #define AMP_POWER_MODE 0 ... но на платке не разведен, придется к ноге подпаивать...

Но вычитал на гитхабе что:

D13 может быть использован только как пин сдвигового регистра - SCK.
D12 может быть использован для остальной периферии в качестве входа(цифровые кнопки, датчик движения, ИК приёмник, BUSY DF плеера, MISO SD карты).
D11 может быть использован только как пин сдвигового регистра - DATA.
D10 может быть использован для остальной периферии в качестве выхода(ВВ преобразователь, секундные точки, подсветка, бузер, управление питанием усилителя, RX DF плеера при использовании софтового UART, MOSI/SCK/CS SD карты, защёлка сдвигового регистра).


Теперь стало неясно - хотя D13 не подключен (по схеме используется если определенные датчики погоды, у меня же датчик на I2C), его нельзя для управления усилителем использовать... Можно только D10, а у меня на нем точки...
 
Изменено:

psyx86

★★★★✩✩✩
31 Янв 2020
502
266
Но вычитал на гитхабе что:
Видимо не до конца прочитали, речь об ограничениях при использовании сдвигового регистра. Если на вашей он плате отсутствует используйте свободный, если установлен то список ограничений действует.
 

Kinst

✩✩✩✩✩✩✩
31 Янв 2026
60
5
Это всё только при использовании сдвигового регистра
при использовании сдвигового регистра.
Понял. Не, есть только К155ИД1 1 шт...

Для начала нужно узнать какием сигналом происходит активация усилителя: высоким или низким, это можно узнать в даташит на усилитель, там же и рекомендации по подключению (нужна или нет подтяжка).
Странно, есть два входа - муть и управление питанием. Оба в даташите ACTIVE LOW, как я со своей низенькой колоколенки понял, что это значит активируется функция нулем. То сеть нулем мутируется или нулем включается. Но во всех схемах включения ноги либо висят, либо тупо к +5 подключены... То есть наоборот - 1 мутирует или включает.***

#define AMP_POWER_MODE = ??? указывает на что? Каким уровнем ВКЛЮЧАЕТСЯ питание? Сорян, что спрашиваю, ясное дело можно ткнуться на D13 и заставить что-нибудь сказать, но может и так кто подскажет, чтобы не перепрошивать...

Я в принципе копнул

#if AMP_POWER_MODE
#define AMP_DISABLE (BIT_CLEAR(AMP_PORT, AMP_BIT))
#define AMP_ENABLE (BIT_SET(AMP_PORT, AMP_BIT))
#define AMP_CHK (BIT_READ(AMP_PORT, AMP_BIT))
#else
#define AMP_DISABLE (BIT_SET(AMP_PORT, AMP_BIT))
#define AMP_ENABLE (BIT_CLEAR(AMP_PORT, AMP_BIT))
#define AMP_CHK (BIT_READ_INV(AMP_PORT, AMP_BIT))
#endif


Как я вижу, если AMP_POWER_MODE = 1 то выключение усилителя 0 включение 1... То есть мне надо

#define AMP_POWER_MODE = 1

Я прав?

*** я тупой, конечно же ACTIVE LOW - то есть 0 = муть, 0 = шатдаун. То есть 1&1 = усилитель работает. И в даташите черным по белому - подтяжка у входа шатдауна есть, можно оставить болтаться.
 

psyx86

★★★★✩✩✩
31 Янв 2020
502
266
@Kinst,
Усилитель на какой микросхеме? Готовый модуль или на плате разведен?
 

Kinst

✩✩✩✩✩✩✩
31 Янв 2026
60
5
Самая фонящая микросхема из всех что я пробовал в этом проекте часов.
И да, активируется высоким сигналом.
Тут так: 1. В отзывах на алихе писали что не шумит. 2. Мельком встречал способ снижения шумов путем навески кондеров на выход и, главное, 3. Нарисовав монструозный корпус, забыл про усилитель - и этот единственный влез по габаритам.

2026-02-28_09h14_18.png
 

psyx86

★★★★✩✩✩
31 Янв 2020
502
266
В отзывах на алихе писали что не шумит. 2. Мельком встречал способ снижения шумов путем навески кондеров на выход и, главное
Это справедливо для других проектов, где питание стабилизированное, а в идеале от АКБ. Тогда шум отсутствует. Я пробовал самостоятельно разводить свою плату под микросхему, лучше чем модуль вышло, но фон в схеме часов ни куда окончательно не уходил. Поэтому мы добавили функцию активации усилителя, чтобы в момент простоя не фонил.
Как писал ранее из всех использованных, лучше себя показал усилитель 8002А, фон минимальный, даже рассыпухой по плате часов.
 

alexHV

✩✩✩✩✩✩✩
19 Апр 2025
36
2
Всем привет ! Столкнулся с такой проблемой : из-за блокировок происходит какой-то новый вид бана и часы не могут синхронизировать погоду без ВПН . ПРЕДПОЛАГАЮ, что из-за частого обращения на какой-то "мутный" сервер по мнению провайдера одного и того же устройства (NTP при этом исправно работает , видимо в БС) его банят . Проблема воспроизводится при прямом подключении к обычной сети интернет без впн на нескольких устройтвах. Подскажите пожалуйста, не было ли мысли добавить какой-то отечественный клиент типа "Я-погода" или что-то еще ?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,301
952
@alexHV, Другие сервисы сложны в настройке пользователем. Для них требуется получение ключей апи, поиска кодов городов и тд.

Вы уверены что блокировка со стороны провайдера, а не со стороны вашего сетевого оборудования в котором работают сервисы по "ускорению" некоторых сайтов?
Как проявляется отсутствие синхронизации погоды? Какая ошибка висит во вкладке сетевых настроек? Что происходит по нажатию на кнопку "Обновить погоду"?
 

alexHV

✩✩✩✩✩✩✩
19 Апр 2025
36
2
@Sergo_ST,
Проблема не конкретно у меня , а у друга . У него нет никаких ускорялок , вообще нет . У меня все в сети с ускорялками и проблем нет . Сначала у него отображается "попытка подключения " на погодном сервисе , потом "ожидание ответа" , потом "ошибка при запросе данных"

@alexHV,и притом устройства два . Одно включенно постоянно было и на нем началась проблема . Для проверки включил и второе устройство - тоже самое . Устройства не первый день в эксплуатации . Очень похоже на "замедление"
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,301
952
@alexHV, И так при каждом ручном запросе?
Пусть попробует с пк или телефона открыть open-meteo.com в тот момент когда в часах не удается получить ответ.
 

alexHV

✩✩✩✩✩✩✩
19 Апр 2025
36
2
Вот тут и прикол , что с пк или телефона можно даже сделать такой же GET запрос как делают часы и он проходит . А на двух часах нет . Будто какой-то блок по паттерну поведения устройства