Видео работы кронштейнов (длинная подробная версия тут)

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

Список всех частей

Вешаем

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

Если поставить экраны в ряд, то на большом расстоянии всё будет хорошо видно, а вот на маленьком — трей или меню пуск придётся рассматривать чуть ли не в бинокль. Напротив, если поставить экраны под 90° буквой П, то тогда близко всё будет хорошо, а вот при просмотре издали картинка на боковых экранах будет искажена.

Для того, чтобы пользоваться этой штукой было удобно, смотреть на экраны надо прямо, а не сбоку. Центральному экрану для этого делать ничего не надо, а вот бока должны шевелиться, подстраиваясь под ту точку наблюдения, с которой мы смотрим.

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

Отсюда растут ноги у потребности в регулировке углов, под которыми стоят боковые экраны. А это, в свою очередь, влечёт потребность в специальных кронштейнах. При этом, вручную поворачивать экраны — не самая лучшая идея. Придётся каждый раз буквально вставать и идти двигать один ТВ, потом другой. Это надоедает уже пока пишешь об этом. Так мы приходим ко второй мысли: оно должно само крутить экранами, чтобы можно было полностью расслабиться, уподобиться растению и окончательно врасти в кресло, изредка шевеля мышкой.

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

Да, всё это умеет шевелиться самостоятельно
Да, всё это умеет шевелиться самостоятельно

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

Brateck PLB-M03G
Brateck PLB-M03G

Данный кронштейн можно переворачивать, то есть он и левый, и правый вариант одновременно. Он достаточно умный, и если втыкается в мяукающее препятствие — недовольно шуршит, но останавливается. Плюс его можно шевелить руками, приводу от этого плохо не станет. Минусы — никакая точность и чрезвычайная разговорчивость. Тихо своё дело он не делает. Да, во всём виноваты железные шестерни.

В комплекте привод, железки, БП, крепёж, пульт, ИК датчик — ничего необычного. На этом можно было бы остановиться и просто повесить боковые экраны, как предлагает производитель: шесть маленьких дюбелей, чтобы держать тушу в 20 кг, да ещё и с рычагом больше метра. Как-то опасно.

Как оказалось, из этого всего нужен только привод
Как оказалось, из этого всего нужен только привод

Поэтому, первым шагом к строительству велосипедов стало придумывание пластины — прокладки, которая бы увеличила площадь и число точек крепления, и гарантировала бы, что экран не захочет самоуничтожиться. Смысл простой: прикручиваем кронштейн к пластине, а её уже к стене.

Казалось бы — сделал пластину и всё, можно вешать — но уже маячит следующая проблема: зазоры между экранами. Я задумал вешать телевизоры не просто рядом, а вообще рамками внахлёст. И если просто повесить их на кронштейны, то зазоры будут больше персонажа из начала статьи, и ни о каких «нахлёстах» речи не будет. Более того, зазоры будут меняться в зависимости от положения кронштейнов. А если всё‑таки попытаться сблизить экраны, то они будут задевать друг за друга. Можно, конечно, вместо пластины сделать прямоугольную трубу, отодвинув экраны от стены, но это лишь приближает нас к цели, а не решает проблему полностью. Настало время велосипедов.


Строим кронштейны

Кронштейн нужно поместить не ЗА телевизором, а ПОД телевизором
Кронштейн нужно поместить не ЗА телевизором, а ПОД телевизором

Для победы над зазорами нужно не только всё очень точно повесить: край телевизора при вращении должен стоять на месте. А чтобы край телевизора стоял на месте, он — этот край — должен лежать ровно на оси вращения. Конструкция кронштейна этого не предполагает никак — мы же не можем интегрировать кронштейн прямо в матрицу экрана.

Поэтому я решил сделать обвесы для кронштейнов, чтобы разместить механизм не за, а под телевизорами, добившись того, чтобы ось вращения кронштейна оказалась ровно под ребром экрана.

Пару недель экспериментов в Inventor, и я таки родил модельки, чтобы отправить их на производство, которое, к слову, заняло не слишком много времени. Для того, чтобы размеры подгонять было удобно, сначала я замоделил телевизор, упрощённо, но с соблюдением размеров, и уже вокруг этой модели делал всё остальное. И да — мои 2D «чертежи» оказались не нужны, достаточно было 3D‑файлов. Благо, чертежи делаются из 3D моделей буквально пару кликов.

В телевизорах для крепления стоит 4 отверстия с резьбой М6, и, чтобы телевизор можно было вешать на любой высоте, я предусмотрел кучу пазов шириной 5 мм. Казалось бы, что могло пойти не так.
В телевизорах для крепления стоит 4 отверстия с резьбой М6, и, чтобы телевизор можно было вешать на любой высоте, я предусмотрел кучу пазов шириной 5 мм. Казалось бы, что могло пойти не так.

По «чертежам» можно ознакомиться с размерами кронштейна. Предупреждение — если вы разбираетесь в инженерной графике, и при этом недавно осуществляли приём пищи, или даже чая, то спойлер лучше не открывать.

Недочертежи
База, которая крепится к стене
База, которая крепится к стене
Пластина, которая фиксируется на базе на определённом расстоянии. На неё уже крепится кронштейн
Пластина, которая фиксируется на базе на определённом расстоянии. На неё уже крепится кронштейн
Вертикальная балка, к паре которых крепится телевизор
Вертикальная балка, к паре которых крепится телевизор
Дополнительная прокладка между П-образной деталью кронштейна и вертикальными балками, задача которой сдвинуть вертикальные балки на 20 мм назад обратно к стене
Дополнительная прокладка между П-образной деталью кронштейна и вертикальными балками, задача которой сдвинуть вертикальные балки на 20 мм назад обратно к стене
База, пластина и кронштейн в сборе
База, пластина и кронштейн в сборе
Вид спереди
Вид спереди
Вид сверху основных элементов
Вид сверху основных элементов

Часть нюансов я забыл, и некоторые кусочки пришлось потом допиливать руками, но чуть‑чуть. Всё изделие было изготовлено в двух экземплярах для левого и правого телевизоров из стали Ст3 и решительно покрашено.

Главную роль в конструкции играет пара пластин, к одной из которых намертво приварено 6 стержней с резьбой — её вешаем на стену. На стержни пластины прикручиваем пластину поменьше, а на неё уже — сам кронштейн. На него вертикально вешаем две метровые балкопалки (квадратные трубы 30×30 с толщиной стенки 3 мм с кучей пазов во всех возможных местах), и уже на них — сам ТВ.

В частности, нужно было досверлить д̶ы̶р̶к̶и̶отверстия для крепления привода, и не забыть прикрыть основную пластину от опилок, чтобы она не поцарапалась :(
В частности, нужно было досверлить д̶ы̶р̶к̶и̶отверстия для крепления привода, и не забыть прикрыть основную пластину от опилок, чтобы она не поцарапалась :(
Прикручиваем привод
Прикручиваем привод
Теперь садим всё это на стержни
Теперь садим всё это на стержни
Чтобы оно ну уж точно не открутилось, с двух сторон ставятся пружинные шайбы
Чтобы оно ну уж точно не открутилось, с двух сторон ставятся пружинные шайбы

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

Помогите Даше найти пузырьковый уровень, врущий на 2 градуса
Помогите Даше найти пузырьковый уровень, врущий на 2 градуса

Из двух изготовленных комплектов я протестировал только один. Свою задачу эта штука выполняла исправно: край телевизора стоял на месте, зазора не было, стык был минимально узким, рабочий стол стал в два раза больше. Однако, поэксплуатировав сие некоторое время, я пришёл к выводу, что оно мне не подходит.

До калибровки
До калибровки
Кое-что пришлось потом отпилить
Кое-что пришлось потом отпилить

Под экраном теперь плавает квадратно‑гнездовой лангольер, беспощадно жрущий пространство для своего перемещения, пугающий котов и мешающий будущей подсветке делать своё подсветковое дело. Кстати — в этой версии уже предусматривалось крепление рам светодиодной подсветки. Это были Г‑образные детали, по паре на каждый телевизор, которые вставлялись вверху и регулировались по высоте.

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

Я решил всё‑таки сделать полностью кастомные кронштейны, которые вертят ТВ как положено, а заводской кронштейн повысить до должности актуатора. При этом, новоиспечённые кронштейны должны быть максимально скрытыми, чтобы на переднем плане торчало минимальное, или, в идеале, околонулевое количество деталей.


Строим ещё кронштейны

Вторая версия — это уже не обвес, а самостоятельное изделие. От покупного кронштейна теперь нужен только привод и мозги со всякими автоматическими остановками и управлением. Всё остальное отбрасываем. Полностью отказаться от приводов и заменить их на линейные актуаторы я не решился, ибо актуаторы нельзя шевелить вручную.

Больше недочертежей
Левый, открыт на 90°, вид сбоку
Левый, открыт на 90°, вид сбоку
Левый, открыт на 90°, вид спереди
Левый, открыт на 90°, вид спереди
Левый, открыт на 90°, вид сверху
Левый, открыт на 90°, вид сверху
Левый кронштейн, открыт на 90°
Левый кронштейн, открыт на 90°
Левый кронштейн, открыт на 90°
Левый кронштейн, открыт на 90°
Верхняя петля левого кронштейна, когда он открыт на 90°
Верхняя петля левого кронштейна, когда он открыт на 90°
Нижняя (!) петля левого кронштейна, когда он открыт на 90°, вид снизу
Нижняя (!) петля левого кронштейна, когда он открыт на 90°, вид снизу
Левый кронштейн открыт на 90°, вид снизу-сбоку
Левый кронштейн открыт на 90°, вид снизу-сбоку
Левый кронштейн открыт на 90°, вид снизу-с-другого-боку
Левый кронштейн открыт на 90°, вид снизу-с-другого-боку
Левый кронштейн с разных ракурсов и его ключевые узлы
Левый кронштейн с разных ракурсов и его ключевые узлы

Какие мысли роились в голове

Ключевым моментом всего действа является способ крепления боковых телевизоров так, чтобы они вращались вокруг своей грани. При этом, механизм, который всё это обеспечивает это, должен быть не виден. Ну, или, почти не виден.

С этой целью была мысль позаимствовать конструкцию у петли складных смартфонов, выполнив её в макроскопическом масштабе. Однако, быстро стало ясно, что разработка гигантского настенного Foldа — это не есть что‑то быстрое и простое. Дело пахнет некруглыми шестернями переменного радиуса, ибо круглые в моём случае не сработают. Софт для моделирования этого, скорее всего, придётся писать руками, со всеми вытекающими сроками. Всё это занимательно, но хотелось бы настолько сильно не задерживаться на данном узле.

Всё можно сделать проще — петли разместить над и под краем экрана, просто попытаться сделать их маленькими, в идеале — почти незаметными, чтобы не отвлекали, не портили вид, и не мешали будущей подсветке.

Ага, вот эти ребята
Ага, вот эти ребята

Была мысль позаимствовать конструкцию у центрифуг обогащения урана. Эти штуки сортируют уран, отделяя тяжелые фракции от лёгких с помощью центробежной силы. Берём бочку, накачиваем в неё газообразный уран, и быстро крутим. При вращении тяжёлый изотоп растекается по стенкам, а в центре скапливается более лёгкий, его перекачивают в следующую центрифугу, там опять сортируют, потом в следующую, и так много‑много раз, пока концентрация лёгкого изотопа не повысится до нужного уровня. Смысл в том, что крутятся эти штуки настолько быстро, что подшипники там просто не выживают, поэтому тяжеленная центрифуга целиком стоит на одной иголке, упирающейся в рубин.

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

Скорее всего оно издавало бы какой-нибудь прикольный звук
Скорее всего оно издавало бы какой-нибудь прикольный звук

Я слабовато (никак) соображаю в этих вопросах, но, вероятно, техпроцесс изготовления этих зубочисток будет похож на изготовление пружин — в спокойном состоянии они будут выгнуты вверх, чтобы внутреннее напряжение материала уравновешивалось тяжестью телевизора и оно, в итоге, держалось ровно. Можно будет сымпровизировать и добавить сердечник из углеродного волокна. И потом оно всё равно хрупнет, телевизор полетит в Вальхаллу, а зубочистка — в глаз. В общем, имхо, сделать такое можно, но долго, и, скорее всего, сложнее, чем всё остальное.

Плавно спускаемся с небес в Inventor и моделируем пластину, раму и петли с обычными мясистыми подшипниками, после чего отправляем на производство.

Что в итоге получилось

Основой конструкции служит стальная простыня толщиной 5 мм, которая прикручивается к стене в десяти точках — всё для того, чтобы телевизор не захотел сбежать из стены в компании кирпичей.

Вся конструкция выполнена из стали Ст3. Белый цвет в кронштейне, как и в телевизорах, выбран не случайно - ему надо с максимальным КПД переотражать ту часть света от подсветки, которая полетела не в стену, а в телевизор, чтобы дать ей новый шанс переотразиться в нужную сторону
Вся конструкция выполнена из стали Ст3. Белый цвет в кронштейне, как и в телевизорах, выбран не случайно - ему надо с максимальным КПД переотражать ту часть света от подсветки, которая полетела не в стену, а в телевизор, чтобы дать ей новый шанс переотразиться в нужную сторону

К простыне крепятся петли, на которых крутится несущая рама из квадратных труб. На несущую раму сбоку крепится телевизор, а сверху — рама подсветки. Привод вешается на стену отдельно.

Я вот подумал - а что если реально его так покрасить
Я вот подумал - а что если реально его так покрасить
Всё равно на экраны обычно смотрят с другой стороны
Всё равно на экраны обычно смотрят с другой стороны
Немножко проекций
Процедура открытия правого кронштейна на 90°, вид сверху, сечение на уровне рельса
Процедура открытия правого кронштейна на 90°, вид сверху, сечение на уровне рельса
Правый кронштейн открыт на 80°
Правый кронштейн открыт на 80°
Верхняя петля правого кронштейна, когда он запаркован вдоль стены
Верхняя петля правого кронштейна, когда он запаркован вдоль стены
Привод правого кронштейна, когда он запаркован вдоль стены
Привод правого кронштейна, когда он запаркован вдоль стены
Правый кронштейн открыт на 45°, вид с торца рамы
Правый кронштейн открыт на 45°, вид с торца рамы
Правый кронштейн открыт на 45°
Правый кронштейн открыт на 45°
Правый кронштейн открыт на 90°, вид сверху
Правый кронштейн открыт на 90°, вид сверху
Правый кронштейн запаркован к стене, вид сверху
Правый кронштейн запаркован к стене, вид сверху
Различные проекции правого кронштейна в полуоткрытом на 45° положении
Различные проекции правого кронштейна в полуоткрытом на 45° положении
Различные проекции правого кронштейна в открытом на 90° положении
Различные проекции правого кронштейна в открытом на 90° положении
Различные проекции правого кронштейна в запаркованном положении
Различные проекции правого кронштейна в запаркованном положении
Процедура открытия всей системы на 90°, вид сверху, сечение на уровне рельса
Процедура открытия всей системы на 90°, вид сверху, сечение на уровне рельса
Сборка из трёх телевизоров в полуоткрытом на 60° наверное состоянии, вид сверху
Сборка из трёх телевизоров в полуоткрытом на 60° наверное состоянии, вид сверху
Сборка из трёх телевизоров в полностью открытом на 90° состоянии, вид сверху
Сборка из трёх телевизоров в полностью открытом на 90° состоянии, вид сверху
Сборка из трёх телевизоров в запаркованном состоянии, вид сзади
Сборка из трёх телевизоров в запаркованном состоянии, вид сзади
Сборка из трёх телевизоров в полуоткрытом на 45° состоянии, вид сзади сверху
Сборка из трёх телевизоров в полуоткрытом на 45° состоянии, вид сзади сверху

Сборка из трёх телевизоров в полуоткрытом на 45° состоянии
Сборка из трёх телевизоров в полуоткрытом на 45° состоянии
Сборка из трёх телевизоров в открытом на 90° состоянии
Сборка из трёх телевизоров в открытом на 90° состоянии
Сборка из трёх телевизоров в полуоткрытом на 45° состоянии
Сборка из трёх телевизоров в полуоткрытом на 45° состоянии
Сборка из трёх телевизоров в полностью открытом на 90° состоянии
Сборка из трёх телевизоров в полностью открытом на 90° состоянии

Правый кронштейн открыт на 45°
Правый кронштейн открыт на 45°
Вид всей сборки с установленными телевизорами сбоку в состоянии полной запаркованности
Вид всей сборки с установленными телевизорами сбоку в состоянии полной запаркованности
Правый кронштейн с установленным телевизором в запаркованном состоянии, вид сверху
Правый кронштейн с установленным телевизором в запаркованном состоянии, вид сверху
Сборка из трёх телевизоров в открытом на 90° состоянии, вид сзади
Сборка из трёх телевизоров в открытом на 90° состоянии, вид сзади
Ой всё
Ой всё

Ключевой узел кронштейнов — петли. Стационарные части петель сделаны из стали 12 мм, внутри сидят радиальноупоротые подшипники. В них ставятся втулки, а сверху — вторая часть петель, потоньше. Вся петля — 19 мм в высоту и 40 мм в диаметре — получилась немножечко больше зубочистки. На фоне самих экранов это немного, но всё равно глаз цепляется. Сделать петли незаметнее можно, поместив им зеркало на нижнюю грань. Ну, или, какой‑нибудь круглый дисплей для умных часов, хотя здесь надо будет поставить ещё один контроллер и повозиться с синхронизацией картинок.

Верхняя петля правого кронштейна с подшипником внутри
Верхняя петля правого кронштейна с подшипником внутри
Распечатанный шаблон очень сильно облегчает жизнь
Распечатанный шаблон очень сильно облегчает жизнь
Верхняя петля правого кронштейна
Верхняя петля правого кронштейна
Верхняя петля левого кронштейна в разрезе. Интересно, существует ли печенье в глазури 12 мм
Верхняя петля левого кронштейна в разрезе. Интересно, существует ли печенье в глазури 12 мм
Верхняя петля левого кронштейна в разрезе. Интересно, существует ли печенье в шоколоадной глазури 12 мм
Нижняя петля правого кронштейна с установленным подшипником

Радиальные подшипники держат нагрузку поперёк оси, например, в автомобиле. Упорные подшипники держат нагрузку вдоль оси т. е. они лежат плашмя, а на них ставят тяжёлую штуку, и она на них крутится. А радиальноупорные подшипники — это смесь обоих видов, оно одинаково хорошо переносит оба вида нагрузок — именно то, что создаёт крутящийся телевизор. Подшипники обычно рассчитаны на что‑нибудь в духе 100'000 оборотов в минуту, а не на ленивый экран, ползущий 90 градусов 10 секунд, но в петлях они хороши: околонулевой люфт, отсутствие трения, износа и скрипа, поэтому почему бы и нет.

Пока вы пишите код, за вами наблюдают
Пока вы пишите код, за вами наблюдают

Объединившись с подсветкой, петли закономерно начали генерировать тени. Но то, что в теории должно было быть багом, на практике оказалось хорошей фичей. В предыдущей версии (которая держит экраны снизу) такого бы не было — сверху там пустота без каких‑либо конструкций.

Подвижная часть кронштейна — не монолит, и состоит из трёх частей: основная труба, к которой крепятся несущая конструкция и Г-образная надстройка для рам светодиодных лент и их блока питания 40А 5В.

Это правый, просто он неестественно выгнут на 180° влево. Большая чёрная штука - это кронштейн центрального экрана
Это правый, просто он неестественно выгнут на 180° влево. Большая чёрная штука - это кронштейн центрального экрана
Моделирование по Мизесу для разработки такой простой конструкции избыточно, но позволяет примерно увидеть, где оно хочет кукожиться, и как оно хочет это делать
Моделирование по Мизесу для разработки такой простой конструкции избыточно, но позволяет примерно увидеть, где оно хочет кукожиться, и как оно хочет это делать

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

Чтобы была возможность точно подобрать зазор между подшипником и рельсом, на его внутренние поверхности установлены спецпластины из метаматериала, позаимствованные у ближайшей табуретки, потому что я протупил размеры и подшипник звенел там как колокол. Когда телевизор открывается, подшипник катится по одному борту рельса, когда закрывается — по другому.

Во время парковки подшипник путешествует примерно на 200 мм
Во время парковки подшипник путешествует примерно на 200 мм

Да, подшипник с рельсом генерируют люфт, но на фоне люфта самого привода это мелочь. Подшипник сверху так и задуман непопадающим в свой верхний рельс, он запасной, на случай, если основной сломается :3.

Всё собирается в кучу болтами М8 различной длины, каждое соединение с обеих сторон снабжается обычной и пружинной шайбами, чтобы не было сюрпризов, для телевизоров же сделаны пазы, в которые, на этот раз, проходят болты М6.

Рядом с верхними петлями сидят ИК‑датчики для управления приводом с пульта. Пульты примитивные, оба кронштейна реагируют на оба пульта, не разбираясь кто кого имел ввиду. Однако, такое расположение ИК‑датчика позволяет, натренировавшись, направлять пульт так, чтобы его видели либо оба привода, либо какой‑то один конкретный.

ИК-приёмники светят красным во время работы механики
ИК-приёмники светят красным во время работы механики

Стоит упомянуть, что привод, хоть он и достаточно умный, не знает, что у него огромные люфты, а также то, какую роль он играет в данной поделке. Поэтому каждая парковка телевизоров сопровождается попыткой убить телевизор об стену — оно как‑бы, формально, притормаживает в конце, но только чуть‑чуть, и инерция экрана вместе с рамой явно превышает его ожидания. Можно, конечно, влезть в конструкцию привода и устранить люфты, но здесь я последовал принципу «если это тупо, но работает, то это не тупо».

Пара трудолюбивых пружинок, хоть и минимизирует проблему, всё равно медленно бурит шахту соседям — на стену просится сверкающая неодимовая шайба. Тогда парковка будет сопровождаться строгим «цок», а не вот этим всем.

Аудиоспектр шума работающего привода
Аудиоспектр шума работающего привода

Интересно, насколько возможно провести хотя бы приблизительный реверс‑инжиниринг механизма по спектру его шума и вибраций. Ведь, теоретически, каждая полоска в спектре — это шум, издаваемый двумя соприкасающимеся зубьями шестерней/зубчатых колёс или других трущхися частей, а по частоте этого шума можно примерно представить число соприкосновений зубьев в секунду. Дело пахнет нейросетями. А ещё можно добавить исходные данные в духе скорость/крутящей момент на входе и выходе и само изображение механизма. И потом сделать AR‑приложение с «рентгеновским зрением», которое будет в реальном времени накладывать на видеокартинку с работающим устройством 3D‑реконструкцию того, что, предположительно, творится внутри.


Система централизованного управления кронштейнами

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

Me and the boys
Me and the boys

Не желая постоянно жонглировать пятью пультами, управление приводами я решил вывести на компьютер. В конце концов, вся эта конструкция — монитор, и будет логичным, если она будет управляться с ПК.

В штатном режиме приводы управляются через ИК пульты последовательным нажатием двух кнопок, в духе «нажал влево», потом «ок» — оно поехало, нажал ещё раз «ок», оно остановилось. Нам нужно сделать очередной симулятор ИК‑пультов, коих уже было сделано тысячи, то есть особым образом мигать ИК светодиодом и обманывать ИК‑приёмник, чтобы он думал, что мы — пульт. Единственная незначительная особенность — у нас будет два ИК‑светодиода для двух приёмников отдельно, потому что приводы не умеют в адресность. А так, всё стандартно: приложение, RS232, контроллер, светодиоды.

Да, можно было бы отключить ИК‑датчики от приводов и подцепиться к ним напрямую, или вообще влезть внутрь, но смысла в этом я не видел. Прятать пары ИК приёмник‑передатчик я также не стал, чтобы можно было продолжать пользоваться пультами, если что. Была мысль снять корпус с приёмника и ввести светодиод передатчика прямо ему в конструкцию, но практика показала, что это не работает: он перестаёт видеть сигнал, поэтому оставил так. Предположу, что корпус выполняет функцию линзы.

Поскольку основной STM32 и так на 100% занят подсветкой, и с трудом переваривает проходящий через него объём информации (2 Мбит/с), управление приводами я решил сделать через отдельный контроллер. И, разумеется, как следует всё обдумав, поразмыслив над этим и руководствуясь логикой и здравым смыслом, я выбрал для мигания двумя диодами Arduino Mega.

Для данной платы был изготовлен специальный полиэтилентерефталатовый корпус с защитой от пыли и системой вентиляционных каналов, после чего устройство было в особом порядке установлено в расчётной зоне протекания конвективных потоков.

От ПК до контроллера идёт очень длинный и очень экранированный USB кабель, а от контроллера к светодиодам — два метровых акустических провода (продавец сказал звук будет отличный — почти не соврал). Светодиоды сидят максимально близко к ИК‑приёмникам.

Программная часть

Как и все подобные штуки, эта начинается с реверс‑инжиниринга протоколов управления. Берём осциллограф с фотодиодом и записываем на него все команды, которые нам нужны, заодно сразу на месте мерим длительность импульсов — протокол управления у кронштейнов банален, это не кондиционеры с их выносящими мозг протоколами. И вот только после этого вспоминаем, что существует флипер. Собственно, тут вообще вся система управления не представляет из себя что‑то сложное.

На стороне ПК, в минималистичном солнечном окошке, ответственном за управление подсветкой, добавляем блок управления кронштейнами. На каждую команду подключение COM инициируем заново, передаём данные, затем тут же отключаемся.

Нет ничего более постоянного, чем временное
Нет ничего более постоянного, чем временное

Каждая команда состоит всего из трёх байт: номер первого пина, номер второго пина и ID сигнала, который нужно отмигать одновременно на двух этих пинах. Готовые последовательности миганий заранее вбиты в контроллер, и каждому присвоен соответствующий ID. То есть, технически, ПК может указать вообще любые два пина, которыми контроллер должен помигать, а вот как именно мигать — только один из готовых наборов сигналов. Сделано это на случай, если нужно будет перподключить светодиоды на другие пины, если я опять чего‑нибудь там сожгу.

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

Код передачи команд со стороны ПК (C#, .NET 6)
public async Task SendCommand(TVMechanicCommand command)
{
    int comIndex = COMPort;
    var s = new SerialPort("COM" + comIndex); //Берём нужный компот
    await Task.Run(() => //Всё асинхроним, чтобы интерфейс точно не затупил
    {
        try
        {
            lock (getComPortLocker(comIndex))//Чтобы не вести перекрёстный огонь по одному компоту
            {
                s.Open(); //Открываем
                try
                {
                    var bytes = new byte[]
                    {
                        (byte)IR_Pin1,
                        (byte)IR_Pin2,
                        (byte)command
                    };
                    s.Write(bytes, 0, bytes.Length); //Заливаем
                }
                finally
                {
                    s.Close(); //Закрываем
                }
            }

            //Запоминаем последнее положение
            //Не все положения телевизоров надо запоминать
            if (command
            is TVMechanicCommand.Wide
            or TVMechanicCommand.Narrow
            or TVMechanicCommand.Park
            or TVMechanicCommand.Full)
                TeoreticalCurrentState = command;

            //Запускаем эвент если надо
            var e = AfterSendCommand;
            e?.Invoke(this, command);
        }
        //В релизе стойко переносим тяготы и эксепшены
#if !DEBUG
        catch(Exception er)
        {
            LogWriter.LogErrorAsync("Кронштейны спят, не будите, уходите", er);           
        }
#endif
        //Чтобы компилятор не ныл в дебаге про одинокий try
        finally
        {

        }
    });
}

Код приёма и обработки команд со стороны Arduino (не для перфекционистов)
const int button_right = 1;
const int button_1_and_ok = 2;
const int button_ok = 3;
const int button_2_and_ok = 4;
const int button_left = 5;

int IR_PIN = 12;
int CONTROL_PIN = 13;

//Установить уровень и подождать сколько-то
void SET(int value, int ms, int mcs)
{
	digitalWrite(IR_PIN, value);
	digitalWrite(CONTROL_PIN, value);

	if (ms > 0)
	  delay(ms);
	  
	if (mcs > 0)
	  delayMicroseconds(mcs);
}

//Разные вариации вкл-выкл с интервалами и без
void ON(int ms, int mcs){SET(1, ms, mcs);}
void OFF(int ms, int mcs){SET(0, ms, mcs);}
void ON(int ms) { ON(ms, 0); }
void OFF(int ms) { OFF(ms, 0); }
void ON() { SET(1, 0, 0); }
void OFF() { SET(0, 0, 0);}

//Команды управления
void bracketButtonLeft()
{
  int small = 6, big = 36;
   for (int i = 0; i < 2; i++)
   {
    ON(big); 
    OFF(small);
    ON(small); 
    OFF(small);
    ON(small);
    if (i == 0) 
      OFF(big);
    else
      OFF();
   }
}

void bracketButtonOk()
{ 
    ON(25, 00); 
    OFF(5, 00);
    ON(5, 000); 
    OFF(5, 00);
    ON(5, 000);
    OFF(5, 00);                                             
}

void bracketButtonRight()
{ 
  int big = 41, small = 5, pause = 30;
  ON(big);
  OFF(small);
  ON(small);
  
  OFF(pause);

  ON(big);
  OFF(small);
  ON(small);
  OFF();
}

void bracketButton2andOk()
{ 
  
  ON(21);
  OFF(11); //11?
  ON(5);
  OFF(10);
  ON(5);
  
  OFF(36);

  ON(21);
  OFF(11); //11?
  ON(5);
  OFF(10);
  ON(5);
  
  OFF();
}

void bracketButton1andOk()
{ 
  
  ON(21);
  OFF(20); //11?
  ON(16);
  OFF(30);
  ON(20);
  OFF(20);
  ON(16);
  OFF(10);
}


void doCommand(int cmd)
{
	  if (cmd == button_right) bracketButtonRight();
	  if (cmd == button_1_and_ok) bracketButton1andOk();
	  if (cmd == button_ok) bracketButtonOk();
	  if (cmd == button_2_and_ok) bracketButton2andOk();
	  if (cmd == button_left) bracketButtonLeft();
}

void loop()
{
    //В цикле подключаемся
	 Serial.begin(9600);
    
	 while (Serial.available() < 3) //Ждём пока накопится 3 байта
	  delay(1);
	 
	 
	  int pin_1 = Serial.read(); //Кушаем 1 байт - номер 1 пина
	  int pin_2 = Serial.read(); //Кушаем 2 байт - номер 2 пина
	  int command = Serial.read(); //Что в эти пины нужно послать
	  
      if (pin_1 > 0)
	  {
		IR_PIN = pin_1; //Да, это бест практикс, ес
		doCommand(command);
	  }
  
	  if (pin_2 > 0)
	  {
		IR_PIN = pin_2;
		doCommand(command);
	  }
	 
	 Serial.end(); //Отключаемся, потому что что ещё нужно
 }

У привода есть команды «двигайся назад», «двигайся вперёд», «стоп», а также «прими положение 1» и «прими положение 2» — два запоминаемых положения, которые я с помощью пультов настроил на примерно 30° и 60°. Если приводу дать команду двигаться куда‑то, и не останавливать его, то он дойдет до крайнего положения и остановится сам. Из всего этого можно получить 4 положения: полная парковка вдоль стены, 30°, 60° и 90°.

Если надо установить какое‑то промежуточное состояние, то просто говорим «открывай себя полностью», и в нужный момент останавливаем привод. И да, обратной связи тут нет — солнечное окошко не знает, в каком положении кронштейны, но помнит, в какое положение последний раз они были поставлены, благодаря чему, при необходимости, может восстановить телевизоры в исходное положение. Вначале я хотел поставить ультразвуковые дальномеры, чтобы комп мог получать обратную связь и понимать, где сейчас телевизоры, но практика показала, что отсутствие обратной связи почти не создаёт проблем, поэтому оно до сих пор машет экранами вслепую.

При запуске солнечного окошка автоматически отдаётся команда «стоп» на оба канала (на случай, если они сейчас двигаются), после чего следует команда «поставить на 30°». При закрытии программы отдаётся команда парковки. Когда комп выключается, Windows командует всем программам закрыться, в том числе и солнечному окошку, а оно, выключаясь, командует запарковать телевизоры.

Да, без резисторов
Да, без резисторов

У данных телевизоров заставка «чёрный экран» — это отключение экранов, а отключение экранов — это заставка. Потому что при отсутствии сигнала они начинают показывать всякие картины, в то время как от «чёрного экрана» OLEDы перестают светиться полностью.

При отсутствии сигнала телевизоры показывают картины
При отсутствии сигнала телевизоры показывают картины

Поэтому отключение экранов отключаем, заставку ставим. Солнечное окошко следит за этим делом, и, видя запущенную заставку, паркует экраны, а когда заставка внезапно исчезает — ставит экраны обратно.

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


Соединяем телевизоры с видеокартой

Теперь надо заставить работать сами экраны. Наша цель — единый ультрасосисочный панорамный экран, показывающий картинку с вот такими ТТХ:

Топовая видеокарта здесь ощущается как средняя. Если на обычном мониторе (который 1280×1024 @ 60 Гц) видеокарте надо считать 80 МПикс/сек, на FullHD — 125 МПикс/сек, то здесь ей придётся обрабатывать 3 миллиарда пикселей в секунду. И да, современные игровые видеокарты больше нельзя объединять по 2–3 штуки.

Идём дальше. Чтобы вой рендерящего системного блока с армией вентиляторов был абсолютно неслышим, он обитает в отдельном помещении. Поэтому, провода нам понадобятся длинные. Тут в дело вступают законы физики, которые я не буду тут расписывать, скажу просто: чем больше данных нам надо передать через провод, тем хуже у него с помехоустойчивостью и длиной. Быстрые данные боятся помех и длинных кабелей. А тут три картинки по 30 ГБит/с.

Итак, нам нужны три проводка HDMI самой суровой на сегодняшний день версии 2.1 и длиной 10 метров.

Заходим в магазины и видим, что предел наших мечтаний — 1 метр. Физика. Бывает и 3 метра сомнительного качества. А надо нам 10 метров. Что делать? Выручить нас может такое чудо, как оптический HDMI‑кабель, в котором сигнал временно превращается из электрического в свет. Такие кабели бывают даже стометровыми.

Питаются эти модуляторы от самого HDMI
Питаются эти модуляторы от самого HDMI

Внутри штекеров этих кабелей свой маленький мир: на стороне входа передатчик, преобразующий электрические сигналы в световые, а на стороне выхода — приёмник, делающий наоборот. Устройства, которые соединены такими кабелями, ничего не подозревают — для них это обычный провод. В обычных розничных магазинах эти кабели почти не встречаются, самый верный способ их найти — алиэкспресс. К слову, там же обитает второй вид ультрадлинных кабелей — электрические с активными усилителями.

Обратную сторону покусали коты, поэтому только анфас
Обратную сторону покусали коты, поэтому только анфас
Оптические HDMI утончённые и нежные, и очень не любят перегибов, буквально
Оптические HDMI утончённые и нежные, и очень не любят перегибов, буквально

К телевизорам кабели подключаем без проблем — разъёмов здесь HDMI 2.1 много. А вот у компьютера, точнее, видеокарты, нас ожидает сюрприз — у неё только один нужный HDMI 2.1 (48 ГБит/с), всё остальное — это три DisplayPort 1.4 со скоростью 26 Гбит/с (из физических 32 только 26 Гбит/с используется под данные). А нам надо 30 Гбит/с. Дело плохо.

Три DisplayPortа, которые не подходят, и один HDMI, который подходит
Три DisplayPortа, которые не подходят, и один HDMI, который подходит

На помощь приходит такая штука, как Display Stream Compression (DSC) — сжатие сигнала, похожее на цветовую субдискретизацию YCbCr, но более умное, и визуально картинку оно почти никогда не портит, даже шрифты. Срабатывает оно автоматом, делать ничего не надо. Если оно поддерживается устройствами, разумеется.

DisplayPort 1.4 превращается в HDMI 2.1
DisplayPort 1.4 превращается в HDMI 2.1

Хорошо, DisplayPort 1.4, всё же, справится с нашей картинкой. Но телевизоры и кабели у нас HDMI. Нужны переходники, и не простые, а способные переварить нашу картинку. Единственный, который я нашёл — это Club3D CAC-1085. Два таких я заказал в известном немецком магазине. Ждём доставки, собираем, запускаем.

Если сделать так, оно может заработать, но без HDR
Если сделать так, оно может заработать, но без HDR
Особенности объединения телевизоров в виртуальный экран

В игровых картах Nvidia объединение делается через функцию Surround, в профессиональных — через Mosaic. Первая может ставить до 5 экранов и только в ряд, вторая, более профессиональная, может 2×2, 3×4 и ещё кучу всего, и вообще очень гибкая. У AMD эта штука называется EyeFinity.

Заходим в «Панель управления Nvidia» в блок «Настройка Surround, PhysX», жмём «Настройка...».

У AMD это всё тоже есть
У AMD это всё тоже есть

При объединении экранов, крайне желательно, чтобы они были одинаковыми. Если какая‑то функция/фишка (будь то GSync, HDR или 120 Гц) отсутствует хотя бы у одного экрана, то единый виртуальный экран её не унаследует.

Драйвер Nvidia упорно хочет думать, что 4096×2160 для этих телевизоров - родное разрешение
Драйвер Nvidia упорно хочет думать, что 4096×2160 для этих телевизоров - родное разрешение

Отмечаем все наши телевизоры в списке, располагаем их в правильном порядке, жмём «Включить Surround». Экраны гаснут, и вся комната погружается во тьму. Все три монитора «LG TV SSCR2» исчезают из системы, а заместо них появляется новый монитор «NV Surround», после чего картинка возвращается.

После этого, если надо, добавляем/удаляем разрешения экрана, а нам надо, потому что драйвер упорно хочет думать, что у телевизоров родное разрешение 4096×2160, а не 3840×2160, из‑за чего картинка сплющивается по горизонтали, шрифты убиваются.

Скрин в натуральную величину 11520х2160
Скрин в натуральную величину 11520х2160

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

Благодаря этому, развёртывание обычных оконных приложений на весь экран по‑прежнему происходит только на одном мониторе (хотя Photoshop всё равно разворачивается в сосиску, ему так нравится), то, что это единый экран ощущается только в играх и багах когда панель задач опять улетела на потолок, а меню пуск открывается в трёх метрах (буквально) от неё >:(

Игра, запущенная полноэкранно, заполняет собой весь виртуальный экран. Дальше уже зависит от игры, насколько она будет адекватно со всем этим работать. Большинство моих любимых высокоинтеллектуальных игр, вроде DOOM и Serious Sam, работают с этим нормально, хотя HUD почти всегда разбегается по углам.

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

Есть мысли написать драйвер‑обёртку виртуального монитора, который эту проблему довольно хорошо бы пофиксил, не полностью, но в большей степени. В целом, можно просто запарковать телевизоры вдоль стены, и тогда как‑бы — искажения рендеринга боковушек скомпенсируются тем, что эти боковушки видно под углом, и это даже работает, но погружение хуже, и такое положение лучше использовать для прям совсем уж мясных игровых моментов, когда обзор и своевременное реагирование на ситуацию приоритетнее.

Чтобы стыки между экранами были как‑бы не вставлены в картинку, разделяя и раздвигая её, а перед картинкой, создаётся дополнительное виртуальное разрешение, чуть шире, которое используется только в играх (хотя рабочему столу тоже можно его поставить, но смысла особого нет). И да, те области, которые «за» рамками, мы не видим, но комп тратит на них вычислительные ресурсы, честно их обсчитывая, но это очень мало в процентах. Функция называется «Коррекция рамки», или «Bezel correction».

Теперь надо обеспечить вменяемую цветопередачу, разрешение, разрядность, частоту кадров и диапазон вывода. Для проверки режима RGB/YCbCr можно использовать замечательный тест, придуманный Dmitry_Dor.

4:4:4 видно, а 4:2:2 почти нет? Всё хорошо.
4:4:4 видно, а 4:2:2 почти нет? Всё хорошо.

Для того, чтобы пользователю не было скучно, при установке одного параметра и нажатии кнопки «Применить» окно драйвера подвисает, после чего другие параметры могут выставиться обратно в исходное положение. Нужно отгадать правильную последовательность. Если выставить параметр и убить процесс то настройка может сохраниться. Вообще, после обновления прошивок переходников эти приключения почти перестали происходить.

Добро пожаловать в квест
Добро пожаловать в квест

После объединения экранов, всё работает, кроме HDR. Потому что экраны разные, по мнению драйвера. У нас недостаточно одинаковости, всё должно быть одинаковым, одинаковые экраны одинаково подключенные одинаковыми кабелями через одинаковые переходники в одинаковые разъёмы, иначе мы работать не будем. Мы же игровая видеокарта, а не профессиональная. Спасибо Yolenzo с форума thg.ru, который помог мне разобраться в этом вопросе.

Ну ок, берём третий переходник. Ждём. Привезли. Ура, HDR заработал. Из видеокарты теперь торчит целый початок переходников. И греются они не слабо. «Во избежание перегрева, явно лучше держать их подальше от горячего выхлопа видеокарты», подумали разработчики и сделали переходникам максимально короткий проводок подключения. Думал приколхозить туда вентилятор 120мм, но оказалось, что достаточно не давать им прижиматься друг к другу.

Было много веселья с тем, что после объединения оно упорно не хотело видеть то 120 Гц, то HDR, то 10 бит, то ещё что‑нибудь. Стабильно всё заводилось только на драйвере версии 497.09. Чуть обновился — всё, вот тебе 60 Гц, YCbCr и SDR. Я долго‑долго с этим воевал, пока, наконец, не обратился в техподдержку переходника, которая молниеносно ответила мне новой прошивкой, заливаемой в переходник через то самое USB‑питание.

Работает
Работает

После этого, при подключении экранов без Surround иногда случались всякие баги (например, «данный экран не поддерживает 120 Гц, в отличие вот того, который точно такой же, и работает точно также, и тоже поддерживает 120 Гц»), но после объединения и они исчезли. Единственное, чего не хватает — G‑Sync — данная функция не поддерживается переходником.

Собственно, на этом всё: теперь у нас большой самошевелящийся 24-мегапиксельный рабочий стол c отличными цветами и очень узкими стыками. И он работает.


Заключение

Покрутить 3D модели получившихся кронштейнов в браузере можно тут. Они исправно функционируют уже больше года, и нареканий никаких нет. К surroundу привыкаешь не быстро, а очень быстро. Уровень погружения, за счёт панорамного вида, чёткости и качества картинки, запредельный.

Осталось сделать подсветку, а для неё нужно будет опять делать рамы, жечь контроллеры, писать драйвера, жечь ленты, жечь блоки питания, писать управляющее ПО, ещё жечь контроллеры, и делать прочие, больше программно‑электрические, нежели механические, штуки.

Комментарии (72)


  1. Maximov_psy
    04.08.2023 05:31
    +29

    Титанический труд, моё почтение!

    Любопытства ради, если бы вы делали кит-комплект такого чуда на заказ, сколько бы он стоил? :)


    1. VBDUnit Автор
      04.08.2023 05:31
      +13

      Спасибо! Я не думаю, что сильно много, потому что это уже больше производство, причем не сильно сложных деталей, а не исследования с экспериментами и переделываниями.

      С другой стороны, если из этого делать продукт — надо предусмотреть больше важных штук, например безопасность. В текущем варианте петли, похожие на ножницы по металлу, передают привет попугаям, кошкам, собакам и детским пальцам. Очень большой, тотальный и бескомпромиссный. То же самое с рельсами. В продукте такое, имхо, допускать не надо, даже если это не серийная продукция, а кит‑комплект. Но, возможно, я преувеличиваю.


  1. dgoncharov
    04.08.2023 05:31
    +3

    Офигенно! Сколько времени занял процесс?


    1. VBDUnit Автор
      04.08.2023 05:31
      +3

      Спасибо!

      Конкретно на изготовление кронштейнов, от даты файлика самой первой простой пластины до даты монтажа правого телевизора, ушло примерно 5 месяцев. Но это не сплошные работы, работы, работы — довольно много простоя, потому что надо было придумывать и переделывать всякие штуки, ждать детали и прочее. Плюс, какое то время, я работал с двумя телевизорами и первой версии кронштейна, чтобы понять, надо оно мне или надо переделывать. Как показала практика, не зря:)


  1. diogen4212
    04.08.2023 05:31
    +2

    у Вас не бывает, что сигнал с монитора иногда пропадает на пару секунд в случайные моменты времени? У меня оптический кабель Vention как в этой статье (только на 5 метров), подключён к HDMI 2.1 видеокарты, и такое происходит примерно раз в несколько дней. Не понятно, проблема в телевизоре или кабеле.


    1. MountainGoat
      04.08.2023 05:31
      +2

      У меня такое бывает, когда 2 монитора воткнуто, но второй выключен. Если второй включить, или наоборот вынуть кабель - проблем нет.


      1. diogen4212
        04.08.2023 05:31
        +1

        хм… у меня монитор 2К по DisplayPort и телевизор 4К по HDMI, обычно я передаю сигнал только на один из них (чтобы нагрузка на видеокарту была поменьше и одновременно оба они мне не очень нужны)… теперь вот задумался


      1. Popadanec
        04.08.2023 05:31

        Аналогично. Второй монитор используется для просмотра фильмов(первый в этот момент выключен) и он то эпизодически моргает. Но когда включен первый, но выключен второй, этого не происходит. Перетыкание и замены проводов не помогли.
        Даже не моргает, а пропадает звук на пару секунд и появляется информация о потере сигнала.
        Монитор промышленный с кучей наворотов и аналоговых входов, списанный с банка, как то видимо фризит картинку, чтобы не было моргания.
        Я думал у меня проблема с портом или электроникой, а оно вон как.


    1. VBDUnit Автор
      04.08.2023 05:31
      +4

      Бывало раньше. Конкретно в моём случае, такое происходило если забыть подключить питание USB к каждому из переходников. Сначала всё работает, потом картинка начинает мигать всё чаще, потом пропадает. Также, если не забыть питание, но при этом, перегреть переходники — она тоже может начать пропадать, но не так активно.

      Есть смутное предположение (объясняющее почти всё, а не всё), что это, всё же перегрев, второй вариант — ему не хватает энергии. Для начала, имхо, стоит попробовать воткнуть его не напрямую в видеокарту (там горячо), а через какой‑нибудь небольшой удлинитель, хотя бы сантиметров 30, и отвести его в сторону, чтобы штекер не был рядом с горячим воздухом видеокарты.


      1. JerleShannara
        04.08.2023 05:31
        +1

        Питание +5 Вольт, которое даёт видеокарта на HDMI/DP там весьма слабое, да и предназначено по большей части для того, чтобы что-то типа eeprom с параметрами дисплея запитать. Сталкивался с такими приколами(моргает, вырубается и т.д.) когда вешал кучу активных переходников, которые питались от HDMI/DP, один-два ещё работали, но 4 штуки уже почти с гарантией делали феерической on-off-on шоу. Стоило вколхозить к переходникам USB питание, как такие артефакты исчезали. Маньяки могут попробовать модифицировать видеокарту, чтобы она могла побольше отдать по +5, но это много чем черевато.


        1. VBDUnit Автор
          04.08.2023 05:31
          +2

          По идее, данную проблему можно решить чем-то подобным

          Можно наверно даже руками такое сделать на диоде Шоттки


    1. nikee
      04.08.2023 05:31

      Заметил закономерность, что моргает на секунду при включении холодильника.


  1. ev_i
    04.08.2023 05:31
    +8

     И да, современные видеокарты нельзя объединять по 2–3 штуки.

    NVidia Quadro карты имеют порт синхронизации через отдельную карту Quadro Sync. Пример в этом видео https://youtu.be/nthOpo5tQDk?t=290

    .


    1. VBDUnit Автор
      04.08.2023 05:31
      +5

      Точно, спасибо за дополнение! Я имел ввиду именно игровые видеокарты, уточнил в статье.

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

      ЕМНИП, в старых игровых картах был физических мостик SLI (~ 1 Гбит/с) для синхронизации, а в профессиональных это делалось через Quadro Sync — очень суровая штука, распределяющая рендеринг мультидисплея не то что по нескольким картам, а даже по нескольким физическим машинам. Правда, вряд ли игры на это согласны:)

      Потом они сделали высокоскоростной NVLink, появившийся сначала в профессиональных картах, а потом в игровых GeForce RTX 2000 и GeForce 3000 серии. Скорость NVLink даже позволяла, в некоторых случаях, делать так, чтобы память видеокарт складывалась. Но в GeForce 4000 серии игровых карт это порезали. А вот в RTX 6000, или, скажем RTX 8000 оно есть.


      1. ev_i
        04.08.2023 05:31
        +1

        Во второй части видео показано как оно геймится https://youtu.be/Toft6fMvByA

        С производительностью там большие проблемы, но эксперимент интересный


  1. sidristij
    04.08.2023 05:31
    +2

    Вы бы договорились с производителем кронштейнов да в серию :)


    1. VBDUnit Автор
      04.08.2023 05:31
      +1

      Попробую написать ему, посмотрим, что из этого выйдет :) Но не уверен, что много людей готовы пускать в свой дом такое чудище :)


      1. AlexM2001
        04.08.2023 05:31
        +1

        По статистике Steam довольно много народа играет на трёх телевизорах или мониторах

        Цены на телевизоры 4К упали в разы за последние несколько лет.

        И да, АМД уже лет десять выпускает недорогие видеокарты с 6 видевыходами. Но 6 телевизоров к одной видекарте это для 2D)


  1. iamoblomov
    04.08.2023 05:31
    +1

    Это конеечно мегакруто. Но ИМХО экраны слишком здоровые, а в шее подшипников нет.

    У меня 2К 27"+34"+27" и еще 4к телек 42" сверху, все на кронштейнах с газлифтами. И то голова крутится как у летчика в кокпите истребителя.

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


    1. VBDUnit Автор
      04.08.2023 05:31
      +2

      По идее, можно обойтись одной сервой, сделав как‑то так:

      Рельс может быть горизонтальным, диагональным, или вообще, кривым и для любой траектории. Но это надо точно всё спроектировать.


  1. domage
    04.08.2023 05:31
    +27

    Хабр - торт


  1. oracle_schwerpunkte
    04.08.2023 05:31
    +3

    Конструкцию из петель для дверей мебели + электрический доводчик не рассматривали?
    Там встречаются интересные механические решения, например, для накладных дверей для встроенной техники.


    1. VBDUnit Автор
      04.08.2023 05:31

      Были мысли в ту сторону, петли для мебели иногда имеют весьма замысловатые траектории движения, но глубоко не копал — по моим предположениям, понадобилось бы опять выкручиваться, чтобы подогнать оси вращения. Но, возможно, я просто плохо искал.


    1. Wizard_of_light
      04.08.2023 05:31
      +2

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


  1. dskonev
    04.08.2023 05:31
    +16

    Понял, что статья заслуживает лайка сразу, как только увидел тело, неистово бьющееся в точке пересечения трёх осей, и пролетающее мимо офисное кресло.

    позаимствовать конструкцию у центрифуг обогащения урана

    А после этой фразы, рука непроизвольно начала мотать вниз, искать кнопочки голосования прямо сейчас :D


  1. firs058
    04.08.2023 05:31
    +4

    Это все, конечно, весело, но вы бы лучше рассказали про состояние панелей телевизоров. Прошел год с Вашего поста:

    Как телевизоры поживают в роли мониторов?


    1. VBDUnit Автор
      04.08.2023 05:31
      +7

      По удобству и визуалу нареканий нет вообще. Разве что иногда, довольно редко, при работе с программой с тёмным интерфейсом, они могут неуместно самозатемниться, потому что обнаруживают статику. В целом, глаза устают гораздо меньше, потому что сидишь, в среднем, дальше. Головой вертеть нужно не так уж и сильно, как ожидается от такой сборки, просто нужно правильно выставлять угол экранов. К такому количеству места уже привык, иногда даже мало — использую виртуальные рабочие столы (да, серьёзно), потому что, например, 3Ds MAX может сожрать все три монитора — левый на редактор материалов, центральный на сам 3дмакс, правый на всякие окна настройки.

      По выгоранию всё ок (эксплуатация 10–15 часов в сутки). Периодически включение компа сопровождается таким вот сообщением:

      После нажатия "Да" телевизоры отключаются на 5 минут, потом самостоятельно включаются. Если играть в игры с HDR, то такое происходит раз в 2-3 дня, если работать (и не с HDR видео), то где-то раз в неделю
      После нажатия "Да" телевизоры отключаются на 5 минут, потом самостоятельно включаются. Если играть в игры с HDR, то такое происходит раз в 2-3 дня, если работать (и не с HDR видео), то где-то раз в неделю

      Сейчас для уточнения вопроса сфотографировал в RAW без сжатия красную, зелёную, синюю и белую (матрицы WRGB) заливку на центральном экране.

      Красный, (7,76 Мб, сжатие без потерь)

      Зелёный (6,85 Мб, сжатие без потерь)

      Синий (6,39 Мб, сжатие без потерь)

      Белый (6,12 Мб, сжатие без потерь)

      Как анализировать

      Это не сложно — достаточно с помощью фильтра «Кривые» в любой программе усилить контраст исследуемой зоны, и все перепады и отпечатки станут заметными.

      Если надо, могу позже боковушки сделать, но они, в среднем меньше эксплуатируются, чем центр.

      Меры, которые я предпринимаю, чтобы снизить риск выгорания
      • Заставка чёрный экран через 6 минут

      • 12 000 обоев рабочего стола, меняющиеся каждую минуту рандомно

      • Значки на рабочем столе выкл

      • Яркость SDR контента 25%, HDR яркость в телевизорах в режим Авто (не HGiG и не Выкл)

      • Кондиционер (хотя без него в комнате +30° С наступает через полчаса, поэтому мне он тоже нужен)

      • Рамы подсветки (которая, на минуточку, 440 Вт) находятся в сантиметре от экрана, чтобы не греть его лишний раз

      При этом, в самих телевизорах яркость OLED стоит на максимум. В итоге, при работе с обычным контентом, яркость нормальная, как у мониторов, а когда появляется HDR — они начинают жарить во всю силу, что, собственно, от них и требуется.


      1. DaneSoul
        04.08.2023 05:31
        +1

        Рамы подсветки (которая, на минуточку, 440 Вт)

        Почти пол киловатта светодиодов?!
        Это же мощность не слабого такого прожектора для какой-нить стройки или ангара.
        Или я что-то не правильно понимаю и цветные светодиоды считают как-то по другому?


        1. VBDUnit Автор
          04.08.2023 05:31
          +4

          Да, всё правильно. Заднюю подсветку обслуживают три блока питания по 5В 40А каждый. Мощность большая нужна потому, что после отражения от стены свет должен по яркости не уступать яркости телевизоров, а они выдают в пике примерно 900 кд/м² яркости.

          Разумеется, в большинстве случаев и яркость экранов, и яркость подсветки в разы меньше, но если надо, оно делает своё дело. Например, когда в игре кидают слепящую гранату :)


          1. Serge78rus
            04.08.2023 05:31
            +10

            Под Вашу инсталляцию надо написать симулятор рабочего места сварщика )


            1. VBDUnit Автор
              04.08.2023 05:31
              +4

              А ведь виртуальным электродом можно управлять с помощью стилуса на планшете — сила распознаётся, угол тоже. Хм...


              1. Serge78rus
                04.08.2023 05:31

                Расстояние (длина дуги) не распознается. Ну и без симуляции прихватывания электрода полнота ощущений сильно пострадает.


        1. Popadanec
          04.08.2023 05:31
          +1

          У меня один монитор 46" штатно потребляет до 240Вт. Дома конечно такая яркость обычно не нужна и он работает в сильно экономичном режиме.


  1. maxim_koksharov
    04.08.2023 05:31
    +1

    Моё почтение! Это просто великолепно!


    1. VBDUnit Автор
      04.08.2023 05:31

      Спасибо! :)


  1. tmxx
    04.08.2023 05:31
    +1

    имеет смысл использовать двухрядные самоустанавливающиеся подшипники


    1. VBDUnit Автор
      04.08.2023 05:31

      Я видел такие, но думал, что они для моей задачи совсем уж, я бы сказал, тотально избыточны. Разве они дадут тут какие‑то преимущества? Плюс, они, насколько я понимаю, толще, чем обычные.


      1. tmxx
        04.08.2023 05:31
        +2

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

        Они не намного толще


        1. VBDUnit Автор
          04.08.2023 05:31

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


          1. Dmitry_Dor
            04.08.2023 05:31

            фактически, было бы всё то же самое
            Шариковые радиальные сферические (самоустанавливающи­еся) подшипники хуже держат осевую нагрузку, чем обычные радиальные (и тем более радиально-упорные) шарикоподшипники. Кроме того, для их нормальной работы требуется наличие гарантированной радиальной нагрузки, без этого им может поплохеть (например в натяжных роликах специально увеличивают натяжение ремня, чтобы такой подшипник всегда был гарантировано нагружен).
            ₽$ Но с другой стороны, это относится к обычному машиностроительному применению (где у меня есть некоторый опыт) с длительной работой на довольно больших скоростях — в данном же случае при периодической работе с околонулевой скоростью самоустанавливающийся подшипник возможно и стерпит подобное к себе отношение.
            ₽₽$ Хотя в таких условиях и обычный шарикоподшипник ИМХО вполне должен стерпеть перекашивающую нагрузку от неточностей изготовления — это ведь не вал в кривом картере, вращающийся с тысячами об/мин.
            я мог бы даже наклонять ось вращения телевизора (в разумных пределах, разумеется)
            «Разумные пределы» для обычных самоустанавливающи­хся двухрядных шарикоподшипников 2°-3° (особенно с уплотнением) — см ссылку выше (специальное исполнение отдельный разговор). Т.е. в общем-то считается, что они рассчитаны на перекосы при изготовлении конструкции, а не на искусственные перекосы. Но повторю, что речь об обычном машиностроительном применении, возможно что в данном случае они и вытерпят подобное издевательство. Хотя ИМХО все равно лучше бы самоустанавливаюшаяся втулка на оси обычного радиального или радиально-упорного шарикоподшипника, или просто за счёт снижения жёсткости на кручение профиля конструкции (открытый П-образный профиль или уголок ИМХО вполне может компенсировать возникающие перекосы).
            ₽$ Но все это ИМХО, экстраполяция с точки зрения обычного машиностроителя (автомобилестроителя), возможно что в данном случае есть какие-то свои традиции.


            1. VBDUnit Автор
              04.08.2023 05:31

              Ну 3° это уже довольно существенно — край экрана смещается больше чем на 6 мм. При условии что у нас нагрузка, по меркам подшипника, никакая, можно даже в рамках эксперимента выйти за допустимые пределы, скажем, до 5°. Вряд ли с ним что‑то совсем страшное случится.

              Я ни разу не спец, но предположу, что с выходом за пределы допустимого отклонения там износ возрастает по экспоненте. Но подшипник у нас рассчитан, например, на 10'000 об/мин, а у нас тут 0,6 об/мин. Значит износ будет где то в 15 000 раз медленнее? И если это так, и мы не будем допускать уже совсем сумасшедших отклонений, где экспонента пересилит делитель в 15 000, то оно вполне себе будет жить. Хрустеть, но жить. Но это мои догадки, повторюсь — я в этом вообще не разбираюсь.


  1. oragraf
    04.08.2023 05:31
    +4

    Дружище, за одну только анимацию напряжений в материале тебе надо поставить сто плюсов! А за заботу о котиках - еще тысячу! Мегакрутое оформление!


    1. VBDUnit Автор
      04.08.2023 05:31

      Спасибо :) Интересно кстати, существует ли софт, который мог бы решать обратную задачу — какая исходная форма должна быть у объекта, чтобы при таких‑то нагрузках он принимал нужную. По идее, в сочетании с 3D печатью, это было бы очень крутой технологией.


      1. R6MF49T2
        04.08.2023 05:31
        +1

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


        1. oragraf
          04.08.2023 05:31
          +2

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


          1. VBDUnit Автор
            04.08.2023 05:31

            Напрашивается встраивание какого‑нибудь ChatGPT в САПР, чтобы оно в режиме пинг‑понг итеративно оптимизировало деталь то исходя из теории, то исходя из реальных ограничений, потом снова, и так сходилось к какому‑то решению.

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

            Жалко что ИИ в САПР медленно вползать будет.


        1. VBDUnit Автор
          04.08.2023 05:31

          Хм. В инвенторе есть такая штука, называется «Генератор форм» — как я понимаю, это примерно оно и есть, по крайней мере, решает подобную проблему. Даём ему деталь, нагрузки и точки приложения, и говорим: снизить вес на N%. И оно само из детали убирает материал, делая из неё «скелет», но так, чтобы снижение характеристик было минимальным. Ну, это как я понимаю.

          Предположу что она много в каких САПРах должна быть, но сам не пользовался ей — не было нужды.


  1. Kolegg
    04.08.2023 05:31
    +3

    Рекомендую использовать профиль strut он проще в юстировке.


    1. VBDUnit Автор
      04.08.2023 05:31
      +2

      Погуглил — в него ещё и провода можно было бы укладывать. Жалко раньше не узнал о нём, спасибо за совет.


  1. Eldest77
    04.08.2023 05:31
    +2

    А какое практическое применение? Как мониторы - понятно. Но там 1 удобный угол выставил, и забыл. По идее за компом сидишь в одной точке. В качестве ДК? Соотношение сторон диковинное получается, тоже не то. Для чего?


    1. VBDUnit Автор
      04.08.2023 05:31
      +1

      Для работы много места, для игр — панорамный обзор, потому что они думают, что это один большой экран и развёртываются на все три экрана. Фильмы 21:9 тоже неплохо смотрятся, немного заходя на боковушки, но разумеется, не полностью заполняют всё.

      Там как раз смысл в том, что на таких диагоналях (при условии, что масштаб интерфейса 100%) единого угла уже не получается. Даже в играх иногда, для погружения, оно ставится под 90°, а иногда, когда нужно улучшить обзорность и быстрее на всё реагировать, телевизоры ставятся к стене.


  1. neforma1
    04.08.2023 05:31
    +3

    Наткнулся на эту статью во время отвлеченных путешествий на хабре и специально зарегистрировался, чтобы отдать почтение и огромную благодарность автору за труд! Великолепная статья, видео, юмор и качество. +rep


    1. VBDUnit Автор
      04.08.2023 05:31

      Спасибо, рад что Вам понравилось!


  1. kisaa
    04.08.2023 05:31
    +3

    радиальноупоротые подшипники

    Спасибо, пятнично!


    1. old_bear
      04.08.2023 05:31
      +2

      А я, между прочим, сначала подумал что что-то не знаю про типы подшипников...


  1. Daddy_Cool
    04.08.2023 05:31
    +2

    "...Сделай кронштейн!" - говорили они..., "...это просто..." - говорили они...
    РЕСПЕКТ!
    Я неоднократно убеждался, что вроде простая, на первый взгляд, задача становится вовсе непростой когда хочется сделать ... так как хочется.
    В результате, при достаточной доли перфекционизма получается агрегат вполне готовый к серийному производству. Кстати вот если заказывать такую разработку где-то... то она бы наверное стоила как чугунный мост. Можно наверное посчитать по затраченному времени.


    1. VBDUnit Автор
      04.08.2023 05:31

      Спасибо!

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

      Соглашусь, тем более, в данном случае заказчик, то есть я, сам не знал, чего хочет. Все мы «любим» таких клиентов. Это уже получается формат не «заказал — сделали», а такая некая коллаборация, растянутая во времени, в рамках который итеративно достигается какой‑то результат.


  1. An_private
    04.08.2023 05:31
    +1

    Что-то инженерная мысля заработала :) А какой реальный максимальный угол отклонения боковых телевизоров? Приходит в голову что-то типа рычажного перекособоченного параллелограмма, но там на 90 градусов не отклонить. Но зато может не быть петель на стыке телевизоров вообще.


    1. VBDUnit Автор
      04.08.2023 05:31

      А какой реальный максимальный угол отклонения боковых телевизоров?

      Около 85°. Там много где есть люфты, за счёт которых набегают дополнительные градусы.


  1. ihouser
    04.08.2023 05:31
    +3

    Вот посмотрел какую титаническую работу вы проделали и сразу вспомнил про мебельные петли. Там и про ось разворота подумали и даже демпферы встроили. Я даже думаю как нибудь разобрать одну, чтобы понять, как его туда втиснули.


    1. VBDUnit Автор
      04.08.2023 05:31
      +1

      Мебельные петли да, они весьма сложные траектории умеют делать. Насколько я понимаю, внутри там всё работает по принципу параллелограмма (возможно, в особо редких случаях, нескольких), но с разными длинами сторон.

      Применительно в данном случае возникнет проблема крепления петель к середине телевизора — это опять надстройки, рамы и прочие штуки.

      UPD: расковырял 3д-модель петли, так и есть — параллелограмм:

      Моделька отсюда: https://www.cb-online.ru/3d-modely/furnitura/petli/


  1. KstnRF
    04.08.2023 05:31
    +1

    Это офигенно! Моё почтение и восхищение!


  1. burundukh
    04.08.2023 05:31
    -1

    какое уродливое по громоздкости решение.
    даешь крастан диайвай стайл !

    проблему схождения углов решаем просто:
    1) на петлю от ворот , поворачивающуюся на оси - вешаем "рельс" от выдвижной полки.
    2) на него - моник.
    3) рельс закреплен на еще одну петлю от ворот , со смещением , которая будет пододвигать его при повороте.
    3+1) захлопывание ставен делаем на возвратно- поступательном тросике , вращающемся на приводе от шуруповерта в две стороны.

    затрат на рубас и дсп с помойки.
    всем кротовухи за мой счет , я угощаю !


    1. VBDUnit Автор
      04.08.2023 05:31

      Главное экраны сразу той стороной повесить — саморезы в них лучше вкручивать с первого раза.

      Кроме шуток, рассматривал вариант с тросами в качестве привода, там много плюсов, но оно довольно сложное получается.


  1. nidalee
    04.08.2023 05:31
    +1

    Спасибо!
    Скажите, есть какие-то неудобства из-за RWBG схемы пикселей? Вроде ClearType их не умеет нормально. Есть какие-то видимые глазу косяки в отображении шрифтов?


    1. VBDUnit Автор
      04.08.2023 05:31
      +1

      Действительно, тут субпиксели совсем не такие, как обычном RGB LCD.

      Но, в целом, я проблем не вижу, даже ClearType не настраивал. Единственное, что даже не плохо, а «странновато» — цветной текст в коде как будто немного полужирный, вероятно потому что вертикальные линии у букв чуть‑чуть толще — там где ClearType хотел провести полоску в один субпиксель получается две, потому что телевизор зажигает дополнительно белые субпиксели. Возможно, это связано с слишком сильным контрастом — в IDE у меня стоит абсолютно тотально чёрный фон #000000.

      Макрофото текста на белом и чёрном фоне (9 Мб)
      4000х3000
      4000х3000
      4000х3000
      4000х3000
      4000х3000
      4000х3000

      Но это если 100% масштаб, само собой. При увеличении все эти эффекты испаряются.


      1. V1RuS
        04.08.2023 05:31
        +1

        да, сглаживание шрифтов очень плохое. при увеличении масштаба cleartype лучше вообще отключить.


        1. VBDUnit Автор
          04.08.2023 05:31
          +1

          Попробовал настроить ClearType, вроде что‑то поменялось. Но имхо это довольно много экспериментов надо сделать, чтобы результат получить. Жалко нельзя в окне настройки просто мышкой расположить субпиксели, по фотографии чтобы оно само соориентировалось. Ему же, по сути, надо просто знать где они физически находятся.

          После настройки


          1. V1RuS
            04.08.2023 05:31
            +1

            К сожалению, cleartype в любом случае рассчитан на 3 субпикселя, RGBW его ломает.


            Вроде были сторонние реализации, где больше вариантов настройки, но и они RGBW (пока) не поддерживают.


            1. VBDUnit Автор
              04.08.2023 05:31
              +1

              Вот тут выложили инструкцию, как установить кастомное сглаживание для RGBW OLEDов:


  1. jkelly
    04.08.2023 05:31
    +1

    было


    1. VBDUnit Автор
      04.08.2023 05:31

      Было. :)