-
-
Notifications
You must be signed in to change notification settings - Fork 123
Сборная матрица, состоящая из матриц разного типа и размера
Сегмент матрицы - заводская матрица размером 8x8, 16x16, 32x8 или собственноручно собранная матрица произвольного размера.
Сборная матрица - сборка из сегментов, дающая в результате одну матрицу большего размера.
В настоящее время в магазинах доступны три разновидности матриц заводской сборки на гибкой алюминиевой основе размером 8х8, 16х16 и 32x8 "пикселей".

Все заводские матрицы имеют тип соединения строк - Зигзаг (Последовательная), в прошивке MATRIX_TYPE = 0
Матрица 8x8

Матрица 16x16

Матрица 32x8

Если ваша сборная матрица состоит из матриц различного размера (смесь разных матриц) или нет возможности сориентировать все элементарные матрицы одинаково по углу подключения и направлению из угла (ввиду длинных проводов для их соединения между собой) вы можете использовать для адресации светодиодов на ленте (перевод из координат x,y в индекс светодиода) специальный массив индексов загружаемый из файла или определенный в скетче как массив PROGMEM.
Из отдельных модулей заводских матриц 8х8, 16х16, 32х8 (или самостоятельно сделанных сборок) можно составить матрицу большего размера. В сборной матрице используются те же принципы - угол подключения и направление из угла, как и для отдельных светодиодов в сегментах матрицы. Сегменты сборной матрицы могут иметь разные размеры и способ ориентирования.
Про сборные матрицы из одинаковых сегментов и с одинаковым углом подключений можно прочитать тут.
Пример построения сборной матрицы с использованием сегментов заводского изготовления 16х16 и 32x8 приведен на картинке ниже. Первый диод в сегменте матрицы указан зеленой точкой, направление цепочки диодов в сегменте из угла - синей стрелкой. Цветные цифры показывают размещение сегментов матрицы и порядок следования сегментов в сборной матрице.

Размеры сборной матрицы - количество сегментов в ширину и в высоту задаются параметрами WIDTH и HEIGHT соответственно.
Включение данного типа сборной матрицы задается параметром MATRIX_TYPE
- MATRIX_TYPE = 2 - использовать карту индексов (сборная матрица)
Место расположения массива индексов задается параметром MATRIX_INDEX
- MATRIX_INDEX = 0 - в сектче в файле index_map.ino
- MATRIX_INDEX = 1 - в отдельном файле карты индексов в файловой системе микроконтроллера
Перед компиляцией скетча вам следует указать размеры, тип и способ подключения матриц в скетче в файле a_def_hard.h
Сборная матрица, приведенная на рисунке выше, описывается следующей комбинацией параметров:

Далее вам необходимо создать индексный файл (карту индексов) для своей сборной матрицы.
Для создания карты индексов используется утилита LedMapper, которая находится в папке tools проекта.
Основные шаги процесса создания карты:
- В верхней части программы задайте ОБЩИЙ размер вашей сборной матрицы. В нашем случае это 48х16.
- Задайте в поле справа угол размещения первого диода и направление ленты из угла ПЕРВОГО СЕГМЕНТА.
- Для лучшей визуализации карты выберите любой цвет, которым будете рисовать ПЕРВЫЙ СЕГМЕНТ.
- Далее зажатием левой кнопки мыши выделяем на поле ячейки ПЕРВОГО СЕГМЕНТА.

- Для построения ВТОРОГО СЕГМЕНТА повторяем шаги со 2-го по 4-й.
- Для построения ТРЕТЬЕГО СЕГМЕНТА повторяем шаги со 2-го по 4-й.
Так же можно отмечать ячейки одиночным кликом по пустому полю левой кнопки мыши.
Если где-то ошиблись, то ячейку или группу ячеек можно "стереть" правой кнопкой мыши (после удаления ячеек не забудьте скорректировать индекс в поле "Следующий индекс").
Есть возможность изменить индекс, цвет или признак "начало сегмента" отдельной ячейки одинарным кликом левой кнопкой мыши.
ВНИМАНИЕ!
Цвет и признак "начало сегмента" на конечный файл и работу в прошивке никак не влияет.
Эти функции только для визуализации и более лучшего зрительного восприятия.
В итоге получили красивую карту индексов состоящую из 768 ячеек (от 0 до 767).

Сохраняем созданную карту в файл. Имя файла индексов имеет формат "WxH.map" где W - ширина матрицы, H - высота матрицы (для нашей матрицы 48x16 имя файла будет "48x16.map", между цифрами латинская буква ИКС).
Если в скетче в файле a_def_hard.h вы установили параметр MATRIX_INDEX = 0, то массив карты индексов imap необходимо разместить в скетче в файле index_map.ino
Замените содержимое массива imap> приведенное для примера в файле на массив, сформированный для вашей матрицы в программе из вкладки Скетч.
Не забудьте изменить в скетче, куда вставляете полученный массив, параметры WIDTH и HEIGHT на свои.


Если же в скетче в файле a_def_hard.h вы установили параметр MATRIX_INDEX = 1, то необходимо сохраненный файл загрузить в микроконтроллер.
Для загрузки файла в файловую систему микроконтроллера поместите файл (в нашем случае 48x16.map) в папку data, находящуюся в папке скетча.
В меню Инструменты Arduino IDE в настройке распределения памяти устройства выберите вариант:
Для микроконтроллеров ESP8266 с 4МБ флэш-памяти рекомендуется вариант Flash Size: 4MB(FS:2MB OTA:~1019KB)
Для микроконтроллеров ESP32 с 4МБ флэш-памяти рекомендуется вариант Partition scheme: Default 4MB with spiff(1.2MB APP/1.5MB SPIFFS);
Также для ESP32 требуется дополнительно установить библиотеку LittleFS_esp32.
Загрузка выполняется утилитой ESP8266 LittleFS Data Upload: для контроллеров на базе ESP8266 или утилитой ESP32 LittleFS Data Upload для контроллеров на базе ESP32.
Эти утилиты находятся в папке проекта tools/LittleFS_Uploader - нужно установить их в IDE согласно инструкции в файле readme.txt
Подробнее о этом можно прочитать тут: загрузка изображений в файловую систему МК
ВНИМАНИЕ Если при старте микроконтроллер не нейдет файл в файловой системе - для адресации диодов на матрице будут использованы параметры типа матрицы MATRIX_TYPE = 0 - зигзаг.
Для сборных матриц, определенных, как массив индексов, в Android-приложении нет возможности что-либо настраивать. В приложении возможен только просмотр размера для выбранной карты индексов. Так же если вы загрузили в файловую систему несколько индексных файлов (WxH.map) - есть возможность быстро переключаться между ними.
Запустите приложение-компаньон WiFi Panel Setup и подключитесь к работающему контроллеру. Перейдите к странице настроек параметров матрицы

В интерфейсе вы увидите текущие настройки.
После каких-либо изменений нажмите кнопку "Сохранить" для применения выполненных настроек. После завершения конфигурирования матрицы контроллер автоматически перезагрузится и новые параметры вступят в силу.