# Пошаговая инструкция настройки ПО управления эффектами «Jinx!» как источника синхронизации устройств в группе
## Шаг 1
Перейдите на сайт разработчиков [«Jinx!»](http://www.live-leds.de/downloads/) и скачайте приложение. 
Распакуйте архив с программой в отдельную папку. Запустите приложение

![Главное окно Jinx 2.4](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/001.png)

## Шаг 2
Программа «Jinx!» поставляется с демо-скриптом, содержащем большое количество настроенных сцен, эффектов и переходов.
Для подключения скрипта примера в меню "File" выберите пункт "Import"  

![Import Demo Script](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/016.png)  

В окне выбора файла выберите "demo.jnx" и нажмите кнопку "Открыть"  

![Import Demo Script](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/017.png)  

После того, как скрипт подключен к программе, выбор пункта меню "View Scenelist" (или нажатие кнопки F2) 

![Menu Scenelist](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/018.png)  

откроет окно выбора доступных сцен.  

![Scenelist](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/019.png)  

Каждая сцена содержит комбинацию эффектов, результат отображается в реальном режиме времени в панелях предпросмотра в верхней части главного окна Jinx.  
Изучите как работают и комбинируются эффекты. Изменяйте настройки каналов и смотрите как они влияют на результат.  

В интернете вы можете найти большое количество инструкций по созданию эффектов с помощью Jinx,  
доступны видеоуроки в Youtube.

## Шаг 3
Откройте окно настроек матрицы  

![Меню Setup / Matrix options](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/002.png)  

и задайте размер рабочего поля в пикселях  

![Настройки матрицы](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/003.png)  

Размер должен соответствовать вашей матрице, которую вы используете в своем проекте

## Шаг 4
Настройте выходное устройство для передачи анимации эффекта устройствам-потребителям.  
В нашем случае программа должна выполнять передачу изображения в сеть по протоколу **E1.31**  

Откройте окно настроек выходных устройств  

![Меню Setup / Output devices](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/004.png)  

Рассчитайте количество потоков (вселенных), требуемых для передачи изображения на вашу матрицу.  
В данном примере используется матрица размером 16x16 - общее количество светодиодов - 256.  
Одна вселенная вмещает данные RGB-цветов для 170 светодиодов (170 * 3 = 510 каналов).  
Остается 256 - 170 = 86 светодиодов (86 * 3 = 258 каналов), которые могут быть целиком размещены во второй вселенной.  
Таким образом, для матрицы 16x16 достаточно двух вселенных, содержащих 510 и 258 каналов соответственно.

Таблица распределения вселенных по группам синхронизации для этого проекта:
| Группа | Номера вселенных | IP адреса |
|--------|------------------|-----------|
| **Группа 0** | 1-7   | 239.255.0.1  - 239.255.0.7 |
| **Группа 1** | 8-14  | 239.255.0.8  - 239.255.0.14 |
| **Группа 2** | 15-21 | 239.255.0.15 - 239.255.0.21 |
| **Группа 3** | 22-28 | 239.255.0.22 - 239.255.0.28 |
| **Группа 4** | 29-35 | 239.255.0.29 - 239.255.0.35 |
| **Группа 5** | 36-42 | 239.255.0.36 - 239.255.0.42 |
| **Группа 6** | 43-49 | 239.255.0.43 - 239.255.0.49 |
| **Группа 7** | 50-56 | 239.255.0.50 - 239.255.0.56 |
| **Группа 8** | 57-63 | 239.255.0.57 - 239.255.0.63 |
| **Группа 9** | 64-70 | 239.255.0.64 - 239.255.0.70 |

Пусть в нашем случае устройства-приемники объединены в группу **"Группа 0"**, имеет номера вселенных **1-7** и 
соответственно адреса многоадресной рассылки UDP пакетов - **239.255.0.1 -239.255.0.7**  

![Output devices](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/005.png)  
 
Нажмите кнопку **Add** (***"Добавить"***) для добавления нового устройства (новой вселенной)

![Add/Edit device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/006.png)  

- В комбо-боксе ***"Device Type"*** выберите значение **"sACN / E1.31"**  
- В поле ***"Universe"*** укажите номер вселенной - **1**. Обратите внимание, что при переходе к следующему полю значение **IP Address** изменится на ***239.255.0.1***
- В поле ***"Channels"*** укажите количество каналов для вселенной 1 - **510** (это первые **170** светодиодов матрицы)
- Нажмите кнопку ***"ОК"*** для добавления созданной вселенной в список устройств

Снова нажмите кнопку **Add** (***"Добавить"***) для добавления описателя второй вселенной

![Add/Edit device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/007.png)  

- В комбо-боксе ***"Device Type"*** выберите значение **"sACN / E1.31"**  
- В поле ***"Universe"*** укажите номер вселенной - **2**. Обратите внимание, что при переходе к следующему полю значение **IP Address** изменится на ***239.255.0.2***
- В поле ***"Channels"*** укажите количество каналов для вселенной 2 - **258** (это оставшиеся **86** светодиодов матрицы)
- Нажмите кнопку ***"ОК"*** для добавления созданной вселенной в список устройств

Для примера с матрицей 16x16 созданы все необходимые вселенные.

![Device list](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/008.png)  

Если ваша матрица другого размера - выполните расчет и создание вселенных для вашего случая.  

## Шаг 5

На следующем шаге требуется указать программе в какой последовательности располагаются светодиоды на вашей матрице, 
иными словами - в каком порядке программа должна передавать изображение на устройства-приемники. 

Выберите в меню пункт настройки варианта подключения светодиодов матрицы  

![Output patch](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/009.png)  

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

![Output patch](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/010.png)  

Здесь возможны два варианта в зависимости от выбранного типа синхронизации - **"Логический"** и **"Физический"**

### Логический тип синхронизации

В ***логическом*** типе синхронизации светодиоды располагаются начиная с левого верхнего угла **X,Y=(1,1)** и далее вправо по колонкам (**X**), затем вниз по строкам (**Y**). Каждая строка (и четная и нечетная) начинаются слева, увеличение координаты - вправо. Заполнение вселенных ведется последовательно - сначала созданная **Вселенная 1**, затем **Вселенная 2** и так далее.

#### Разметка Вселенной 1

Установите маркер начала распределения светодиодов - ярко красный квадрат в левый верхний угол матрицы и нажмите кнопку **"Fast Patch"**  

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/011.png)  

Для размещения первых 170 светодиодов при ширине матрицы 16 колонок достаточно 11 строк. Последняя строка будет не полной - останется место для 6 светодиодов. В поле **"Dimension"** укажите размер заполняемой области - **X:16, Y:11**

В комбобоксе "Patch Mode" выберите направление светодиодов из угла подключения матрицы. 
Как указано выше - в случае логического порядка светодиоды следуют построчно с началом - в левом верхнем углу матрицы.  
Выберите значение **"Linewise starting Top-Left"**

> Доступны следующие варианты:  
![Fast Patch](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/013.png)  
```
- Linewise starting Top-Left         - Левый верхний угол, параллельно по строкам слева направо
- Linewise starting Top-Right        - Правый верхний угол, параллельно по строкам справа налево
- Linewise starting Bottom-Left      - Левый нижний угол, параллельно по строкам слева направо
- Linewise starting Bottom-Right     - Правый верхний угол, параллельно по строкам справа налево
- Snakelines starting Top-Left       - Левый верхний угол, зигзаг направление вправо
- Snakelines starting Top-Right      - Правый верхний угол, зигзаг направление влево
- Snakelines starting Bottom-Left    - Левый нижний угол, зигзаг направление вправо
- Snakelines starting Bottom-Right   - Правый нижний угол, зигзаг направление влево
- Columnwise starting Top-Left       - Левый верхний угол, параллельно по колонкам сверху вниз
- Columnwise starting Top-Right      - Правый верхний угол, параллельно по колонкам сверху вниз
- Columnwise starting Bottom-Left    - Левый нижний угол, параллельно по колонкам снизу вверх
- Columnwise starting Bottom-Right   - Правый нижний угол, параллельно по колонкам снизу вверх
- Snakecolumns starting Top-Left     - Левый верхний угол, зигзаг, направление вниз
- Snakecolumns starting Top-Right    - Правый верхний угол, зигзаг, направление вниз
- Snakecolumns starting Bottom-Left  - Левый нижний угол, зигзаг, направление вверх
- Snakecolumns starting Bottom-Right - Правый нижний угол, зигзаг, направление вверх
```
Значение в комбобоксе **"Pixel Order"** - всегда **"RGB"** - порядок следования цветов в пикселе обрабатывается программно в скетче прошивки при задании типа ленты в блоке инициализации библиотеки ***FastLED***.

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

В комбобоксе **"Patch device"** выберите устройство, соответствующее первой вселенной - **sACN/E1.31 239.255.0.1**

Нажмите кнопку **"ОК"** для запуска разметки данных для *Вселенной 1*.

Теперь первые 170 клеток матрицы имеют зеленый цвет, что означает, что каждой зеленой ячейке виртуальной / программной матрицы назначено место в массиве данных передаваемых на устройство-приемник. 

![Output patch](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/012.png)  

Обратите внимание, что последняя строка заполнена не полностью - для нее не хватило места в пакете E1.31, первой вселенной, который вмещает в себя 510 доступных каналов из 512 (или данные для 170 светодиодов). В области, выделенной зеленым справа видно, что выбранная вселенная - **sACN/E1.31 239.255.0.1[1]** и каналы для цвета RGB назначены R-507, G-508, B-509.

#### Разметка Вселенной 2

Инструмент **"Fast Patch"** использует для разметки прямоугольные области, внутри которых задает последовательность диодов согласно выбранным настройкам. После завершения распределения диодов для первой вселенной выполним разметку для второй вселенной.

В строке 11 осталось неразмеченной 6 клеток. Установите маркер начала разметки - красный прямоугольник на первую клетку неразмеченной области и снова нажмите кнопку **"Fast Parch"**.

![Start output](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/014.png)  

Прямоугольная область разметки остатка строки - 6 клеток в одной строке - укажите размер заполняемой области в поле  **"Dimension"** - **X:6, Y:1**.
В комбобоксе **"Patch Mode"** направление светодиодов из угла подключения матрицы остается неизменным - **"Linewise starting Top-Left"**.
Нумерация каналов для второй вселенной начинается с **0** - укажите это значение в поле **"First Channel"**. В поле **"Patch Device"** выберите вторую вселенную - **sACN/E1.311 239.255.0.2[2]**. Нажмите кнопку **"ОК"**.

![Start output](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/015.png)  

Разметка остатка строки выполнена. Последняя размеченная клетка определяет каналы R-15, G-16, B-17

Переместите маркер начала размечаемой области в начало строки 12. Нажмите кнопку **"Fast Patch"**.

![Start output](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/020.png)  

Размеры размечаемой области - 16 колонок, 5 строк **(X=16, Y=5)**. 
Направление следование цепочки остается неизменным - **Linewise starting Top-Left**.
Последний занятый канал Вселенной 2, заданный на предыдущем шаге - **17** (компонента цвета B). 
Значит, нумерация каналов для следующего диода должна начинаться с **18**. Это значение вводится в поле **"First Channel"**.
Убедитесь, что в комбобоксе **"Patch Device"** по-прежнему выбрана вторая вселенная **sACN/E1.311 239.255.0.2[2]** и нажмите кнопку **"ОК"**.

![Start output](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/021.png)  

Разметка матрицы для передачи изображения эффектов устройствам-приемникам по протоколу E1.31 для выбранного режима синхронизации ***"Логический"*** на этом завершена.

### Физический тип синхронизации

Физический тип синхронизации подразумевает, что определение матрицы для вывода эффектов в программе ***"Jinx!"*** должно полностью соответствовать последовательности размещения светодиодов на физической матрице.

Для примера рассмотрим матрицу размером ***16x16***, топ соединения диодов - ***зигзаг***, угол подключения - ***левый нижний***, направление следования цепочки диодов из угла - ***вправо***. Заполнение вселенных ведется последовательно - сначала созданная **Вселенная 1**, затем **Вселенная 2** и так далее.

#### Разметка Вселенной 1

Первая вселенная содержит в себе цвета первых **170** светодиодов или **170 * 3 = 510** каналов. Эти светодиоды занимают на матрице нижние 11 строк, причем последняя распределяемая строка будет содержать только 10 светодиодов, остальные 6 клеток останутся незаполненными.

Установите маркер начала распределения светодиодов - ярко красный квадрат в первую ячейку (крайнюю левую) строки под номером 6. Таким образом, определяется размечаемая область (**X,Y**) - левый верхний угол (**1,6**), правый нижний угол (**16,16**). Нажмите кнопку **"Fast Patch"**.  

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/022.png)  

Задайте параметры распределения ячеек матрицы:   
Для размещения первых 170 светодиодов при ширине матрицы 16 колонок достаточно 11 строк. Последняя строка будет не полной - останется место для 6 светодиодов. В поле **"Dimension"** укажите размер заполняемой области - **X:16, Y:11**

В комбобоксе "Patch Mode" выберите направление светодиодов из угла подключения матрицы. В нашем случае светодиоды расположены ***"змейкой"***, начиная с ***левого нижнего угла*** выделенной области, направление следования из угла - ***вправо***. Выберите в комбобоксе **""Patch Mode"** значение **"Snakelines starting Bottom-Left"**

Значение в комбобоксе **"Pixel Order"** - всегда **"RGB"** - порядок следования цветов в пикселе обрабатывается программно в скетче прошивки призадании типа ленты в блоке инициализации библиотеки ***FastLED***.

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

В комбобоксе **"Patch device"** выберите устройство, соответствующее первой вселенной - **sACN/E1.31 239.255.0.1**

Нажмите кнопку **"ОК"** для запуска разметки данных для *Вселенной 1*.

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/023.png)  

Теперь первые 170 клеток матрицы имеют зеленый цвет, что означает, что каждой зеленой ячейке виртуальной / программной матрицы назначено место в массиве данных передаваемых на устройство-приемник. 

Однако, разметка выглядит несколько не так, как ожидалось... К сожалению, утилита **"Fast Patch"** имеет ошибку и распределяет ячейки не совсем в соответствии с заданным алгоритмом. Придется исправлять ошибки вручную...

Обратите внимание, что ячейка **(1,16)** определяющая начальную точку (первый светодиод матрицы) подсвеченная ярко-зеленым маркером в правой части окна в информационной панели содержит номера каналов **R,G,B** - **0,1,2**. Следующая зеленая ячейка **(2,16)** - каналы **3,4,5** и так далее. И это правильно. Однако первая красная ячейка (и следующие за ней красные ячейки в строке) содержат правильное распределение каналов **(30,31,32)**, **(33,34,35)**..., но комбобокс **"Patch Device"*** содержит значение **None**. Это ошибка. 

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/024.png)  

Для исправления ошибки вручную выберите в комбобоксе **"Patch Device"** *Вселенную 1* - **sACN/E1.31 239.255.0.1** для каждой красной ячейки строки.

Напротив, в строке 6 последние 6 ячеек имеют зеленый цвет, но каналы для них не назначены - **R,G,B** содержат значения **0,0,0** выберите для 6 последних ячеек строки 6 в комбобоксе **"Patch Device"** *Вселенную 2* - **sACN/E1.31 239.255.0.2** и номера каналов последовательно **(0,1,2)**,**(3,4,5)**,**(6,7,8)**,**(9,10,11)**,**(12,13,14)**,**(15,16,17)**.

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/025.png)  

Итак, разметка *Вселенной 1* и первых шести диодов *Вселенной 2* - выполнена

#### Разметка Вселенной 2

Следующая размечаемая область - от **X,Y** ячейки **(1,1)** (левый верхний угол области) до **(16,5)** (правый нижний угол области.
Поскольку тип соединения нашей матрицы - **"зигзаг"** (или ***"змейка"***) с началом в левом нижнем углу, строки **16,14,12,10,8,6** имеют нумерацию ячеек и распределение каналов по возрастанию ***слева направо***, а строки **13,11,9,7** - нумерацию ячеек и распределение каналов по возрастанию - ***справа налево***.

Строка **5** в оставшейся у распределению красной области также имеет распределение номеров ячеек **СПРАВА НАЛЕВО** (***!!!***).

Нажмите кнопку **"Fast Patch"** для выполнения распределения оставшейся части ячеек матрицы.

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/026.png)  

Размер области распределения **Dimension** **X=16**, **Y=5**, направление следования цепочки светодиодов в выделенной области - из **правого нижнего** угла **влево**, по строкам **змейкой** вверх. В поле **"Patch Mode"** выбираем значение **"Snakelines starting Bottom-Right"***. Номер последнего распределенного канала во *Вселенной 2* в ячейке с координатами **(16,6)** - ***B-17***, значит первым распределяемым каналом в оставшейся области будет канал **18**, что и указываем в поле **"First Channel"**. Нажмите кнопку **"ОК"** для завершения операции распределения.

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/027.png)  

Назначение светодиодов для передачи картинки эффекта на устройства-приемники завершено!

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

Ниже приведен рисунок назначения светодиодов матрицы "Jinx!" на [сборную матрицу](https://github.com/vvip-68/GyverPanelWiFi/wiki/Сборная-матрица), состоящую из четырех матриц размером 8x8 пикселей.

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/029.png)  

Расположение матриц в сборке представлено на рисунке. Первый светодиод каждой матрицы (угол подключения) обозначен зеленой точкой. 
Направление следования цепочки светодиодов из угла подключения - красной линией.

Ниже представлена пошаговая схема распределения диодов матрицы по вселенным.

![Output patch - Select Device](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/028.png)  

## Шаг 6

Итак, эффекты созданы или выбраны из готовых примеров. Один из эффектов отображается в реальном режиме времени в центральной панели, являющейся результатом смешивания эффектов из правой и левой панелей предварительного просмотра. 

![Start output](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/030.png)  

Для начала трансляции эффекта на устройства-приемники выберите в меню **"Setup"** пункт **"Start Output"**. 
Для остановки трансляции повторно выберите этот же пункт меню.  

![Start output](https://github.com/vvip-68/GyverPanelWiFi/blob/master/wiki/E131/031.png)  
