-
-
Notifications
You must be signed in to change notification settings - Fork 10
Сборная матрица, состоящая из матриц разного типа и размера
Сегмент матрицы - заводская матрица размером 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, то необходимо сохраненный файл загрузить в микроконтроллер.
Использование варианта хранения карт индексов в файле имеет преимущество, состоящее в том, что вы сможете без перепрошивки микроконтроллера подключать к нему сборные матрицы различных конфигураций и перенастраивать контроллер "на лету", выбирая соответствующую карту индексов в Web-приложении, в разделе настроек матрицы.
Для загрузки файла в файловую систему микроконтроллера поместите файл (в нашем случае 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);
Загрузка выполняется утилитой ESP8266 LittleFS Data Upload: для контроллеров на базе ESP8266 или утилитой ESP32 LittleFS Data Upload для контроллеров на базе ESP32. Эти утилиты находятся в папке проекта tools/LittleFS_Uploader - нужно установить их в IDE согласно инструкции в файле readme.txt
Подробнее о этом можно прочитать тут: загрузка изображений в файловую систему МК
ВНИМАНИЕ Если при старте микроконтроллер не нейдет файл в файловой системе - для адресации диодов на матрице будут использованы параметры типа матрицы MATRIX_TYPE = 0 - зигзаг.
Настроить размеры матрицы (в том числе и сборной) и способ ее подключения можно из Web-приложения, открытого в браузере на смартфоне или компьютере. Откройте браузер и подключитесь к работающему контроллеру, указав в адресной строке браузера IP адрес устройства. Перейдите к странице настроек параметров матрицы

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