В пути матрица была около двух недель и несколько пострадала от неаккуратного обращения со стороны доставщиков (см. отдельный отчёт о доставке и упаковке). После несложных восстановительных работ (пришлось вооружиться пинцетом и выравнивать контакты один за другим), всё пришло в работоспобное состояние и о том как именно оно работает мы сегодня и поговорим.
1. Внешний вид
Выглядит матрица собственно как и должна выглядеть - никаких претензий. всё аккуратно и солидно.
2. Подключение
Матрица подключается через 32 пина, расположенные по 16 в ряд. Восемь пинов отвечают за строки матрицы, а остальные 24 - за столбцы. Столбцов-то вообще-то восемь, но поскольку это RGB светодиоды, каждый из них имеет три пина, отвечающие за красный, голубой и зелёный цвета соответсвенно. Таким образом можно сказать, что каждая строка состоит из 24 светодиодов.
Как же её подключать? Напрямую к ардуино-UNO (или Nano) она не подключится по банальной причине - у них просто нет столько ножек. Можно, конечно, взять Arduino-Mega, но это плохая идея. Одиночная такая матрица всё равно используется крайне редко, а если потребуется подключить две, то уже никакой Меги не хватит. Надо искать более систематический способ. С монохромными матрицами нас всегда выручала микросхема MAX7219, но здесь она нам не помошник. Во-первых, она не поддерживает индивидуальное управление яркостью каждого светодиода, что нам необходимо для смешивания цветов, а, во-вторых, она отлично работает с матрицами 8х8, но не с 8х24 как у нас. Городить три штуки? Больно дорого и громоздко (хотя и можно, конечно), да и управление яркостью всё равно ниоткуда не возьмётся. В принципе, есть много способов подключить эту матрицу. Я остановился на использовании двух микросхем TLC5940. Не то, чтобы это обусловлено какими-то высокими соображениями, просто они у меня были под рукой.
Микросхема TLC5940 - это 16-канальный драйвер светодиодов и, по совместительтву, ШИМ-контроллер. Две штуки дают нам 32 канала, на которых поддерживается постоянным ток и на которых можно организовать 12-разрядный ШИМ. Последнее явно избыточно, мы ограничимся 8-ю (что тоже избыточно, кстати).
Схема подключения проста и незамысловата:
Пояснения к схеме см. в тексте
Все пронумерованный цифрами терминалы должны быть соединены (по цифрам). Эти соединения не показаны, чтобы схема была хоть немного читабельной.
Синий разъём S1 справа - это разъём S1 следующей такой же платы, если их у Вас несколько.
Транзисторы подойдут любые PNP с током коллектора от 500 мА и коэффициентом усиления по току не менее 24. Я использовал 2N2907A просто потому, что они у меня были в нужном количестве.
Именно эти пины были выбраны исключительно из соображений удобства разводки печатной платы, чтобы поменьше ставить перемычек и вообще, чтобы она попроще была. А вот, кстати и печатная плата:
Пояснения к схеме см. в тексте
В результате получилась плата размером точно с матрицу. Матрица вставляется в неё на два разъёма по 16 пин. Можно ставить радом несколько матриц, соединять их проводами с помощью разъемов, которые предусмотрены и получится единый (без щелей) экран из несколькх матриц. Вот как выглядит готовая плата.
3. Базовая библиотека
Основу нашей конструкции составляют две микросхемы TLC5940, поэтому, разумно было бы воспользоваться распространённой библиотекой для этой микросхемы. Но мы не будем этого делать. Дело в том, что эта библиотека заннимает два таймера, а это значит, что в нашем проекте с Ардуино на базе микроконтроллера ATMega328P нам пришлось бы остаться без таймеров вовсе, что неприятно. Поэтому, специально для данного исследования была написана мини-библиотека, которая использует только 8 бит управления яркостью и, за счёт этого, занимает только один таймер. Бибилотека написана именно для этого исследования и потому работает только с ATMega328P (Ардуино UNO, Nano и им подобные).
С другими платами (Ардуино Мега, например), данная библиотека работать не будет.
На задней стенке матрицы нанесена маркировка «Hew2338RGB5» - это и будет названем библиотеки. Состоит она из двух файлов Hew2338RGB5.cpp и Hew2338RGB5.h.
В результате в нашем распоряжении оказался двумерный массив screen размерами 8х8, каждый элмент которого представляет собой экземпляр класса RGBDiode. В классе определены операции установки цвета и классическое аддитивное сложение цветов. Перед началом работы необходимы вызвать функцию activateMatrix(), которая выполнит необходимую инициализацию. Подробнее методы и типы параметров можно посмотреть в тексте.
Первым делом хотелось посмотреть на насыщенность цветов и вообще работоспособность матрицы. Для этого был написан простой скетч,
Скетч простой и в достаточной мере самодокументирован, поэтому, мы не будем останавливаться на его коде.
Заработало всё сразу, ниже представлены несколько фото.
Здесь я должен извиниться перед читателем. Толи потому, что я ни разу не фотограф, толи просто в силу особенностей имеющейся у меня камеры, но цвета сильно перевраны и вообще, вместо красного, например, Вы видите что-то бело-жёлтое с красной каёмкой. Я пытался как-то настроить фото-камеру (играл с балансом белого и т.п.), но не получилось. Поэтому, снимки столь ужасны. Прошу Вас просто поверить мне на слово - цвета реально красивые. сочные, полные. Работающая матрица и впрямь выглядит намного красивее, чем на моих убогих фото.
Итак, цвета оказались яркими и очень красивыми. Особенно приятно удивил чистый белый цвет и чистые цвета смешанные из двух. те, кто имел дело с цветными светодиодами, поймут о чём я. Добиться чистого белого или там чистого жёлтого обычно на них не так-то просто. Здесь всё отлично - цвета замечательные.
Втормым тестом было попробовать нарисовать окружность, углы которой сглажены за счёт слабо закрашенных соседних точек.
Результат показал некоторую нелинейность яркости свечения светодиодов. При уменьшении скважности яркость сначала падает медленно, а потом намного быстрее. Впрочем, это свойство я наблюдал у всех светодиодов, которые видел в жизни.
Опять фото ужасное, но в реальности я доволен результатом.
Ну и последний тест - небольшая цветомузыкальная программа. В аналоговому входу Ардуино A7 был поключён звуковой сигнал и написана небольшая программа визуализации звука (без деления на частоты, просто по амплитуде, для простоты). Вот что в итоге полуилось (изображение плывёт по тем же причинам почему в кино плывут экраны телевизиров - в реальности ничего не плывёт и выглядит вполне прилично).
Отличная вещь! Цвета красивые, насыщенные - очень хороший белый цвет - никаких смещений, действительно белый. Мне очень понравилось.
Рекомендация магазину
Подумать о размещении на странице товара инструкции по подключению. Не обязательно так, как здесь, но какая-нибудь инструкция точно нужна, т.к. подключение этой матрицы не самая простая операция, особенно для начинающего энтузиаста.
Возможность оставлять комментарии временно отключена
Константин Горелов
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
2016-08-10
# 82405571
Пожаловаться
За схемку спасибо.
Там у тебя конденсаторы на 1мкф на питании, а в даташите наспиано 100нф - я так и ставлю, но диоды в момент подгрузки данных иногда "дергаются" - это оно? Просто ставить побольше?
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Евгений Лилитко
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
ответил Константин Горелов
2016-08-10
# 82405831
Пожаловаться
Оно самое. Если нагрузка большая, надо ставить больше. Я с 5940 часто работаю, уже привык прежде чем конденсатор окончательно впаивать глянуть осциллографом как оно дергается.
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Показать 1 ответ
Свернуть ответы
Пётр Воронов
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
2016-08-10
# 82405623
Пожаловаться
А что, там нельзя npn транзисторы поставить коллектором к питанию и открывать положительным сигналом?
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Евгений Лилитко
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
ответил Пётр Воронов
2016-08-10
# 82405878
Пожаловаться
Положительным не выйдет. С точки зрения 5940 положительное напряжение - отключенный пин (она землёй управляет). А если он отключенный она следит, чтобы туда ток не шёл. максимум на что можно рассчитывать - 1 мка утечки (по даташиту). Ну и какой тогда нужен h21 транзистора, чтобы на коллекторе 480 мА обеспечить? (а нам на 24 светодиода столько и нужно).
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Показать 1 ответ
Свернуть ответы
Пётр Воронов
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
2016-08-10
# 82405649
Пожаловаться
А, кстати, матрицы прикуплю, только скажите, мощности ардуины хватит обслужить 6 матриц - экран 2х3?
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Евгений Лилитко
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
ответил Пётр Воронов
2016-08-10
# 82405899
Пожаловаться
Думаю хватит, но не так шикарно как у меня здесь (двумерный массив, типа все дела). Если поэеономнее программировать, то должно хватить.
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Показать 1 ответ
Свернуть ответы
Владимир Пушков
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
2017-09-13
# 90443398
Комментарий удален модератором
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Владимир Пушков
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
2017-09-13
# 90444341
Пожаловаться
Для более устойчивой работы устройства поставил резистор 10 кОм между сигналом BLANK и шиной 5В. Без него устройство запускалось через раз.
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Евгений Лилитко
Статус «эксперт NL» получает пользователь Newsland, написавший в течение 3 месяцев не менее 10 экспертных мнений.
ответил Владимир Пушков
2018-07-15
# 95517325
Пожаловаться
Спасибо, я забыл про него написать, у меня он возле контроллера стоял, потому и на эту схему не попал.
0
Экспертное мнение
Экспертное мнение на Newsland - осмысленный комментарий по теме с признаками аналитического мышления
Комментарии
Там у тебя конденсаторы на 1мкф на питании, а в даташите наспиано 100нф - я так и ставлю, но диоды в момент подгрузки данных иногда "дергаются" - это оно? Просто ставить побольше?
Комментарий удален модератором