- Добавлен стартовый handshake: ожидание строки версии контроллера, пауза 2000 мс и подтверждение готовности только по READY!. - Исправлена работа COM-буфера и аппаратного сброса через RTS, добавлены модульные тесты протокола. - Добавлена нативная сборка для Debian 13 x86_64 и обновлена документация. - Улучшена очистка Windows-сборки и кроссплатформенная обработка devnull.
58 KiB
#Периферия
by: Паша Николаевич
[!info] Информация Это раздел с информацией о плате периферийного контроллера. Информацию о плате для витрины призов смотреть в Витрина призов Текущая описанная прошивка:
ver_2.3.6_no_auth_prizes.
[!info] Общие сведения
- Плата подключается к компьютеру по переходу USB - COM порт.
- В системе определяется как компорт.
- Параметры: 115200-8-N-1-нет
Оглавление:
- #Система команд
- #Команды
- #Список команд
- #Примечания
- #Служебные команды
- #Программы адресных диодов
- #Обновление прошивки платы
Система команд
- Общение - строка, заканчивающаяся кодами (0xD)+(0xA), достаточно любого из них для окончания строки
- Минимально – ДВА (2, two) символа. 00+<Enter> – команда, а 0+<Enter> – уже нет
- Максимальная длина входной строки - 199 символов
- Таймаут - 100 миллисекунд, если строка за это время не окончилась - идет игнорирование команды
Команды получаемые от компьютера помещаются в очередь и выполняются последовательно, кроме команд "сброс" (00) и "очистка очереди".
Размер очереди команд - 100 строк. Команды 00 и 90 обрабатываются сразу.
Шифрование обмена: двойное рукопожатие при помощи AES256 c фиксированным ключом.
Кнопка SERVICE на плате:
- Если ее зажать и удержать при включении – выполнится сброс настроек контроллера
- При работе – посылает команду «SERVICE – предлагая компьютеру перейти в режим настройки игровой программы
[!warning] Внимание! Имеются два режима работы: SILENT (тихий режим) и DEVELOPER (режим разработки, с полными логами).
Переключение режимов: Команда
01временно переключает режим логирования. В релизной версии команда может быть удалена.
Авторизация
После загрузки контроллер не принимает никаких команд, кроме запросов на авторизацию.
После открытия COM-порта программа выполняет штатный аппаратный сброс контроллера
коротким импульсом RTS и затем ожидает отдельную строку
periphery controller ver_<номер версии и комментарий>. До её получения программа
не отправляет контроллеру команды. После получения строки программа выдерживает паузу
2000 мс и только затем начинает авторизацию.
Запрос – требование зашифровать строку шестнадцатеричных символов с помощью AES256 алгоритма, используя известный ключ.
Компьютер генерирует случайную последовательность из 16 байт и отправляет ее контроллеру на шифрование. Тот ее шифрует и отвечает. Компьютер расшифровывает и проверяет на совпадение.
Можно считать, что контроллер проверку прошел.
==Однако==, чтобы проверить правильность управляющей программы контроллер выдает встречный запрос на шифровку. Если придет правильный ответ контроллер выдаст “READY” и будет исполнять все поступающие команды.
Алгоритм авторизации
- 07 – запрос авторизации от компа (16 байт или 32 HEX-символа): Пример: 078C704E9C4CBF4BA2255741C566FB0F7A
- Встречный запрос от контроллера: CHAL<symbols> (16 байт или 32 HEX-символа) Пример: CHAL3D821AA288C153DF7C521E03C5FB9351
- Компьютеру следует ответить: 08<symbols>. (16 байт или 32 HEX-символа), зашифрованных AES256 Пример: 08FC9D59F43ACB06A382E764B101B10B5B
- Контроллер ответит на первый запрос компа: RAES<symbols> (16 байт или 32 HEX-символа) Пример: RAES99ED731648AB8C1709CC4C3C8C3BB0E1
- Контроллер может отправить промежуточные ответы
AUTH_PC_OKи статус. - Авторизация считается полностью завершённой только после получения отдельной точной
строки
READY!. ОтветыRAES,AUTH_PC_OKи любые другие строки сами по себе не означают успешного завершения авторизации.
Команды
Список команд
| Команда | Назначение, примеры, ответы |
|---|---|
| #Служебные команды | Перезагрузить контроллер (RESET) |
| #Служебные команды | Отладочная. включает-выключает подробные логи. В релизе будет отключена |
| #Служебные команды | Подготовиться к приему файла. освободить место, отформатировать встроенную файловую, проверить хватит ли места. Например, 02356987 - заявка на файл обновления размером 356987 байт.Выполняется около 15 секунд, после чего весь прием данных в порту заносится в файл "update.bin". Ответ при приеме файла - каждый блок (4096) - размер принятого. По окончании - переход снова в режим команд (подробнее – Обновление). |
| #Служебные команды | Показать содержимое SPIFFS |
| #Служебные команды | Запустить ОТА обновление с ранее записанным файлом SPIFFS: /update.bin |
| #Служебные команды | Показать версию прошивки (указана в дефолтах) |
| #Служебные команды | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером |
| #Авторизация | Безопасность (запрос авторизации от компа. На этот запрос создается рандомный запрос навстречу. См. #Алгоритм авторизации) |
| #Авторизация | Безопасность (прием ответа от компьютера на запрос 07. См. #Алгоритм авторизации) |
| #Служебные команды | Сброс EEPROM (параметром - MAC без двоеточий, иначе не сбросится) |
| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью 200 мс (сколько приняли койнов, столько и подтверждений быть должно) |
| 20X | Установить состояние выходов - всего выходов 8, давать их двоичное состояние. Например, 203 - вывести 1 и 2 выходы по единичке, остальные - нолики. Соответственно, выход на разъеме будет "прижат" к земле. |
| 21XY | Установить состояние выхода номер Х в -> Y [0,1,2(инверсия)]. Примеры: 2131 - Включить 3 по индексу выход2170 - Выключить 7 по индексу выход |
| #Отдельный раздел для призовой стойки | Витрина призов (см. #Отдельный раздел для призовой стойки): 25 - запрос состояния; 2501B - выдать приз из ячейки B; 2511B - открыть ячейку B; 25991/25990 - включить/выключить авторежим витрины. |
| 30X | Хоппер 1.301 - Включить мотор хоппера300 - Выключить мотор хоппера309 - Выдать приз (в авторежиме1) |
| 40X | Хоппер 2. Аналогично |
| #Дополнительные цифровые GPIO | Дополнительные цифровые GPIO25/GPIO26 (см. #Дополнительные цифровые GPIO): 50 - запрос состояния; 5001P - конфигурация входа; 5005P - запрос уровня входа; 5010P - установка выходов. |
| #Программы адресных диодов] | Выбор программы адресных диодов YY по каналу X. Для программы 08 дополнительно передается цвет RRRGGGBBB, для 8012../8013.. - direct-группы из проекта 1 на 4-й ленте, где принимаются только 00 и 01..03 (см. #Программы адресных диодов). |
| #Отдельный раздел для морского боя VR] | Эффекты активной VM-матрицы (выбирается командой 96). Для матрицы s_b: управляющие 00/01;тесты 25;direct-шкалы 30..34;базовые 10..22;спец. 40..49;заливки 80..82.Для dan_ro/rz:эффекты 51..56;группа 8550XX принудительно задаёт dan_ro.SSS — длительность в секундах (см. #Отдельный раздел для морского боя VR). |
| #Программы адресных диодов | Без параметра отключает процесс рендеринга эффектов (чтобы освободить оперативную память) |
| #Отдельный раздел для Данро] | Данро (принудительная матрица dan_ro): 855000 — очистить экран; 855001 — автокарусель вкл;эффекты 855010..855016;SSS — длительность в секундах (см. #Отдельный раздел для Данро). |
| #Отдельный раздел для RZ] | Резервная панель RZ (принудительная матрица rz): 856000 — очистить экран; 856001 — автокарусель вкл; эффекты 856010..856016; SSS — длительность в секундах (см. #Отдельный раздел для резервной панели RZ). |
| #Отдельный раздел для RZ] | Резервная панель RZ: сначала 96rz — выбрать матрицу, затем 85 — стоп; 8500/8501 — авто выкл/вкл; эффекты 8551..8556; тесты 8525TVVV (см. #Отдельный раздел для резервной панели RZ). |
| #Настройки адресной подсветки | Настройки WS2812: C=0 - все 4 ленты, C=1/2/3 - 2-й/3-й/4-й физический канал; K=0 - порядок цветов (0 RGB, 1 RBG, 2 BRG, 3 BGR, 4 GRB, 5 GBR), K=1 - яркость 0..255, K=2 - гамма 0/1.Примеры: 8901255 - яркость всех каналов 255; 89021 - включить гамму; 89304 - порядок GRB для 4-го физического канала. |
| 90 | Очистить очередь команд |
| 91 | Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде. Для уменьшения объема передаваемой информации, преобразуется в десятичное число Примеры: INPUT67108863 (11111111111111111111111111) - все кнопки не нажатыINPUT67108861 (11111111111111111111111101) - нажата вторая кнопка |
| 91X | Дополнительно: задать время антидребезга платы (10..100 для штатного использования; по умолчанию 50 мс).Например, 9110 - установить антидребезг на 10 мс |
| 92 | Запрос значения аналоговых входов (отключает автовывод) - ответ в формате ADC0,0,0,0.Всего 4 аналоговых входа |
| 92X | Периодический автовывод значений аналоговых входов. Например, 92100 - каждые 100 милисекунд выдавать значения ADC (50..5000) |
| 93 | Запрос global_summa (число коинов, нестираемо) |
| #Карты матриц | Без параметра — запрос текущей активной VM-матрицы (ответ: MATRIX:<name> ROWS:<n> COLS:<n>).С параметром — выбор и сохранение матрицы в NVS. Список доступных карт см. #Карты матриц. Примеры: 96s_b — морской бой;96dan_ro — Данро;96rz — резервная панель. |
| 97 | Показать сохранённое в NVS имя активной матрицы. Формат вывода: ROLE : <имя> (до 20 символов). |
| 98 | Запрос загруженности ядер, оперативки, свободного места в памяти |
| 99 | Запрос статуса |
Примечания
Служебные команды
02…09 – команды относятся к служебным (обновление прошивки и двойное рукопожатие)
[!warning] Внимание! Перешивается только основная программа, не трогается таблица разделов и буты. Поэтому контроллер должен шиться изначально в файловую систему «OTA0-1M+OTA1-1M+SpiFFS-1.7M». При прошивке зашивается ключ шифрования и AES ключ авторизации. Прошивка для обновления идет бин-файлом, уже криптованным.
Программы адресных диодов
8XYY[PARAMS] - выбор программы адресных диодов, где X - номер канала в формате одной цифры, а YY - номер параметра базового эффекта.
Программа зависит от автомата и не может быть унифицирована. Именно для этого требуется обновление прошивки контроллера.
Список базовых эффектов:
00– ничего не выводить в канал01– повторный периодический вывод буфера02– погасить (выводить нолики на всю длину)03– красный04– зеленый05- синий06- серый (100, 100, 100)07- белый08RRRGGGBBB- пользовательский цвет, каждая компонента 3 десятичные цифры (000..255)09- выводить ЛГБТ переливы10- морская волна для шапки морского боя11- автоперебор медленных эффектов шапки морского боя
Для бродяг морей 4 канал - монетник и выдача приза:
8012хх
8013хх
1200- очистить обе direct-группы на 4-й ленте;1201..1203- direct-группа 1, эффекты 1..31300- очистить обе direct-группы на 4-й ленте;1301..1303- direct-группа 2, эффекты 1..3
Настройки адресной подсветки
89CKP меняет настройки вывода WS2812. Это не выбор эффекта, а настройка того, как уже рассчитанный цвет будет записан в буфер конкретной ленты:
C- канал:0для всех каналов подсветки,0..3для конкретного канала;K- настройка:0порядок цветов,1яркость,2гамма-коррекция;P- значение настройки. Может состоять из нескольких цифр, например255для яркости. Если отправить только89CKбезP, параметр будет принят как0, поэтому лучше передаватьPявно.
K |
P |
Что меняет | Сохранение |
|---|---|---|---|
0 |
0..5 |
Порядок цветов в буфере WS2812 | Сохраняется в NVS |
1 |
0..255 |
Яркость ленты | Только до перезагрузки |
2 |
0/1 |
Гамма-коррекция: 1 включить, 0 выключить |
Только до перезагрузки |
Порядки цвета для K=0:
P |
Порядок |
|---|---|
0 |
RGB |
1 |
RBG |
2 |
BRG |
3 |
BGR |
4 |
GRB |
5 |
GBR |
Для проверки удобно включать тестовые цвета:
8003- все ленты красным;8004- все ленты зеленым;8005- все ленты синим.
Если какая-то лента показывает цвета неверно, поменяйте ее порядок через 89C0P.
Примеры порядка цветов
| Команда | Что делает |
|---|---|
89004 |
Установить GRB для всех лент |
89104 |
Установить GRB для 2-го физического канала |
89204 |
Установить GRB для 3-го физического канала |
89304 |
Установить GRB для 4-го физического канала |
89000 |
Установить RGB для всех лент |
89300 |
Установить RGB для 4-го физического канала |
Примеры яркости и гаммы
| Команда | Что делает |
|---|---|
8901255 |
Яркость 255 для всех лент |
8901128 |
Яркость 128 для всех лент |
8931128 |
Яркость 128 для 4-го физического канала |
89021 |
Включить гамма-коррекцию для всех лент |
89020 |
Выключить гамма-коррекцию для всех лент |
89321 |
Включить гамма-коррекцию для 4-го физического канала |
Карты матриц
Выбор карты командой 96<имя>, сохраняется в NVS, восстанавливается при загрузке.
Морской бой (s_b):
s_b— основная карта, 58×42, 4 каналаs_b_v1— версия 1, 65×69, 3 канала, 4 канал шкалы (3 шкалы)s_b_v2— версия 2, 65×69, 3 канала, 4 канал шкалы (4 шкалы)
Данро (dan_ro):
dan_ro— основная карта, 61×19, 2 стрипа (strip 0 зеркалируется в strip 1)dan_ro_v1— версия 1, 61×19, 1 стрип (без зеркала)
Резервная панель RZ (rz):
rz— основная карта, 61×19, 2 стрипа (strip 0 зеркалируется в strip 1)rz_v1— версия 1, 61×19, 1 стрип (без зеркала)
Специфичные программы
Отдельный раздел для призовой стойки
20- режим простоя призовой стойки21BCF- подсветить полку призовой стойки:Bячейка1..5,Cцвет,Fмигание0/122- красная мигающая тревога23- ЛГБТ переливы на всю ленту90- выводить внешний буфер, который заполняет рендер виртуальной панели
25CCB:
CC– подкоманда;B– номер ячейки1..5, если подкоманда работает с ячейкой.
| Формат | Назначение |
|---|---|
25 |
Показать состояние всех ячеек |
2501B |
Выдать приз из ячейки B |
2511B |
Открыть ячейку B без списания приза |
25991 |
Включить автозапуск режима призовой стойки и перезагрузиться через 3 сек |
25990 |
Выключить автозапуск режима призовой стойки и перезагрузиться через 3 сек |
Ответы:
BOX<n>_OPEN– ячейка открыта;BOX<n>_ERROR– ячейка не открылась или нет приза;BOX<n>_OK– ячейка закрыта и содержит приз;BOX<n>_OK+CARD– в ячейке есть приз и привязанная RFID-карта;BOX<n>_EMPTY– ячейка пуста.
Отдельный раздел для Бродяги морей
81XX[NN] управляет двумя отдельными direct-объектами Бродяги морей. Эта группа похожа на direct-шкалы 8530..8534, но не является частью команды 85 и используется отдельно от панелей 85, 86 и 87.
XX- подкоманда объекта;NN- уровень заполнения объекта;- короткие команды
81311..81313- эффекты для объекта 1; - короткие команды
81321..81323- эффекты для объекта 2; - если нужен ручной уровень
1..3, передавайте уровень с ведущим нулем:813101..813103или813201..813203; - эффекты
81311..81313и81321..81323ускорены примерно в 3 раза, цветовые переходы сглажены.
| Команда | Назначение | Максимальный уровень |
|---|---|---|
8130 |
Очистить оба объекта | - |
8131NN |
Объект 1. Заполнить шкалу градиентом красный -> фиолетовый -> синий | 21 |
81311 |
Эффект 1 объекта 1: плавный перелив синий -> фиолетовый -> фиолетово-красный | - |
81312 |
Эффект 2 объекта 1: плавный перелив фиолетовый -> синий -> сине-голубой | - |
81313 |
Эффект 3 объекта 1: мягкое мигание белым | - |
8132NN |
Объект 2. Заполнить шкалу градиентом красный -> зеленый | 44 |
81321 |
Эффект 1 объекта 2: плавный перелив синий -> фиолетовый -> фиолетово-красный | - |
81322 |
Эффект 2 объекта 2: плавный перелив фиолетовый -> синий -> сине-голубой | - |
81323 |
Эффект 3 объекта 2: мягкое мигание белым | - |
Если NN больше длины объекта, значение ограничивается полной длиной объекта. Если NN=0, объект гаснет. Команды 8130, 8131NN и 8132NN останавливают эффект соответствующего объекта.
Примеры:
8130- очистить оба объекта813105- установить уровень5для первого объекта81311- запустить эффект 1 первого объекта81312- запустить эффект 2 первого объекта81313- запустить эффект 3 первого объекта81321- запустить эффект 1 второго объекта81322- запустить эффект 2 второго объекта81323- запустить эффект 3 второго объекта813101- вручную установить уровень1для первого объекта, не запускать эффект813201- вручную установить уровень1для второго объекта, не запускать эффект813121- полностью зажечь первый объект813244- полностью зажечь второй объект
Отдельный раздел для морского боя VR
85XX[SSS] управляет виртуальной панелью морского боя (s_b). Это отдельная группа анимаций, которая работает независимо от обычных программ подсветки.
XX– код управления или эффекта, две цифры после85;SSS– необязательная длительность в секундах, все оставшиеся цифры послеXX;- для direct-шкал
XX=30..34хвост команды трактуется как уровень0..22, а не как время; - для тестов
XX=25хвост команды разбирается какTVVV.
Примеры разбора:
| Команда | Как разбирается |
|---|---|
85 |
Остановить анимации s_b |
8500 |
Автокарусель выключена, очистить экран, перейти в ожидание |
8501 |
Автокарусель включена |
8510 |
Горизонтальная волна с длительностью по умолчанию |
851005 |
Горизонтальная волна на 5 секунд |
853105 |
Первая direct-шкала на уровень 5 |
854506 |
CHARGE на 6 секунд |
858006 |
Красная тестовая заливка на 6 секунд |
85 без параметра отключает анимации s_b. В debug-режиме контроллер может отправить 85 - rendering OFF.
Любая непустая команда 85... запускает анимации s_b, если они еще не запущены. Direct-группы 813x и 8530..8534 управляются отдельными командами и не смешиваются с обычными эффектами 85.
Анимации рассчитываются как виртуальная 2D-панель. Для внешней программы важны только коды эффектов, длительность и правила возврата к предыдущему состоянию.
Управляющие коды 85
XX |
Назначение | Длительность по умолчанию |
|---|---|---|
00 |
Автокарусель выключена, очистить экран, перейти в ожидание | - |
01 |
Автокарусель включена | 10 сек на эффект |
Поведение после окончания эффекта
- Если запущен базовый эффект
10..22и автокарусель выключена, после истечения времени экран очищается иs_bпереходит в ожидание. - Если автокарусель включена, базовые эффекты переключаются по кругу
10 -> 11 -> ... -> 22 -> 10. - Если запущен спецэффект
40..49или80..82, после завершения контроллер возвращается к последнему базовому эффекту. - Если автокарусель выключена, после спецэффекта экран очищается и уходит в ожидание.
Direct-шкалы 8530..8534
Эти команды управляют отдельными шкалами s_b. Параметр после XX - уровень шкалы 0..22. Значения больше 22 ограничиваются до полной шкалы.
Шкалы живут независимо от эффектов и не обнуляются при 8500, 8501, 8510..8522, 8540.., перезапуске анимаций или автопереходе карусели. Обновляются командами 8531..8534; 8530 вручную очищает шкалы.
| Команда | Назначение | Параметр |
|---|---|---|
8530 |
Очистить все direct-шкалы | не используется |
8531NN |
Шкала 1: красный -> фиолетовый -> синий | уровень 0..22 |
8532NN |
Шкала 2: красный -> зеленый | уровень 0..22 |
8533NN |
Шкала 3: красный -> фиолетовый -> синий | уровень 0..22 |
8534NN |
Шкала 4: красный -> зеленый | уровень 0..22 |
Примеры:
8530- очистить все direct-шкалы853105- установить уровень5для первой шкалы853222- полностью зажечь вторую шкалу853300- погасить третью шкалу853422- полностью зажечь четвертую шкалу
Тесты морского боя VR 8525TVVV
При запуске теста обычные анимации s_b останавливаются, и панель переходит в тестовый режим.
| Команда | Назначение |
|---|---|
85250 |
Стоп теста, очистить тестовый режим |
85251 |
Общий тест подсветки VR: бегущая змейка, цвета меняются |
85252NN |
Тест строки панели VR, NN - номер строки |
85253NN |
Тест столбца панели VR, NN - номер столбца |
85254NNN |
Тест адресного элемента NNN |
Примеры:
85251- змейка VR8525212- строка12VR852533- столбец3VR85254105- адресный элемент105
Базовые эффекты 8510..8522
XX |
Имя в коде | Визуальный смысл | Длительность по умолчанию |
|---|---|---|---|
10 |
hor wave |
Горизонтальная волна: синяя и красная волны идут навстречу | 10 сек |
11 |
vert wave |
Вертикальная морская волна снизу вверх/вниз, ping-pong | 10 сек |
12 |
diag wave |
Диагональная волна с темно-синим/оранжевым характером | 10 сек |
13 |
plazma |
Плазма: смешение синий/красный/зеленый | 10 сек |
14 |
night |
Ночной градиент: голубой, фиолетовый, розовый | 10 сек |
15 |
rainbow |
Радуга, полный HSV-спектр | 10 сек |
16 |
fire-ice |
Огонь-лед, красный к голубому | 10 сек |
17 |
wave |
Вода, диагональная темно-синяя/голубая волна | 10 сек |
18 |
stars |
Звезды, розово-зеленая диагональная динамика | 10 сек |
19 |
scaner |
Зеленый сканер с затуханием | 10 сек |
20 |
flame |
Поток / 2D RGB-градиент | 10 сек |
21 |
shtorm |
Быстрая радужная буря | 10 сек |
22 |
ice |
Лед, холодный вариант красный/голубой | 10 сек |
Спецэффекты 8540..8549
Спецэффекты предназначены для событий игры. Они имеют приоритет над базовой анимацией, очищают состояние панели перед показом и после завершения возвращают систему к предыдущему базовому состоянию или в ожидание.
XX |
Имя в коде | Назначение | Длительность по умолчанию |
|---|---|---|---|
40 |
START |
Старт: волны темно-синий -> бирюзовый снизу вверх | 3 сек |
41 |
FINISH |
Финиш / завершение | 3 сек |
42 |
ONE_SHOT |
Попадание / торпеда | 2 сек |
43 |
SHOT |
Выстрел / boom: красно-оранжево-желтые полосы от центра | 1 сек |
44 |
MISS |
Промах: зелено-голубая волна снизу вверх | 1 сек |
45 |
CHARGE |
Зарядка: сине-красный фон и индикатор заряда | 2 сек |
46 |
SONAR |
Сонар: расширяющиеся концентрические круги | 3 сек |
47 |
RED WAVE |
Красная волна сверху вниз | 3 сек |
48 |
ALARM |
Тревога: мигание красным | 3 сек |
49 |
PULSE |
Оранжевая пульсация | 2 сек |
Тестовые заливки 8580..8582
Эти коды идут через тот же механизм спецэффектов:
XX |
Назначение | Длительность по умолчанию |
|---|---|---|
80 |
Залить всю виртуальную панель красным | 3 сек |
81 |
Залить всю виртуальную панель зеленым | 3 сек |
82 |
Залить всю виртуальную панель синим | 3 сек |
Диагностика 85
В debug-режиме возможны сообщения:
| Сообщение | Значение |
|---|---|
85 - rendering ON |
Рендер s_b запущен |
85 - rendering OFF |
Рендер остановлен командой 85 |
[S_B_] autoCarousel ON |
Автокарусель включена |
[S_B_] autoCarousel OFF |
Автокарусель выключена, экран очищен |
[S_B_] effect: 85XX (...) |
Запущен базовый эффект |
[S_B_] gauge: 85XX, level=N |
Обновлена direct-шкала 30..34 |
[S_B_] spec: XX (...) |
Запущен спецэффект |
[S_B_] effect done, waiting... |
Эффект завершен, экран очищен, режим ожидания |
Ограничения текущего кода:
- параметры после
85должны быть цифрами, но строгой проверки каждого символа сейчас нет; - для спецэффектов в текущем коде принимается любой
XX >= 40, но безопасно описаны только40..49и80..82; - полный останов анимаций выполняется пустой командой
85.
Отдельный раздел для Данро
86XX[SSS]:
- XX – команда;
- SSS – время в секундах.
Пример: 864906 – включить эффект "Падающие ряды" на 6 секунд
86 – без параметра отключает анимации Данро.
Команды 86XX[SSS] управляют только панелью Данро и не меняют direct-объекты других аппаратов.
Тесты панели Данро 8625TVVV
При запуске теста обычные анимации Данро останавливаются, и панель переходит в тестовый режим.
| Команда | Назначение |
|---|---|
86250 |
Стоп теста, очистить тестовый режим |
86251 |
Общий тест подсветки Данро: бегущая змейка, цвета меняются |
86252NN |
Тест строки панели Данро, NN - номер строки |
86253NN |
Тест столбца панели Данро, NN - номер столбца |
86254NNN |
Тест адресного элемента NNN |
Примеры:
86251- змейка Данро8625212- строка12Данро862533- столбец3Данро86254105- адресный элемент105
Список эффектов
Команда (XX) |
Название эффекта |
|---|---|
| 00 | Autoplay OFF, очистить экран |
| 01 | Autoplay ON |
| 25 | Тесты подсветки панели |
| 40 | Горизонтальная волна |
| 41 | Вертикальная волна |
| 42 | Диагональная волна |
| 43 | Радуга |
| 44 | Волна вверх |
| 45 | Вертикальная волна вверх |
| 46 | Конечная волна |
| 47 | Синяя волна |
| 48 | Диагональная волна 2 |
| 49 | Падающие ряды |
| 50 | Оранжевая волна |
| 51 | Морская волна |
| 52 | Диагональная волна 3 |
Отдельный раздел для RZ
87XX[SSS] - резервная виртуальная панель. Формат и эффекты совпадают с 86.
Команды 87XX[SSS] управляют только резервной панелью RZ и не меняют direct-объекты других аппаратов.
Тесты панели RZ 8725TVVV
При запуске теста обычные анимации RZ останавливаются, и панель переходит в тестовый режим.
| Команда | Назначение |
|---|---|
87250 |
Стоп теста, очистить тестовый режим |
87251 |
Общий тест подсветки RZ: бегущая змейка, цвета меняются |
87252NN |
Тест строки панели RZ, NN - номер строки |
87253NN |
Тест столбца панели RZ, NN - номер столбца |
87254NNN |
Тест адресного элемента NNN |
Примеры:
8701- включить автоперебор резервной панели8743- rainbow с длительностью по умолчанию872533- тест столбца387254105- адресный элемент10587- остановить анимации
Дополнительные цифровые GPIO
50CCP:
CC– подкоманда;P– числовой параметр.
| Формат | Назначение |
|---|---|
50 |
Показать режимы и уровни GPIO25/GPIO26 |
5001P |
Настроить режимы: если P > 9, GPIO25 выход; если младший бит P равен 1, GPIO26 выход |
5005P |
Показать краткое состояние: ADD:.. |
5010P |
Установить уровни выходов: GPIO25 = P > 9, GPIO26 = младший бит P |
Обновление прошивки платы
Православный (новый)
Зайти в Новое приложение для работы с платой, и Новое приложение для работы с платой#Обновление прошивки через него.
Для этого надо:
- Заполучить новую прошивку
- Подключить плату
- Открыть приложение
- Подключиться к плате через приложение
- Обновить прошивку через специальный пункт "Обновление прошивки"
Пендосский (старый)
Файл обновления принимается командой 02<size>. После полного приема контроллер отвечает текущим количеством записанных байт и итоговым file size=<size> OK, затем обновление запускается командой 04.
Для обновления платы на новую версию прошивки надо:
- Волшебным образом заполучить флешку с новой прошивкой
- Проверить, что прошивка на плате точно старше при помощи команды
05 - Выбрать файл новой прошивки с флешки
- Выполнить появившуюся команду
- После успешного выполнения команды, проверить состояние файла обновления
- При наличии выделенного места, обновить прошивку при помощи команды
04, дождаться завершения обновления - Проверить, что прошивка на плату встала при помощи команды
05 - ...
- PROFIT!
-
Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK" ↩︎