Самодельная светодиодная матрица 8х8 пикселей, 100х100 мм

Автору Instructables под ником mansurkamsur потребовались крупные светодиодные матрицы – 100х100 мм, несмотря на разрешение в 8х8 пикселей. Готовые платы с таким разрешением бывают различных размеров, максимальный из которых – 60х60 мм. Пришлось изготавливать нестандартные матрицы своими руками.

Схема устройства – также стандартная:

Светодиоды понадобятся крупные – диаметром в 10 мм. Если таких не найдёте, можно взять и обычные, 5-миллиметровые, также с гибкими выводами. Но тогда шаг между ними будет очень большим. Все остальные компоненты, в т.ч. микросхема драйвера – наоборот, миниатюрные и SMD. Касается это и полярного конденсатора, который взят не электролитический, а танталовый. Применять его не рекомендуется, так как такие конденсаторы при случайной переполюсовке и/или превышении напряжения загораются. В прямом смысле. Огнём. Лучше вместо него припаять к тем же площадкам обычный электролитический конденсатор с выводами. Всё равно плата большая.

Файлы формата Gerber для изготовления платы мастер выкладывает здесь под лицензией CC-BY-SA. Чтобы их скачать, необхожима простейшая регистрация. Ничего сложного в изготовлении платы нет, можно и ЛУТом. А при известной ловкости – и на perfboard’е. Но мастер решает заказать платы (ему нужно несколько модулей) прямо там же (у другого производителя тоже можно). И вот они приезжают, рассмотрим любую из них с обеих сторон:

Приезжают и компоненты:

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

Благодаря металлизации отверстий, этот фокус проходит, и “ноги” с обратной стороны платы не выступают. Если же плата изготовлена ЛУТом, откусывать придётся уже после впаивания, а сами светодиоды – впаивать не впритык к плате, чтобы пропаять с обеих сторон. Роль перемычек будут играть их выводы. А выводы микросхемы придётся немного подогнуть, чтобы её можно было чуть приподнять над точками впайки светодиода. А вот мастер впаивает и саму микросхему:

А за ней – и остальные светодиоды:

Этим светодиодам откусывает выводы уже после впайки:

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

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

Наконец, мастер испытывает модуль:

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

Ардуино: управление светодиодной матрицей 8×8

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

Матричный индикатор

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

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

Такая сетка называется матричным индикатором, а в случае использования светодиодов — светодиодной матрицей. Разрешение матричного индикатора — это количество точек по горизонтали и вертикали. Например, самые распространенные индикаторы имеют разрешение 8×8 точек.

Если требуется светодиодная матрица с большим разрешением, то её просто-напросто составляют из нескольких 8×8 индикаторов. Как это делать, мы увидим позже. А пока разберемся как соединяются все 64 светодиода внутри матрицы.

Конечно, можно бы было как и в случае семисегментного индикатора соединить все светодиоды общим катодом или анодом. В этом случае нам бы потребовалось либо 64 вывода контроллера, либо 8 сдвиговых регистров. Оба варианта весьма расточительны.

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

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

Не выключая эту точку, попробуем зажечь другую — R3C7. Положительный контакт питания соединим с R3 и землю с C7. Но в таком случае строки R6 и R3 будут пересекаться с колонками C3 и C7 не в двух, а в четырех местах! Следовательно и зажжется не две, а четыре точки. Проблема!

Очевидно, что помочь сможет всё та же динамическая индикация. Если мы будем включать точки R6C3 и R3C7 по-очереди очень быстро, то сможем использовать персистентность зрения — способность интерпретировать быстро сменяющиеся изображения как одно целое.

Светодиодная матрица и сдвиговые регистры

В нашем уроке мы будем подключать к Ардуино Уно самую простую светодиодную матрицу 8×8 красного свечения. Нумерация выводов начинается с нижнего левого угла. При этом, нумерация ног 1-16 не связана никакой логикой с нумерацией колонок и строк C и R.

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

Принципиальная схема

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

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

Программа

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

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

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

Исходный код

Основная часть этой программы, включая переменные data_pin, sh_pin, st_pin, next_flick, to_flick и функцию fill уже известны нам из уроков про сдвиговый регистр и про динамическую индикацию.

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

Функция latchOn открывает защелку регистра. Это нужно делать только после заполнения обоих сдвиговых регистров.

После загрузки программы на Ардуино, на индикаторе появится смайл.

Анимация на светодиодной матрице

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

Загружаем программу на Ардуино и наблюдаем результат.

Масштабирование светодиодной матрицы

Светодиодная матрица с разрешением 8×8 подойдет для отображения двух цифр или простого символа. Если требуется вывести на индикатор какое-то более или менее полезное изображение, необходимо объединить матрицы. Делается это с помощью добавления новых сдвиговых регистров как по вертикали, так и по горизонтали.

Следует отметить, что быстродействия контроллера Ардуино Уно в связке со сдвиговыми регистрами хватит разве что на дисплей 16×16. Дальнейшее увеличение размеров светодиодного дисплея приведет к появлению заметного мерцания.

Задания

К размышлению

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

1. У нас в RobotClass как раз есть такой модуль с I2C интерфейсом. Легко подключается к Ардуино. Познакомиться с этим модулем можно на уроке «Модуль матрицы 8×8 с I2C интерфейсом от ROC«.

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

Светодиодная матрица со светодиодами 5мм 8 на 8 красного цвета с общим анодом. Делаем цифровые часы со своими знаменательными датами. Много текста фотографий. ОСТОРОЖНО ТРАФИК!

Продолжая тему самодельных цифровых часов на светодиодных матрицах, хочу предложить обзор на светодиодные матрицы с диаметром пятна 5мм, размером 60 на 60мм, красного цвета. В обзоре ссылки на проект самих часов. Что из этого получилось. Видео после года эксплуатации.
Кому интересно — добро пожаловать под кат.

Я уже делал обзоры на мои попытки сделать себе светодиодные часы или вот ещё
Копая эту тему, я наткнулся на интересный для себя проект Часы Super Clock
Этот проект с 2014 года, получил своё дальнейшее развитие, но, об этом ниже, а пока об обозреваемом товаре
Итак, сейчас этого товара уже нет, похожий товар недорого можно купить например тут, и цена в 72 рубля за штуку — практически даром, а мне год назад повезло получить матрицу за 43 рубля с доставкой, причём все матрицы рабочие, претензий к товару, продавцу, упаковке, доставки — нет.

Заказ был сделан 11.10.2016, а 17.10.2016 был отправлен. Продавец предоставил трек номер, который отслеживался всё время поставки, 09.11.2016 посылку я получил у себя в ПО, в результате, всё стандартно, — около месяца, что для нашей местности нормально.

Товар пришёл в аккуратной, небольшой коробке, размером 80 на 90 на 130мм

Внутри в пять рядов, попарно, с прокладками из вспененного полиэтилена — лежали 10 матриц


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

Поверх матрицы наклеена защитная плёнка

На боковой стороне панели надпись 2088BS

Даташита на эту матрицу я не нашёл
Есть на 23881 или например вот:

Из маркировки
23 — 2,3″ — размер в дюймах
88 — количество в рядах и столбцах
1 — цвет поля (чёрный), цвет подложки светодиода (белый)
B — с общим анодом
S — яркий красный, напряжение питания 1,8V номинал 2,2V максимум, яркость 15-20mcd

Читайте также:  Посконник пурпурный (23 фото): описание посконника пурпурного, посадка и уход

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

Итак, для чего (под что) эти матрицы брались
Я уже выше давал ссылку на этот проект, дам ссылку на его форум
Чем именно мне понравился именно этот проект?
Ну во первых — прикольная анимация отражения информации
Изначально это был проект на 16меге на 3 сдвиговых регистрах 74HC595, часами DS1307, с возможностью загрузки бегущей строки через Bluetooth модуль HC-05, или через преобразователь USB-USART FT232RL. А так-же управление жестами (переключение меж режимами). Будильники и прочая с выложенными исходниками, в полном объёме, с комментариями в исходниках на русском языке, а так-же полностью разжёванными комментариями автора в форуме.
Во вторых, в часы занесены памятные даты, которые можно при желании редактировать и добавлять свои.
Позже проект перевели на 32 мегу и тут понеслось…
Обратный отсчёт на Новый год
Почасовая кукушка
Перешли на часы DS3231
Добавили:
Датчик давления с построением графика давления за сутки (удобно для кратковременного прогноза погоды)
Датчик влажности
Несколько беспроводных выносных датчиков температуры со связью по Bluetooth
Была написана программа для смартфонов на андроиде и для компьютера для связи с часами по Bluetooth, с возможностью отправлять настройки, коррекции, отправлять бегущую строку, настройки будильников, выгрузка из часов графиков температур, влажности, давления за сутки
Возможность изменять шрифт (три варианта шрифтов в прошивке), символов и прочая
И всё это в исходниках разжёвано автором комментариями на русском языке, для всех желающих, кто очень хочет, — СВОИ! часы, но кто, при этом, ни разу не программист (от слова совсем!)
Вот чем привлёк к себе этот проект в отличии от других
А ещё, что хотелось-бы сказать про автора этого проекта — так это про поддержку в форуме.
Человек не обламывается и реально помогает при возникновении проблем и вопросах. По этому его проект, на мой взгляд, по истине можно признать «народным». (ИМХО)

Итак, вообще матрицы оказались не те, которые мне были нужны для этих часов
Для этих часов необходимы матрицы с ОБЩИМ КАТОДОМ
Т.е. с буквой A в маркировке (маркировка должна была выглядеть как 2088AS)
Вообще, понятие с ОБЩИМ КАТОДОМ (ОК) или с ОБЩИМ АНОДОМ (ОА) — весьма условно
И в той и в другой матрице. везде, и аноды и катоды соединены в строках и столбцах — одинаково
Единственно в чём разница, это на какие выводы идут аноды и катоды
Принято считать, что как матрица соединена в строках — так она и называется — общий катод в строке, значит ОК, если общий анод в строке — значит ОА
Так вроде интуитивно правильно получается
А вот как их классифицируют китайцы — одному богу известно и бывает очень по разному
Пользователь dt_andrew например, на радиокоте, предлагает так:

Понятие ОА, ОК для матриц — НЕ ПРИМЕНИМО, это вызывает массу не понимания и путаницу
для себя я решил так

Матрица
на выводах (16, 15, 11, 6, 10, 4, 3, 13) которой АНОДЫ светодиодов
и на выводах (5, 2, 7, 1, 12, 8, 14, 9) КАТОДЫ светодиодов = СЧИТАЕМ MARTIX_TYPE_0

Матрица
на выводах (16, 15, 11, 6, 10, 4, 3, 13) которой КАТОДЫ светодиодов
и на выводах (5, 2, 7, 1, 12, 8, 14, 9) АНОДЫ светодиодов = СЧИТАЕМ MARTIX_TYPE_1

Подключение матрицы WS2812B к Ардуино

Матрица WS2812B Ардуино ► позволяет сделать множество крутых и интересных проектов. Продемонстрируем несколько интересных скетчей для ws2812b матрицы Arduino

Матрица WS2812B для Ардуино и просто адресная лента — позволяет сделать множество крутых и интересных проектов. На этой странице мы продемонстрируем несколько интересных скетчей для 8×8 матрицы WS2812B Arduino (подойдут и другие размеры матрицы — 16×16 или 32×32). Для создания различных красивых световых эффектов на матрице использовалась популярная библиотека Adafruit_NeoPixel.

Arduino матрица на адресной ленте ws2812b

Светодиодную матрицу на ws2812b 32×32 можно заказать на Алиэкспрессе, а можно сделать самому (это наш случай). На фото и видео показана матрица шириной 5 и высотой 8 пикселей (светодиодов). Для представленных примеров размер матрицы значения не имеет — главное указать общее количество светодиодов в ленте. На следующем фото можно увидеть, как из адресной ленты сделали матрицу.

Матрица из адресной ленты своими руками

Если вы решили сделать матрицу из ws2812b своими руками, то при пайке обращайте внимание на направление стрелок, нарисованных на ленте. Во-вторых, поставьте резистор 100-500 кОм на цифровой вход ленты, чтобы подключать ленту к сигнальному пину Ардуино уже напрямую, без резистора. Высота матрицы должна быть не менее 8 строк, иначе при выводе букв на led дисплей, они у вас не будут помещаться.

Как подключить матрицу ws2812b к Ардуино

Для этого занятия нам потребуется:

Первый пример заставляет матрицу из адресной ленты переливаться всеми цветами радуги. Перед загрузкой скетча в микроконтроллер, убедитесь, что у вас установлена библиотека Adafruit_NeoPixel.h. Если нет, то архив можно скачать на нашем сайте со страницы, где размещены все наиболее популярные библиотеки Ардуино. После установки и подключения матрицы WS2812B к Arduino Uno — загрузите скетч.

Скетч. Радуга на матрице ws2812b Ардуино

Пояснения к коду:
  1. в строчке Adafruit_NeoPixel strip(35, 6, NEO_GRB + NEO_KHZ800); : первое значение — это количество пикселей в ленте, а второе — это пин Ардуино к которому подключен цифровой вход матрицы из адресной ленты.

Следующий пример подойдет и для простой адресной ленты, но так как матрица собрана из ws2812b зигзагом, то мерцание пикселей смотрится достаточно эффектно. Скорость мерцания светодиодов можно ускорять и замедлять с помощью команды delay. Цвет ленты можно менять, в процедуре void loop, которая вызывает функцию void theaterChase(), передавая информацию о цвете светодиодной адресной ленты.

Скетч. Бегущий огонек на матрице ws2812b Ардуино

Пояснения к коду:
  1. в процедуре void loop () можно добавить новые оттенки и вызывать функцию void theaterChase() с нужным цветом — количество новых цветов не ограничено.

Эффекты на матрице из адресной ленты

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

Скетч. Эффекты на матрице из адресной ленты

Пояснения к коду:
  1. для изменения скорости мигания матрицы измените delay в скетче;
  2. чем больше вы указываете яркость strip.setBrightness(); , тем больше тока будет потреблять устройство и сильнее будет греться лента.

Заключение. На этой странице мы лишь продемонстрировали, какие эффекты можно сделать на 16×16 матрице WS2812B Ардуино. Если вы хотите сделать пиктограммы или бегущую строку, используя адресную ленту в качестве дисплея или экрана — заходите в раздел проекты на Ардуино с LED-лентой на нашем сайте. Если у вас остались вопросы по подключению матрицы ws2812b — оставляйте их в комментариях.

Светодиодная матрица. Урок 17. Ардуино

Привет! Что может быть лучше rgb светодиода? Конечно 256 светодиодов вместе. Да еще и адресуемых. Это значит, что мы сможем зажечь любой из 256 светодиодов из программы на Ардуино. Сегодня в обзоре светодиодная матрица WS2812B (SK6812).

В предыдущей статье мы говорили о гироскопе GY-521. Это тоже очень интересный модуль для Ардуино. Посмотрите тот обзор, если пропустили или уже забыли.

Для того, чтобы выполнить этот урок нам понадобиться

Светодиодная матрица

Я использовал матрицу 16 на 16 светодиодов на черной подложке. Ссылка на Алиэкспресс будет внизу. Матрица хорошо гнется. Работает от 5 вольт и бывает во многих формфакторах. 8 на 8, 16 на 16 и 8 на 32 светодиодов.

Светодиодная матрица WS2812B (SK6812)

Характеристики

Подключение

Матрица работает от 5 вольт. А значит мы сможем подключить ее напрямую к Ардуино. Однако, для реальных проектов рекомендую сделать для нее отдельное питание от аккумулятора или блока питания. В соответствии с характеристиками производителя при ярком белом свете, матрица потребляет 76,8 Вт. А ток может быть от 12 до 18 А, в соответствии с таблицей производителя.

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

Подключение матрицы.
+5V — питание 5 вольт на плате, GND — земля, DIN — пин для данных на плате Ардуино Принципиальная схема подключения светодиодной матрицы

Библиотека FastLed

Для работы со светодиодными матрицами уже написано не мало библиотек. Сегодня используем одну из них. И посмотрим на примеры программ из нее. С помощью менеджера библиотек установим FastLED и откроем пример из меню File -> Examples -> FastLED -> DemoReel100

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

Контакт DIN подключен к 3 контакту Ардуино.

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

FastLed DemoReel100 program

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

Объявим настройки матрицы и инициализируем их.

А цикле loop() возьмем каждый отдельный светодиод и будем зажигать и гасить его в цикле. Таким образом мы сможем обратиться к каждому конкретному светодиоду.

Адресные светодиоды на матрице

Полный текст программы

Возможные проблемы

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

Заключение

Мы рассмотрели светодиодную матрицу 16х16 светодиодов. Подключили ее к Ардуино и научились обращаться к каждому светодиоду. Это сильно поможет нам в будущих проектах.

Проект за пару дней: большой дисплей из светодиодных лент

Полгода назад мы дополнили наш почти традиционный офисный каток 7,6 тыс. светодиодами, чтобы транслировать изображения и видео прямо на поверхность льда. На гиктаймсе был опубликован пост, в котором рассказывалось о том, что подо льдом скрывается самый настоящий гигантский дисплей разрешением 120х63 «пикселей», на который можно выводить достаточно сложные и яркие изображения.

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

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

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

Что нам понадобится

Общие затраты у меня получились меньше $100.

Также вам понадобятся инструменты:

Сначала прочитайте пособие по работе с электроникой для начинающих!

Расчеты

Если вы приобрели рамку 50х50 см и такие же светодиодные ленты, как у меня, то сможете уместить в дисплей 15 отрезков по 15 светодиодов. Но ничто не мешает использовать рамку другого размера. Расстояние между светодиодами — около 30 мм, таким образом на один пиксель приходится примерно 30 мм 2 . Это наш 1DPI. Ну да, разрешение не как у Retina.

Рассчитайте, сколько отрезков ленты вам понадобится, и расчертите направляющие с обратной стороны панели. Семь раз проверьте, один раз отрежьте: у меня ленты немного различаются, потому что когда я начал их приклеивать, то обнаружил, что могу вместить только 14 отрезков по 15 светодиодов. Но это не страшно — в приложении можно легко настроить разное количество рядов пикселей и их длину. Отрежьте куски, подходящие для вашей рамки. К сожалению, я обнаружил, что у меня 15-е светодиоды в отрезках приходятся как раз на то место, где нужно припаивать соединительные провода. Поэтому пришлось их выпаивать.

Матирование стекла

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

Также задуйте белой краской панель, которая будет видна сквозь стекло. Отрежьте один из углов — здесь пройдут провода.

Крепление светодиодных лент

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

Помните, что сигнал будет проходить через всю цепь, и у каждой ленты есть направление передачи сигнала. Ленты нужно размещать так: у одной стрелка (направление сигнала) указывает направо, у следующей — налево, потом опять направо и т.д. То есть сигнал по дисплею будет идти «змейкой». Проверьте еще раз правильность размещения лент, прежде чем клеить их!

Пайка

Для соединения лент требуется по три провода разной длины. Внутреннюю пару контактов соединяем самым коротким проводом (на фото — красный), для средней пары берем провод подлиннее, а к внешним контактам припаиваем самый длинный. В зависимости от того, какие ленты в данный момент соединяются, внутренние контакты будут либо питанием (+5V), либо заземлением (GND).

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

Фиксация лент

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

Проверка подключения

Шестой пин Arduino используется для передачи управляющего сигнала; напряжение питания должно подаваться напрямую от блока питания. Подключите заземление между лентами, Arduino и блоком питания. Не пытайтесь запитать ленты от Arduino, а также не подключайте блок питания к Arduino при подключенном USB (когда будет загружаться код для тестирования).

Скачайте и добавьте в соответствующую папку библиотеку AdafruitNeoPixel, затем запустите Arduino. Протестируйте подключение с помощью следующего кода, указав в первом параметре количество светодиодов (в нашем примере — 60):

Adafruit_NeoPixel strip =Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);

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

Помещаем в рамку

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

Можете еще подумать над тем, возможно ли спрятать в рамке еще и блок питания с Arduino. А пока переходим к настройке ПО.

Glediator

Программа Glediator компании SolderLab.de очень хорошо подходит для анимирования светодиодных матриц на вечеринках или в ночных клубах. Она способна управлять матрицей, состоящей из 512 светодиодов WS2812/NeoPixels, формируя до 24 кадров/сек — этого вполне достаточно для нашего дисплея, можно даже выводить на него простенькие анимационные гифы. Микшер позволит делать плавные переходы между анимациями.

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

Запустите Glediator, откройте свойства и измените размер матрицы и режим вывода. Настройте порядок пикселей, если у вас используется другая схема, но по этому шагу мало документации, поэтому придется действовать методом проб и ошибок. Если изображение на дисплее отличается от задуманного, попробуйте поиграть с настройками. У меня работал порядок пикселей HS_BL — подозреваю, что это означает «horizontalsnake, startingbottomleft» (горизонтальная змейка, начало слева внизу).

Glediator — профессиональное приложение, не будем пока изучать его интерфейс и возможности. Загрузите в левое и правое окна разные анимации, затем двигайте микшер между ними. Или используйте готовый плейлист, который показан в видеоролике.

Библиотеки Adafruit NeoMatrix и Adafruit GFX

Компания Adafruit создала очень полезную библиотеку для работы со светодиодными матрицами. Сначала она называлась Adafruit GFX, и изначально предназначалась для TFT- и LCD-дисплеев. Затем появилась модификация NeoMatrix, позволяющая полноценно работать с матрицами NeoPixel. Она имеет огромное количество простых в использовании функций по выводу текста или растровой спрайтовой графики.

Если вы в точности повторили мой проект, то можете воспользоваться этим кодом. Самая важная часть:

С первыми строками все понятно. В последних трех описывается схема матрицы: в данном случае первый пиксель находится слева внизу (bottomleft), пиксели расположены рядами (rows), соединенными зигзагообразно (zigzag). Если вы сделали иначе, то обратитесь к документации библиотеки.

Я задал в коде несколько спрайтов — смайлы. Вы можете создать собственные с помощью Java-приложения Img2Code, лежащего в папке библиотеки GFX.

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

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

Arduino.ru

Контроллер для LED матрицы 8х8 – что это такое?

В старовых комплектах ардуины почти всегда присутсвует LED матрицы 8х8. Причём самостоятельно, без каких либо дополнительных блоков (например у шагового двигателя в комплекте всегда идёт драйвер). А вот если заказывать LED матрицу 8х8 самостоятельно в интернете, то с ней очень часто присутсвует ещё какой-то контроллер (которого никогда не увидишь в стартовом наборе, хотя стоит копейку). Может кто-нибудь работал с ним и знает для чего он?

1. Занимает меньше пинов Ардуины.

2. Проще программировать.

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

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

В этот контроллер можно только заливать- состояния драйвера MAX7219, обратной связи у него нет. При первом включении его нужно настроить. Очень просто подключить к COM порту на прямую, без арду и получить устройство управления к примеру 64 нагруками , или все то ,чем можно управлять с помощью светодиода. У maximintegrated есть софт “прямого” подключения через LPT.. если через сом понадобиться три резистора и три стабилитрона + 9 пиновый конектор., и будет Вам игрушка для ПК. Если Вам интересно по теме sereal port и MAX7219 спрашивайте.

какой функционал берёт на себя этот контроллер? Ну хотя бы в нескольких словах.

Вот его (этого контроллера) полное описание, читайте.

Если Вам НЕ нужно управлять яркостью каждого светодиода индивидуально, то это то, что надо!

Если же нужно, то этот контроллер Вам не помошник – посмотрите вот эту тему. Там, правда, цветная матрица (считай, втрое больше светодиодов).

Запуск драйаера МАХ7219 с сом порта. Если стоит матрица на 64 диода и на дисплее всякие каряборы, вначале надо записать все дешифраторы а потом их все убрать. Единичное удаление дешифратора столбца может ничего не дать, по причине того что мы не знаем что туда записано ранее. Утилитка за “пряники” попросится на страничку спонсора, если ее закрыть обнулит счетчик. Правильность подключения к порту кнопкой “тест” запускается без всякой настройки. Если все светодиоды засвитились значит все ок.

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

Цельная панелька из четырёх матриц (итого получается 8х32). И стоит всего 3.50€
https://ru.aliexpress.com/item//32623732034.html
Буду разбираться с max7219.
Цветную конечно хотелось бы больше, но по адекватной цене я не нашёл.

Цветную конечно хотелось бы больше, но по адекватной цене я не нашёл.

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

Да, только сама матрица. Контроллер можно сделать, еапример, как в моей статье. Там есть и схема и печатная плата м скетч

Да, только сама матрица. Контроллер можно сделать, еапример, как в моей статье. Там есть и схема и печатная плата м скетч

А интереснее купить просто матрицу или собрать самому и несколько сдвиговых 74hc595 а прошивку рисовать самому. 3 контакта с ардуины и управляй сотнями лампочек

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

А интереснее купить просто матрицу или собрать самому и несколько сдвиговых 74hc595 а прошивку рисовать самому. 3 контакта с ардуины и управляй сотнями лампочек

Матрице на чипе WS2812 не нужны никакие регистры, она управляется по одному проводу и может не просто мигать светодиодами, а переливаться разными цветами. Для программирования эффектов есть готовые библиотеки: Adafruit_NeoPixel и FastLED (например).

дальше уже пошла бегущая строка с своим скечем.

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

моя управляется по трем. и тоже все умеет. что я сам задам. даже то что не умеют те библиотеки. )))

к сожалению не открывается видео

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

Я тоже не навязываю, просто описал возможный вариант.
То что вы сделали на регистрах 595 это тоже неплохой вариант.

к сожалению не открывается видео

Фото:

к сожалению не открывается видео

Фото:

инетересно. а есть ссылка на статью?

инетересно. а есть ссылка на статью?

А статьи нет, это одна из моих поделок. Нарезал 8 метров ленты с чипом WS2812 на 8 кусков по 60 светодиодов в каждом. Куски соединены последовательно (в прямом и обратном направлениях) и управляются по одному проводу (всего 480 светодиодов). Разумеется для ленты требуется дополнительное питание.

инетересно. а есть ссылка на статью?

А статьи нет, это одна из моих поделок. Нарезал 8 метров ленты с чипом WS2812 на 8 кусков по 60 светодиодов в каждом. Куски соединены последовательно (в прямом и обратном направлениях) и управляются по одному проводу (всего 480 светодиодов). Разумеется для ленты требуется дополнительное питание.

А все понятно. Там у каждого светодиода своя микросхема. Дорого наверно получается

А все понятно. Там у каждого светодиода своя микросхема. Дорого наверно получается

В последнее время здесь брали: http://ru.aliexpress.com/item/DC5V-1m-4m-5m-WS2812B-Smart-led-pixel-stri.
У этого же поставщика есть готовые табло 8×32, но с лентами получается дешевле.

А все понятно. Там у каждого светодиода своя микросхема. Дорого наверно получается

В последнее время здесь брали: http://ru.aliexpress.com/item/DC5V-1m-4m-5m-WS2812B-Smart-led-pixel-stri.
У этого же поставщика есть готовые табло 8×32, но с лентами получается дешевле.

Табло 8х60 (а точнее 8 метров ленты) ему обошлось около 40€.
Потребляет табло до 150 ватт в час! Мне кажется немыслемый для сегодняшнего времени объём! Я год назад всё освещение в квартире перевёл на LED, и теперь если включить весь имеющийся свет в квартире у мне даже 100 ватт в час потреблять не будет. А тут табло должно светить как 1.5 киловатная лампочка из советского времени. Даже не представляю как это должно светить (на примерах явно не так светит).

Сделали бы видо-обзор того как это делали (что и как планировали, что не получилось, с какими трудностями сталкнулись, как в итоге реализовалось). Раз там у каждого светодиода своя микросхема, значит этим можно управлять программно. Это уже моя тема! Заинтересовался!

Табло 8х60 (а точнее 8 метров ленты) ему обошлось около 40€.
Потребляет табло до 150 ватт в час! Мне кажется немыслемый для сегодняшнего времени объём! Я год назад всё освещение в квартире перевёл на LED, и теперь если включить весь имеющийся свет в квартире у мне даже 100 ватт в час потреблять не будет. А тут табло должно светить как 1.5 киловатная лампочка из советского времени. Даже не представляю как это должно светить (на примерах явно не так светит).

Сделали бы видо-обзор того как это делали (что и как планировали, что не получилось, с какими трудностями сталкнулись, как в итоге реализовалось). Раз там у каждого светодиода своя микросхема, значит этим можно управлять программно. Это уже моя тема! Заинтересовался!

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

Потребляет табло до 150 ватт в час! Мне кажется немыслемый для сегодняшнего времени объём! Я год назад всё освещение в квартире перевёл на LED, и теперь если включить весь имеющийся свет в квартире у мне даже 100 ватт в час потреблять не будет. А тут табло должно светить как 1.5 киловатная лампочка из советского времени. Даже не представляю как это должно светить (на примерах явно не так светит).

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

Сделали бы видо-обзор того как это делали (что и как планировали, что не получилось, с какими трудностями сталкнулись, как в итоге реализовалось). Раз там у каждого светодиода своя микросхема, значит этим можно управлять программно.

Всё было просто: пока шла лента из Китая, написал скетч, который сразу заработал.
Как делалось табло описано в посте 26, какие библиотеки можно использовать – в посте 18. Шрифт взял из своей темы: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru.

Глобальная проблема только одна – память. На каждый светодиод нужно по 3 байта, соответственно 480 светодиодов используют 1440 байт, а памяти в Arduino Uno/Nano 2048 байт.

Из того что я увидел в ваших видео-примерах, у вас существует всего 2 режима:
1) пишем/рисуем на горизонтальном градиенте
2) пишем/рисуем на диагональном градиенте

Следовательно всё что вам надо – это указать: точка светится или нет (1 или 0), это один бит.
И одну дополнительную переменную, говорящую какой стартовый цвет градиента. А дальши функция моментально скажет какой цвет у вас в любой точке: если бит НОЛЬ – значит и цвет чёрный, если же бит “1” значит берём стартовый цвет градиента и домножаем на номер колонкти с коефицентом по каждому цвету RGB. И всё.
При достижении определённой колонки выполняется функция Инверсия(), которая меняет все биты в массиве (с нуля на единицу и с единицы на ноль), таким образом получаем мигание, которое мы видели у вас (думаю у вас и так это реализовано).
А при достижении определённой колонки присваиваем переменной “ДиагональныйГрадиент” значеиние “1”, и перед функцией расчёта цвета вводится поправка колонки: СдвигЦвета=Колонка-ДиагональныйГрадиент*Строка;
Получается что при ДиагональныйГрадиент==0 у вас для расчёта цвета скажем в сотой колонке, для любой строки, вызывается функция: РасчётЦвета(100)
А при ДиагональныйГрадиент==1, у вас для нулевой строки будет РасчётЦвета(100), для первой уже РасчётЦвета(99), для второй РасчётЦвета(98), таким образом у вас градиент диагональный.
Весь расчёт можно вообще забить в 1 стррку кода!

Если в матрице МассивТекста для пикселя стоит “0” то цвет по любому будет нулевым, а если стоит “единица”, то произведётся расчёт цвета. При этом если у нас ДиагональныйГрадиент равен нулю, то расчёт цвета идёт чисто от номера колонки, а если там “единица” то сдвигается в зависимости от строки.
Ну или облегчить процессору жизнь и разветвить:
if (МассивТекста[x,y]==0) ЦветПикселя=0;
else if (ДиагональныйГрадиент==0) ЦветПикселя=РасчётЦвета(x);
else ЦветПикселя=РасчётЦвета(x-y);
(хотя думаю что второй IF явно лишний, ведь операция “умножения” для процессора является более быстрой чем операция “ветвление”, но это всё же зависит от процессора: скажем процессоры Intel работают на опережение и захватывают сразу несколько команд для выполнения идущих прямоленейно, как будто все if(true), а процессоры AMD наоборот при встречи ветвляения заранее берут код из if then (. ) и из if else (. ). В результате если ты пишешь под Intel то стараешься чтобы в if попадалобы как можно больше true, так как иначе процессору придётся выкидывать большие куски заранее заранее захваченного и даже выполненного кода.

А по поводу потребления табло – я же сказал, цитирую: Потребляет табло до 150 ватт в час.
Ясное дело что если светодиод горит одним цветом, то он потребляет примерно в 3 раза меньше.
Но света от него у вас всё равно меньше чем от советской 500 ваттной лампочки (у меня когда-то в зале такая стояла, я глаза щурил когда входил в комнату).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *