Светодиодная матрица своими руками. Адресные светодиодные матрицы Матрица из светодиодов своими руками

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

Ну, и чего же вы ждете? Берите светодиоды и паяльник, потому, что мы сейчас вместе будет делать светодиодную матрицу 24х6!

Шаг 1: Сбор всего необходимого

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

Для изготовления матрицы необходимо:
1. 144 светодиода
2. 24 резистора (номинал определяется по типу светодиодов, в моем случае 91 Ом)
3. Десятичный счетчик 4017
4. 6 резисторов номиналом 1 кОм
5. 6 транзисторов 2N3904
6. Длинная макетная плата
7. Arduino
8. 3 x 74HC595 регистра сдвига
10. Несколько штыревых разъемов

Шаг 2: Как это работает?

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

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

Каждый сдвиговый регистр имеет 8 выходов и вам нужно только 3 вывода arduino для контроля почти неограниченного числа сдвиговых регистров.

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

4017 - это очень полезная микросхема. Ознакомиться с ее работой можно по сноске

Как я сказал ранее, сканирование выполняется с помощью десятичного счетчика 4017, посредством подсоединения одного ряда к земле за один раз и пересылки данных через сдвиговые резисторы в колонки.

Шаг 3: Схемное решение

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

Для расчета величин 24 резисторов перейдите по следующей ссылке: .

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

Загрузите оригинальный файл, чтобы более подробно изучить схему (нажмите на схему для увеличения изображения).

Шаг 4: Пайка светодиодов

Пайка 144 светодиодов для создания матрицы может оказать трудной задачей, если вы не знаете наверняка, как это сделать.

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

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

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

Я не стану объяснять, как припаивать сдвиговые регистры и остальные компоненты, поскольку у каждого есть свой стиль и методы работы.

Шаг 5: Программирование матрицы

Вот мы и подошли к последнему этапу нашего проекта – программированию матрицы.

До этого я уже написал две программы, которые имеют много общего.

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

Я приложил файл в формате excel, чтобы вы смогли создать свои собственные знаки и символы.

Вот как это работает:

Создайте требуемый символ пиксель за пикселем (не беспокойтесь, это очень легко) и скопируйте выходную строку следующим образом - #define {OUTPUT LINE}

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

Шаг 6: Устройство готово!

Поздравляю! Вы самостоятельно сделали матрицу a 24x6 и теперь можете оперативно выводить на нее все, что вам нужно.

Теперь вы можете протестировать матрицу, придумать новые программы или улучшить интерфейс.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
Плата Arduino

Arduino Uno

1 В блокнот
U1-U3 Сдвиговый регистр

CD74HC595

3 В блокнот
U4 Специальная логика

CD4017B

1 K561ИЕ8 В блокнот
Q1-Q6 Биполярный транзистор

2N3904

6 В блокнот
Резистор

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

В данном видео мы предлагаем вам посмотреть процесс создания такой светодиодной матрицы.

Для работы нам необходимо подготовить следующее:
- макетная плата;
- 100 светодиодов;
- паяльник;
- 100 резисторов;
- скотч;
- кусачки;


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

Для питания светодиодов мы будем использовать напряжение в 5 В, резисторы используем с номиналом 470 Ом, это необходимо для задания нужной величины тока в 20 мА, проходящей через каждый светодиод.


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

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

Расставляем все светодиоды на плате. Обратите внимание, что эти радиоэлементы имеют анодный и катодный выводы. Чтобы не ошибиться - более длинный вывод имеет знак «+». Закрепляем их скотчем, чтобы временно зафиксировать их на месте.


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

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

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

!
Сегодня мы с вами будем развлекаться с адресной светодиодной матрицей. Этот проект достаточно сложный, но в тоже время его сможет повторить каждый. Автором проекта является AlexGyver.

Адресная светодиодная лента состоит из трехцветных светодиодов, в каждом из которых стоит специальная микросхема.


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


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




Например, есть вот такая матрица 8Х8, самая дешевая, кому-то будет проще поиграться именно с ней.


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


Здорово, можно делать всякие крутые эффекты. Управлять можно со смартфона по bluetooth. То есть смартфон шлет по bluetooth какие-то команды, модуль их принимает и передает на arduino. А arduino в свою очередь выводит данные на матрицу.




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


Первым делом был разработан протокол связи с arduino.


Первая цифра в нем – режим, а остальные отвечали за различные настройки и прочие передаваемые величины. Затем автор сделал графическое поле, на котором нарисовал сетку.

Программа отслеживает координаты касания поля пальцем и рисует в этом месте квадратик любым цветом. Попутно координаты квадратика отправляются на arduino.

Для изготовления нам понадобятся:
1) Матрица или лента на адресных светодиодах;
2) Arduino;
3) Bluetooth модуль;
4) Резистор.


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


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




Тут у нас настроечки. Укажите размер своей матрицы, ее тип и точку подключения.

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


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


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


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


Далее на смартфон под управлением android установите приложение GyverMatrixBT. Данное приложение доступно в Play Market, оно полностью бесплатное и без рекламы.


Затем установите сопряжение с bluetooth модулем (пароль 1234 или 0000), в приложении подключитесь к модулю и, собственно все. В настройках можно настроить яркость и размер матрицы, которая соответствует вашему, а также некоторые другие ее параметры.

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




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

Но вот матрица в таком виде выглядит не очень круто, не пиксельно и не восьмибитно. Нужно обязательно сделать решетку, чтобы каждый светодиод образовывал свои квадратные пиксели и сверху расположить рассеиватель. Вот тогда все будет очень круто. Решетку можно сделать из любого материала в форме и рейки. Это может быть картон, пачка советских деревянных линеек или вариант из пластика (ПВХ уголок), его можно купить в магазине стройматериалов там, где пластиковые панели и к ним различные товары. Уголки можно сломать вдоль, проделать прорези для середины и собрать решетку. Это вот самый «колхозный» вариант после картона.

И конечно можно расслабиться, и напечатать решетку на 3d принтере. Так что давайте так и сделаем.






Итак, корпус матрицы напечатался. Кстати, автор считает, что черный цвет не самый лучший выбор, лучше печатать решетку белым, чтобы она отражала свет. Ну не беда, покрасим.


Собственно, вот наша матрица без решетки, светодиоды как они есть.


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


А теперь смотрите, что будет если добавить рассеиватель в виде листа бумаги.


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

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

Но что если попробовать применить подобные матрицы в своих устройствах на микроконтроллерах? Какой интерфейс обмена и логика вывода у этих матриц?
Попробуем с этим всем разобраться.

Китайцы предлагают как сами матрицы разных размеров и с разным разрешением, так и контроллеры для вывода на них изображений с различными несложными эффектами, а также всю необходимую фурнитуру, соединительные кабели, рамы.
Матрицы встречаются как одноцветные (белые, желтые, красные, зеленые, синие), так и 3-цветные (RGB). Обозначение модели матрицы выглядит обычно так Pxx или PHxx, где xx - число, указывающее расстояние между пикселями в миллиметрах. В моём случае это P10. Кроме того, матрицы некоторых типоразмеров бывают не только прямоугольными, но и квадратными.

Возможные варианты типоразмеров матриц



Итак, имеем белую матрицу 32x16 точек с размерами 320x160мм и, соответственно, межпиксельным расстоянием в 10 мм. Давайте рассмотрим её поближе.
Вид спереди:

Вам тоже показалось, что светодиоды какие-то овальные? Вам не показалось…


Над светодиодами сделан небольшой козырёк, который не даёт солнечному свету засвечивать светодиоды.

Вид спереди со снятой пластиковой маской



Переворачиваем матрицу и видим плату:


На плате кучка микросхем логики. Давайте разберёмся, что это за микросхемы:
1. 1 x SM74HC245D - неинвертирующий буфер
2. 1 x SM74HC04 - 6-канальный инвертор
3. 1 x SM74HC138D - 8-битный дешифратор
4. 4 x APM4953 - сборка из 2 P-канальных MOSFET
5. 16 x 74HC595D - сдвиговый регистр с защёлкой
Два 16-пиновых разъёма - интерфейсные, один из них входной (к нему подключается контроллер экрана), а второй - выходной (к нему подключается следующая матрица в цепочке). Стрелка на плате направлена от входного разъёма к выходному.
Питание подаётся на клеммы в центре платы. Напряжение питания - 5В, максимальный ток (когда включены все светодиодны матрицы) - 2А (для белой матрицы).

Вся изложенная выше информация, а также демонстрация работы матрицы в видео ниже. В нём я с 13:04 по 15:00 говорю про зависимость яркости экрана от кол-ва матриц. Это из-за ошибки в алгоритме. Ошибка исправлена и теперь данные загружаются до отключения экрана.

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

Всем спасибо за внимание!

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

Матрица подключается к Arduino согласно , далее идёт выжимка из него. Важные моменты:

  • Логический пин Arduino соединён с пином DIN ленты (матрицы) через резистор с номиналом 220 Ом (можно брать любой в диапазоне 100 Ом – 1 кОм). Нужен для защиты пина Ардуино от перегрузки, т.е. ограничить ток в цепи (см. закон Ома);

  • GND (земля, минус) ленты обязательно соединяется с пином GND Arduino даже при раздельном питании;

  • Электролитический конденсатор по питанию Arduino нужен для фильтрации резких перепадов напряжения, которые создаёт лента при смене цветов. Напряжение конденсатора от 6.3V (чем больше, тем крупнее и дороже кондер), ёмкость – в районе 470 мкФ, можно больше, меньше не рекомендуется. Можно вообще без него, но есть риск нарушения стабильности работы!

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

  • Мощность (и максимальный отдаваемый ток) блока питания выбирается исходя из размера матрицы и режимов, в которых она будет работать. Смотрите табличку и помните о китайских амперах , т.е. блок питания нужно брать с запасом по току на 10-20%! В таблице приведены значения тока потребления ленты.

  • В прошивке GyverMatrixOS версии 1.2 и выше настраивается ограничение тока системы. Как это работает: в настройках скетча есть параметр CURRENT_LIMIT , который задаёт максимальный ток потребления матрицы в миллиамперах. Ардуино будет делать расчёт на основе цветов и яркостей светодиодов и автоматически уменьшать яркость всей матрицы, чтобы не допустить превышения установленного лимита по току на особо “жрущих” режимах. Это очень крутая функция!

СБОРКА КОРПУСА И РАССЕИВАТЕЛЯ

ПРОШИВКА И НАСТРОЙКИ

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

Данный тип инициализации матрицы позволяет подключать матрицу любой конфигурации с любым положением начала матрицы. Это удобно для покупных матриц, которые можно только “крутить”, так и для самодельных, когда есть какие-то особенности корпуса или укладки проводов. То есть как бы вы ни сделали и не расположили матрицу, она всё равно будет работать с корректным положением начала координат. Кстати, можно очень легко “отзеркалить” матрицу по горизонтали или вертикали, если это зачем-то вдруг нужно: просто меняете подключение на “противоположное” по желаемой оси. Например хотим отзеркалить тип подключения (1, 0) по вертикали. Настраиваем его как (2, 2) – смотрите рисунок выше. Хотим отзеркалить тип (3, 1) по вертикали – настраиваем его как (2, 3). Тип (3, 2) по горизонтали? Пожалуйста, ставим его как (2, 2). Надеюсь логика понятна.

Если вы впервые работаете с Arduino, то остановитесь и изучите . После установки драйверов и библиотек можно переходить к прошивке платформы. У меня есть готовый проект с играми и эффектами, переходите за подробностями и прошивками. Дальше будет информация для разработчиков, то есть тех, кто хочет написать что-то для матрицы самостоятельно!

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

// **************** НАСТРОЙКИ МАТРИЦЫ **************** #define LED_PIN 6 // пин ленты #define BRIGHTNESS 60 // стандартная маскимальная яркость (0-255) #define WIDTH 16 // ширина матрицы #define HEIGHT 16 // высота матрицы #define MATRIX_TYPE 0 // тип матрицы: 0 - зигзаг, 1 - последовательная #define CONNECTION_ANGLE 0 // угол подключения: 0 - левый нижний, 1 - левый верхний, 2 - правый верхний, 3 - правый нижний #define STRIP_DIRECTION 0 // направление ленты из угла: 0 - вправо, 1 - вверх, 2 - влево, 3 - вниз

Также в прошивке содержится вкладка utility_funx , в которой как раз сидят все функции по работе с матрицей:

Void loadImage(название массива битмап); // отобразить картинку из массива "название массива". По картинкам читайте ниже void drawDigit3x5(byte digit, byte X, byte Y, uint32_t color); // нарисовать цифру (цифра, коорд. Х, коорд. У, цвет) void drawDots(byte X, byte Y, uint32_t color); // нарисовать точки для часов (коорд. Х, коорд. У, цвет) void drawClock(byte hrs, byte mins, boolean dots, byte X, byte Y, uint32_t color1, uint32_t color2); // нарисовать часы (часы, минуты, точки вкл/выкл, коорд. Х, коорд. У, цвет1, цвет2) static uint32_t expandColor(uint16_t color); // преобразовать цвет из 16 битного в 24 битный uint32_t gammaCorrection(uint32_t color); // гамма-коррекция (преобразует цвет более натуральный цвет) void fillAll(uint32_t color); // залить всю матрицу цветом void drawPixelXY(byte x, byte y, uint32_t color); // функция отрисовки точки по координатам X Y (коорд. Х, коорд. У, цвет) uint32_t getPixColor(int thisPixel); // функция получения цвета пикселя по его номеру uint32_t getPixColorXY(byte x, byte y); // функция получения цвета пикселя в матрице по его координатам (коорд. Х, коорд. У) uint16_t getPixelNumber(byte x, byte y); // получить номер пикселя в ленте по координатам (коорд. Х, коорд. У, цвет)

Начало координат матрицы – левый нижний угол, имеет нулевые координаты!

Пользуясь этими функциями можно создавать различные эффекты разной степени сложности, а также классические игры!