-
Notifications
You must be signed in to change notification settings - Fork 3
Настройка LED дисплея
В прошивке поддерживается два вида светодиодных панелей:
- сборки из адресных светодиодов ws2812 через библиотеку https://github.com/FastLED/FastLED
- экспериментальная поддержка HUB75 RGB-панелей через библиотеку ESP32-HUB75-MatrixPanel-DMA
очень хорошую документацию по организации матриц из адресных светодиодов можно найти на WiKi проекта LedPanelWiFi - Сборная матрица. Настоятельно рекоммендуется к ознакомлению.
Настройка размеров, ориентации и топологии матрицы или каскада матриц осуществляется просле прошивки через web-интерфейс в меню "настройки" - "Настройка LED-дисплея". Параметры применяются на лету к подключенному устройству, для изменения топологии реконфигурация и перепрошивка проекта не требуется.
Требования к каскадному подключению нескольких матриц:
- все матрицы в каскаде должны иметь одинаковый размер
- все матрицы в каскаде должны иметь одинаковую топлогию (направление следования ленты)
- все матрицы в каскаде должны быть одинаково ориентированы (входной и выходной диод должны располагаться в совпадающих углах)
- следование матриц в каскаде должно быть упорядоченно по столбцам/строкам зиг-загом или параллельно.
Вместо "угла подключения" и "направления" ленты используется другая схема настройки: вертикальная/горизонтальная последовательность и отражения
- LED Matrix gpio - пин подключения матрицы. Значение "-1" отключает матрицу, смена gpio со значения отличного от "-1" требует перезагрузки контроллера
- ширина, высота - размер в пикселях одной матрицы. Если используется составная матрица, то всё равно указывается размер одной матрицы, а не всего холста
- змейка - диоды в строках/столбцах располагаются последовательно, меняя направление. Выключенная опция означает параллельное следование диодов
- вертикальная - диоды в ленте расположенны вертикально, следуют сверху вниз или снизу вверх. Выключенная опция означает что лента уложенна горизонтально
- зеркальные столбцы, зеркальные строки - перевернуть "верх/низ" или "лево/право" матрицы
- плиток по X,Y - число модулей в каскаде по горизонтали/вертикали, результирующий размер составного холста будет высчитан автоматически
флаги каскада соответствуют по смыслу таковым же для настроек одной матрицы
Конфигурацию и топологию ленты можно задать через API. Ожидаемый джейсон объект с параметрами имеет следующую структуру
{
"pkg": "post",
"action": "display_ws2812",
"data": {
"dtype": 0,
"mx_gpio": 25,
"CLmt": 2500,
"width": 16,
"height": 16,
"snake": true,
"vflip": false,
"vertical": false,
"hflip": false,
"wcnt": 1,
"hcnt": 2,
"tsnake": false,
"tvflip": false,
"tvertical": false,
"thflip": false
}
}
где:
-
dtype
- тип используемого дисплея:0
- дисплей на основе ws2812,1
- дисплей на основе HUB75
Пример структуры объекта отдаваемого в ответ на запрос текущей конфигурации для лент:
[
{
"mx_gpio": 25,
"CLmt": 2500,
"width": 16,
"height": 16,
"snake": true,
"vflip": false,
"vertical": false,
"hflip": false,
"wcnt": 1,
"hcnt": 2,
"tsnake": false,
"tvflip": false,
"tvertical": false,
"thflip": false
}
]
Конфигурацию и параметры HUB75 панели можно задать через API. Параметры конфигурации основываются на функционале библиотеки ESP32-HUB75-MatrixPanel-DMA. Настоятельно рекоммендуется ознакомиться с документацией на библиотеку и о назначении конфигурационных опций. Ожидаемый джейсон объект с параметрами имеет следующую структуру:
{
"pkg": "post",
"action": "display_hub75",
"data": {
"dtype": 1,
"width": 64,"height": 32,
"R1": 25,"G1": 25,"B1": 25,
"R2": 25,"G2": 25,"B2": 25,
"A": 25,"B": 25,"C": 25,"D": 25,"E": -1,
"CLK": 25,"OE": 25,"LAT": 25,
"driver": 0,
"clkrate": 15000000,
"latblank": 2,
"clkphase": true,
"minrr": 60,
"colordpth": 6
}
}
где:
-
dtype
- тип используемого дисплея:0
- дисплей на основе ws2812,1
- дисплей на основе HUB75 -
width
,heigh
- размер панели -
R1
-B2
,A
-E
,CLK
,OE
,LAT
- gpio соответствующих выводов HUB75 -
driver
- тип используемого чип-драйвера в панели, значение типа "integer" из enum enum shift_driver -
clkrate
- частота clock, значение типа "integer" из enum clk_speed -
latblank
- параметр Latch blanking -
clkphase
- параметр I2S clock phase -
minrr
- параметр min_refresh_rate -
colordpth
параметр Color Depth
Парметры настройки ленты и ХАБ75 хранятся в контроллере в файле display.json в корневом каталоге. Файл можно скачать/залить в контроллер через ftp или скачать по ссылке http://myesp/display.json
Структура файла представлена ниже. Файл содержит кофигурацию для обоих типов вывода - лент и хаб75 панели. Если какое-то из устройств не используется, соотвестствующие блоки можно удалить. Переключение вывода осуществляется через установку параметра "dtype"
.
{
"dtype": 0,
"hub75": {
"width": 64, "height": 32,
"R1": 13, "G1": 23, "B1": 12,
"R2": 14, "G2": 22, "B2": 27,
"A":26, "B":18, "C":25, "D":5, "E":-1,
"CLK": 33, "OE": 32, "LAT": 17,
"driver": 0,
"clkrate": 15000000,
"latblank": 2,
"clkphase": true,
"minrr": 60,
"colordpth": 6
},
"ws2812": {
"mx_gpio": 4,
"CLmt": 2000,
"width": 16, "height": 16,
"snake": true,
"vertical": false,
"vflip": false, "hflip": false,
"wcnt": 1, "hcnt": 1,
"tsnake": false,
"tvflip": false, "thflip": false,
"tvertical": false
}
}