Skip to content

Сборная матрица, состоящая из матриц разного типа и размера

Dimansion edited this page Dec 20, 2022 · 8 revisions

Основные понятия

Сегмент матрицы - заводская матрица размером 8x8, 16x16, 32x8 или собственноручно собранная матрица произвольного размера.
Сборная матрица - сборка из сегментов, дающая в результате одну матрицу большего размера.

Заводские матрицы

В настоящее время в магазинах доступны три разновидности матриц заводской сборки на гибкой алюминиевой основе размером 8х8, 16х16 и 32x8 "пикселей".

Заводские матрицы

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

Матрица 8x8
Матрица 8x8

Матрица 16x16
Матрица 16x16

Матрица 32x8
Матрица 32x8

Сборная матрица

Если ваша сборная матрица состоит из матриц различного размера (смесь разных матриц) или нет возможности сориентировать все элементарные матрицы одинаково по углу подключения и направлению из угла (ввиду длинных проводов для их соединения между собой) вы можете использовать для адресации светодиодов на ленте (перевод из координат x,y в индекс светодиода) специальный массив индексов загружаемый из файла или определенный в скетче как массив PROGMEM.

Из отдельных модулей заводских матриц 8х8, 16х16, 32х8 (или самостоятельно сделанных сборок) можно составить матрицу большего размера. В сборной матрице используются те же принципы - угол подключения и направление из угла, как и для отдельных светодиодов в сегментах матрицы. Сегменты сборной матрицы могут иметь разные размеры и способ ориентирования.

Про сборные матрицы из одинаковых сегментов и с одинаковым углом подключений можно прочитать тут.

Сборная матрица из трех сегментов (16х16 и 32x8)

Пример построения сборной матрицы с использованием сегментов заводского изготовления 16х16 и 32x8 приведен на картинке ниже. Первый диод в сегменте матрицы указан зеленой точкой, направление цепочки диодов в сегменте из угла - синей стрелкой. Цветные цифры показывают размещение сегментов матрицы и порядок следования сегментов в сборной матрице.

Matrix16x16+8x32

Размеры сборной матрицы - количество сегментов в ширину и в высоту задаются параметрами WIDTH и HEIGHT соответственно.
Включение данного типа сборной матрицы задается параметром MATRIX_TYPE

  • MATRIX_TYPE = 2 - использовать карту индексов (сборная матрица)

Место расположения массива индексов задается параметром MATRIX_INDEX

  • MATRIX_INDEX = 0 - в сектче в файле index_map.ino
  • MATRIX_INDEX = 1 - в отдельном файле карты индексов в файловой системе микроконтроллера

Перед компиляцией скетча вам следует указать размеры, тип и способ подключения матриц в скетче в файле a_def_hard.h
Сборная матрица, приведенная на рисунке выше, описывается следующей комбинацией параметров:

Example01

Далее вам необходимо создать индексный файл (карту индексов) для своей сборной матрицы.
Для создания карты индексов используется утилита LedMapper, которая находится в папке tools проекта.
Основные шаги процесса создания карты:

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

LedMapper2

  1. Для построения ВТОРОГО СЕГМЕНТА повторяем шаги со 2-го по 4-й.
  2. Для построения ТРЕТЬЕГО СЕГМЕНТА повторяем шаги со 2-го по 4-й.

Так же можно отмечать ячейки одиночным кликом по пустому полю левой кнопки мыши.
Если где-то ошиблись, то ячейку или группу ячеек можно "стереть" правой кнопкой мыши (после удаления ячеек не забудьте скорректировать индекс в поле "Следующий индекс").
Есть возможность изменить индекс, цвет или признак "начало сегмента" отдельной ячейки одинарным кликом левой кнопкой мыши.

ВНИМАНИЕ!
Цвет и признак "начало сегмента" на конечный файл и работу в прошивке никак не влияет.
Эти функции только для визуализации и более лучшего зрительного восприятия.

В итоге получили красивую карту индексов состоящую из 768 ячеек (от 0 до 767).

Matrix16x16+8x32_LedMapper

Сохраняем созданную карту в файл. Имя файла индексов имеет формат "WxH.map" где W - ширина матрицы, H - высота матрицы (для нашей матрицы 48x16 имя файла будет "48x16.map", между цифрами латинская буква ИКС).

Если в скетче в файле a_def_hard.h вы установили параметр MATRIX_INDEX = 0, то массив карты индексов imap необходимо разместить в скетче в файле index_map.ino
Замените содержимое массива imap> приведенное для примера в файле на массив, сформированный для вашей матрицы в программе из вкладки Скетч.
Не забудьте изменить в скетче, куда вставляете полученный массив, параметры WIDTH и HEIGHT на свои.

LedMapper3

Example02

Если же в скетче в файле 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 и подключитесь к работающему контроллеру. Перейдите к странице настроек параметров матрицы

Panel Setup

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

Clone this wiki locally