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

Sergo_ST

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

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



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

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

Поддерживаются:
  • MH2024K-24*
  • GD3200B
  • YX5200-24
  • AB23A797393.1-74
  • AB23A795250.1-74
  • 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 режима подсветки для обычных диодов и 15 для адресных WS2812B.
  • 4 режима анимации секунд для декатрона.
  • 5 режимов работы секундных точек и 2 для двух неоновых ламп / 6 для разделительных точек.
  • Возможность создания собственных мелодий будильника.
  • Система контроля основных параметров часов(Отображение кодов ошибок).
  • Меню отладки(Для опытных пользователей).
  • Программирование кнопок ИК пульта из меню отладки.
  • Веб-интерфейс для настройки и мониторинга(Требуется наличие есп).
  • Обновление прошивки часов через веб интерфейс(Требуется наличие есп).
  • Автоматическое обнаружение других часов в локальной сети wifi(Требуется наличие есп).
  • Добавить управление подсветкой для дополнительных светодиодов подсветки ламп/корпуса.
  • Добавить возможность использовать отдельный светодиод для индикации состояния будильника.
  • Добавить поддержку датчика освещения BH1750.
  • Добавить поддержку двух символьных ламп.
  • Добавить поддержку статической индикации.

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

Если при работе часов возникла какая-то проблема, то при старте часов будет звуковой код, а на индикаторах отобразится код ошибки:
  • 0001 - Нет связи с модулем DS3231(модуль часов неисправен или проблемы с шиной i2c).
  • 0002 - Сбой осциллятора DS3231(батарейка модуля часов разряжена или проблемы с тактированием модуля часов).
  • 0003 - Слишком короткий сигнал SQW(во время работы часов были обнаружены помехи или неверный сигнал на SQW).
  • 0004 - Слишком длинный сигнала SQW(пропал сигнал SQW во время работы часов или сигнал отсутствовал при запуске).
  • 0005 - Выбранный датчик температуры не обнаружен(проверить подключение датчика температуры).
  • 0006 - Слишком низкое или слишком высокое напряжение питания(проверить источник питания).
  • 0007 - Сбой памяти EEPROM(повреждение данных, если ошибка будет повторятся слишком часто - износ EEPROM).
  • 0008 - Софтовая перезагрузка(говорит о нестабильности программы или об аппаратных проблемах с мк).
  • 0009 - Сбой работы преобразователя(регистры таймера были неожиданно изменены).
  • 0010 - Переполнение заполнения шим преобразователя(превышен верхний предел заполнения шим).
  • 0011 - Переполнение стека(утечка памяти).
  • 0012 - Переполнение тиков времени(основная программа не отвечает).
  • 0013 - Сбой работы динамической индикации(регистры таймера были неожиданно изменены или превышен предел регистра сравнения).
Если по какой-то причине нету сигнала от SQW или если во время работы сигнал он выйдет за рамки то часы перейдут на внутренний источник тактирования и по возможности будут синхронизироваться с модулем часов.
  • 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 карты, защёлка сдвигового регистра).

Модуль ESP8266 подключается к шине I2C, пины которые модуль ESP8266 использует в качестве SCL/SDA нужно указать в прошивке модуля ESP8266.
При использовании модуля ESP8266 подтяжку шины I2C желательно организовывать от источника 3.3в.
Подтяжка шины должна быть строго только в одном месте!
Питать модуль ESP8266 от вывода 3.3 ардуино нельзя!
Нужно использовать линейный стабилизатор или DC-DC преобразователь на 3.3в!


Инструкцию по загрузке прошивки и файловой системы смотрите в шапке прошивки веб интерфейса.
Обновление прошивки часов через веб интерфейс возможна только после записи кастомного загрузчика!
Порядок записи нового загрузчика(потребуется isp программатор и программа avrdude_prog):
  1. Записываем кастомный загрузчик который идёт с прошивкой(i2c_bootloader_v2.hex).
  2. Настраиваем фьюзы(выставить вручную по картинке в папке загрузчика).
  3. Загружаем прошивку в есп(по UART).
  4. Компилируем прошивку часов(нужно выбрать плату "Arduino UNO").
  5. Экспортируем прошивку часов в hex(скетч -> экспорт бинарного файла).
  6. Заходим в веб интерфейс, вкладка "Обновление", загружаем файл прошивки часов(который без подписи "with_bootloader")(поддерживаемые расширения файла - .hex).
  7. Зажимаем кнопку ресет на мк часов(нужно только при первой загрузке прошивки или при нештатной ситуации).
  8. Ждём появления окна о начале загрузки прошивки(появится надпись "Подключение...").
  9. Отпускаем кнопку ресет на мк часов(появится надпись "Загрузка...").
  10. Ждём окончания загрузки(появится надпись "Загрузка прошивки завершена").
Внимание! После записи кастомного загрузчика прошивать часы нужно только через веб интерфейс, запись прошивки часов через программатор затрет загрузчик!
web1.pngweb2.pngweb3.pngweb4.pngweb5.pngweb6.pngweb7.pngweb8.pngweb9.pngweb10.pngweb11.pngweb12.pngweb13.png
  1. После включения питания часов автоматически создаётся точка доступа "NixieClockAP"(После подключения к роутеру отключится через 5 мин).
  2. С любого устройства(Смартфон, ПК и пр.) ищем сеть "NixieClockAP" и подключаемся к ней(Пароль по умолчанию 1234567890).
  3. Далее с этого же устройства в браузере пишем в адресной строке: http://192.168.4.4/(Если установлено приложение для Андроид то достаточно просто открыть его).
  4. Далее переходим во вкладку «Сетевые настройки» и в блоке «Локальная сеть WIFI» выбираем свой роутер из списка и вводим пароль(Если нужной сети нет или ваша сеть скрыта, необходимо нажать на ссылку "Ручной режим").
  5. При успешном соединении с роутером будет выдан IP адрес для доступа к веб интерфейсу по локальной сети(Далее всё управление в локальной сети будет именно по этому адресу).

Отладка: Удерживать "левую" кнопку при включении питания
Ввод пароля:
  • Клик по "средней кнопке" - переход между разрядами
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - подтвердить ввод пароля
Меню отладки:
  • Клик по "средней кнопке" - выбор пункта отладки
  • Клик по "левой кнопке" - уменьшить значение
  • Клик по "правой кнопке" - увеличить значение
  • Удержать "среднюю кнопку" - выход к часам
Пункты отладки:
  • 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ч))
    • Плеер(Формат времени(12ч | 24ч) : Глюки(0 - выкл | 1 - вкл))
  • 02 -
    • Бузер(Глюки(0 - выкл | 1 - вкл))
    • Плеер(Громкость озвучки : Голос озвучки (0 - Алёна | 1 - Филипп))
  • 03 -
    • Бузер(Звук кнопок и секунд(0 - выкл | 1 - только звук кнопок | 2 - звук кнопок и секунд))
    • Плеер(Озвучка часа(Температура/Новый час) : Озвучка действий(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-ти ламп и если используются левые и правые точки))
    • SECS_DOT 2 - (0 - выкл | 1 - статичная | 2 - мигает один раз в секунду | 3 - мигает два раза в секунду | 4 - динамичная(плавно мигает) | 5 - маятник(мигает один раз в секунду) | 6 - маятник(плавно мигает)), (для точек в индикаторах)(7 - мигающая | 8 - бегущая | 9 - змейка | 10 - резинка | 11 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 12 - двойной маятник(только для 6-ти ламп и если используются левые и правые точки))
    • SECS_DOT 3 - (0 - выкл | 1 - статичная | 2 - мигает один раз в секунду | 3 - мигает два раза в секунду | 4 - мигающая | 5 - бегущая | 6 - змейка | 7 - резинка | 8 - одинарный маятник(только для 6-ти ламп или если используются левые и правые точки) | 9 - двойной маятник(только для 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 - конфетти)

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

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

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

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

Вложения

Изменено:

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
Пробуйте программатором перешить МК, если повторится ошибка, только замена МК
ардуина новая, прошивал через ее встроенный уарт на ее стандартном бутлоадере.
из пакета - прошил РОВНО 1 раз и на старте получил ошибку 0001.
перепрошил - получил 0001, 0007 и 0009
снял верхнюю, пересмотрел всю пайку под микроскопом даже
собрал - ошибки нет...
....30 минут работы - перезагрузка - 0007...
выдернул-воткнул - ошибки нет
и т.д.


в общем - готовлюсь к перепайке ардуины =(

спасибо!
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
@AStartsev, Да, как и сказал @psyx86, скорее всего проблема в камне, тк флаг этой ошибки устанавливается когда при запуске не совпадает одна из контрольных сумм настроек. Программно это скорее всего не исправить, но я бы попробывал сместить офсет настроек еепром например на ячейку 256 - EEPROM_BLOCK_NULL 256, возможно Вам повезёт и проблемные ячейки находятся только в начале...
 

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
сместить офсет настроек еепром например на ячейку 256 - EEPROM_BLOCK_NULL 256, возможно Вам повезёт и проблемные ячейки находятся только в начале...
Спасибо!
попробую - отпишусь по результату

UPD: EEPROM_BLOCK_NULL 256 - бабуйня вышла и сброс настроек не помог
поставил EEPROM_BLOCK_NULL128 - пока полет нормальный... понаблюдаю

UPD: EEPROM_BLOCK_NULL128 - не взлетело: 0007 на месте =(

а есть-ли какой-нибудь скетч, который проверяет пригодность ардуины для использования в часах?
я закупаю по 50шт их на алике пакетами и вот с таким столкнулся впервые.

UPD: нашел тест https://gist.github.com/gutierrezps/08ad43695bf920d1c32c2c34328171ad (не уверен, что он полноценно тестирует)

EEPROM test:
Starting EEPROM test
EEPROM size: 1024
Writing 170
PASS
Writing 85
PASS
Writing 0
PASS
EEPROM test finished without errors
UPD: после ряда проведенных тестов EEPROM несколькими найденными скетчами - оно вроде ожило тьфу-тьфу-тьфу.

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

UPD: чудес не бывает - 0007 на месте. Это на новой ардуине. У меня стойкое убеждение, что решается неким таймаутом в прошивке, но не знаю каким =( Попалась просто чуть туповатая ардуина: то читает, то не успевает. При запуске "по холодному" - ошибки нет, а только по горячему.
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
@AStartsev, Дело не в "Таймауте", как вы заразились, а в самом камне. Какая маркировка нанесена на атмеге?

И Вы прошивку откуда брали? Вам продавец скинул уже настроенную или Вы скачивали с официального репозитория на гитхаб?
 

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
И Вы прошивку откуда брали?
с официального, без правок.

Какая маркировка нанесена на атмеге?
1775243072796.png
у меня целый пакет таких: на них строю часы (более 10 удачных). Первый раз столкнулся с проблемой eeprom.

UPD: может есть некий тест, который первым запуском что-то пишет в eeprom, а потом в loop-е это читает, вычисляет контрольную сумму и т.п. - ну что делает Ваша прошивка, прежде чем взвести ошибку?
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
@AStartsev, Есть ISP программатор или вторая ардуина? Прошивка из бета ветки, или основной релиз?

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

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
Есть ISP программатор или вторая ардуина?
есть программатор (покупал для смены загрузчиков), но нет прищепки с иглами, а на этой ардуине я не запаял ISP разъем =(
теоретически - не сложно подпаяться
она прекрасно прошивается через свой uart, но как я понял - тема к другому методу идет?

Прошивка из бета ветки, или основной релиз?
Прошивка релизная. Бету не пробовал.

При запуске проверяется контрольная сумма для каждого блока настроек, если она не совпадает
а так если сделать: несколько повторов чтения до "удачи" и уже при исчерпании их количества - ошибка
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
она прекрасно прошивается через свой uart
Неизвестно что за загрузчик и фьюзы там зашиты, лучше попробовать установить нужные фьюзы заново и прошить мк напрямую без загрузчика. По крайней мере это даст понимание что проблема точно в еепром мк.

а так если сделать
Зачем? От того что мы будем читать по сто раз ячейку с неверными битами ничего не изменится.
 

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
что мы будем читать по сто раз ячейку с неверными битами ничего не изменится
ну так она же записана и в ней верные данные, которые туда записаны единажды и они читаются от туда нормально 1-2-3... раз, но приходит момент, когда "не могу прочесть" и 0007, после чего ячейка перезаписывается.
Вот уже 2 дня не видел ошибки при перезагрузке часов (как через веб, так и по питанию)
Именно это все в купе - наталкивает на мысль, что процедуре надо дать больше одной попытки на чтение

попробовать установить нужные фьюзы заново и прошить мк напрямую без загрузчика
пока никогда так не делал - нет опыта =(
в прошивке читал про альтернативный загрузчик но так его и не попробовал, т.к. ESP-01 и не было необходимости ардуину шить под несбыточный OTA
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
Проблема не с фактом чтения ячейки, а с её содержимым.
т.е. Вы говорите о том, что вот сейчас там данные на месте, но потом они исчезают и именно это приводит к ошибке, а не невозможность их прочесть?
я просто помню еще времена чтения данных с магнитных накопителей, когда в прошивке стоял автоповтор чтения до удачного по контрольной сумме (это когда дисковод делал "туда-сюда" много раз)
А тут я понимаю, что чтение ГАРАНТИРОВАННОЕ (не может быть ошибочным само по себе)?

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

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
магнитных накопителей
У нас не магнитный накопитель)
Поделитесь инструкцией, как это сделать?
Подключаете ISP программатор, в Ардуино ИДЕ выбираете плату уно, далее
Инструменты -> Программатор -> USBAsp, Инструменты -> Записать загрузчик, Скетч -> Загрузить через программатор.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
@AStartsev, Запись загрузчика как раз и перевыставляет фьюзы. Но лучше конечно установить ядро миникор, там есть вариант без загрузчика, так будет правильнее...
 

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
Запись загрузчика как раз и перевыставляет фьюзы
Спасибо!
Заказал IPS-иглы - дождусь и прошью. Пока ардуина живет норм и за последнее время срыва в 0007 не было (уже корпус на часы одел).

PS - если тема декатрона развивается, то я тут написал несколько динамических эффектов, если интересно. Статический эффект с шагающей по кругу точной не очень интересен, как показывает практика.
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
@AStartsev, У нас немного другой подход к работе с декатроном, можно отображать только или одну произвольную точку или одну произвольную линию единовременно. По умолчанию есть несколько вариантов анимаций, помимо "шагающей точки".
Анимации на ваших видео в том или ином виде уже присутствуют в прошивке.
Если есть предложения по анимациям которые можно реализовать одной точкой или линией, пишите/показывайте, в будущем возможно будут добавлены.
 
Изменено:

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
Если есть предложения по анимациям
если знать, что уже реализовано, то можно подумать (может есть видосы где? странно, что на ютубе до сих пор нет канала с проектом)
я себе ставил цель динамического (линия) отображения (возможно, что там еще надо времена пересмотреть)
 

Sergo_ST

★★★★★★✩
15 Мар 2020
1,233
926
@AStartsev, В открытом доступе нет нигде видео с эффектами тк пока мало кто собирал часы с декатроном. Максимум могу в тг скинуть видео с тестов некоторых эффектов, но там нет ничего такого особо)
Заниматься каким-либо каналом на ют или где ещё нет ни времени ни желания, поэтому его и нет)
 

AleksVM

✩✩✩✩✩✩✩
25 Ноя 2020
13
0
Изменено:

vladis123

✩✩✩✩✩✩✩
12 Мар 2026
1
0
подскажите, почему при сработке звукового события "новый час" отрубается wifi (моргает красный треугольник и управление с приложения зависает) , если вручную посылать звуковые сигналы например выбирать алена или филип или запустить сигнал будильника то wifi не отваливается, звук MH2024K-24 , wifi esp-01.
 

AStartsev

✩✩✩✩✩✩✩
24 Дек 2024
13
0
Использовал в двух часах
плата-модуль для замены оптопар на транзисторы
IMG_5414_cr.jpg
(Спасибо Ns3D за платы)
транзисторы и резисторы с ОЗОНа 1%

что я заметил: на ключах лампы немного блеклые, если сравнивать их же на оптронах (платы от Ns3D позволяют это переключать перемычками)

я правильно понимаю, что тайминги в прошивки рассчитаны на время закрытия оптрона, которое более, чем в 10 раз больше, чем у времени транзисторного ключа? Где в прошивке можно увеличить длительность импульса горения или подправить (сдвинуть) время начала закрытия (снятия импульса) для анодов?
 

MoonLight33

★✩✩✩✩✩✩
16 Мар 2023
101
32
Russia, Moscow
@AStartsev, я бы рекомендовал токоограничивающие резисторы на плате замены оптопар на транзисторы поставить меньше чем 10 кОм
На Гайверовской плате стоит один резисторы 10 кОм на все лампы, на транзисторной плате по 10 кОм на каждую лампу
Лучше на транзисторной плате поставить на 4.7 - 6.8 кОм, например, для ИН-12 или ИН-14