Сборная матрица, состоящая из матриц разного типа и размера - vvip-68/LedPanelWiFi GitHub Wiki
Основные понятия
Сегмент матрицы - заводская матрица размером 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)
Пример построения сборной матрицы с использованием сегментов заводского изготовления 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-приложения
Настроить размеры матрицы (в том числе и сборной) и способ ее подключения можно из Web-приложения, открытого в браузере на смартфоне или компьютере. Откройте браузер и подключитесь к работающему контроллеру, указав в адресной строке браузера IP адрес устройства. Перейдите к странице настроек параметров матрицы
Выберите вариант настройки матрицы "Карта индексов".
В выпадающем списке представлены все найденные в файловой системе микроконтроллера файлы карт индексов.
Выберите файл, соответствующий вашей настройке сборной матрицы.
После выполненных изменений нажмите кнопку "Применить" для сохранения настроек. После завершения конфигурирования матрицы контроллер автоматически перезагрузится и новые параметры вступят в силу.