Матрица ws2812 своими руками

Добавил пользователь Дмитрий К.
Обновлено: 19.09.2024

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

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

С появлением чипа WS2812B появилась возможность управлять RGB светодиодами по одному проводу. Это открыло поистине большие возможности для создания различных световых эффектов.

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

Что такое WS2812B?

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

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

Данная матрица потребляет много тока, ведь один светодиод потребляет около 30 мА при полной яркости. Соответственно имея 64 светодиода, нам необходимо запитать матрицу током около 2 А от внешнего источника питания, чтобы можно было безопасно использовать устройство.

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

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


Подключение достаточно простое, DIN подключается к контакту 6 Arduino Uno, а GND и VCC — к модулю на макетной плате.

После того, как мы собрали схему, мы можем перейти к вопросам программирования. Начнем мы с выбора библиотеки, а именно с библиотеки Adafruit NeoPixel.

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

В качестве основного цвета выберем красный, он также может быть зеленым или синим. Из-за того, что цвет здесь задается с помощью палитры RGB (КРАСНЫЙ, ЗЕЛЕНЫЙ, СИНИЙ), стоит сделать его одним из этих цветов, это будет самый простой способ!

Как мы знаем, красный цвет в палитре RGB равен (255,0,0). Чтобы изменения цвета с каждым последующим светодиодом были более заметными то, зеленый цвет будем увеличивать в два раза, а синий цвет — в три раза.

Таким образом, первый светодиод будет иметь значение (255,0,0), 10-й светодиод (255, 20, 30) и последний 64-й светодиод (255, 128, 192).

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

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


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

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

То, что будет отображаться, увидят только люди, загрузившие программу дома!

Как видите, работа светодиодной матрицы на основе RGB-светодиодов с драйвером WS2812B проста и приятна. Безусловно, это гораздо лучшее решение, чем управление одиночными RBG светодиодами.

В этом видео мы познакомимся с матрицей 16 на 16 собранной на светодиодах WS 2812b. Разберём как управлять любым из 256 светодиодов. Научимся включать и выключать, менять цвет и выводить сложные рисунки. Печатать текст и делать бегущие строки.
Я уже делал видео про светодиоды WS 2812b и собирал на них гирлянду на окно. Получилось очень даже красиво. Посмотреть можно здесь.

Вот так выглядит сама матрица 16х16.

матрица 16х16 ws2812b

neo pixel

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

Из матрицы выходит 8 проводов.
6 из них это питание, а два — это вход DIN и выход DOUT.
Светодиоды потребляют большой ток и если оставить всего два провода питания вначале ленты, то в конце может быть большая просадка по напряжению, или большой ток может просто пережечь тонкие токопроводящие дорожки на блоках светодиодов в матрице.

В режиме белого цвета он доходит до 60 миллиампер. Получается он из смешения 3-х цветов. Красного-Зелёного-Голубого. Каждый из них в среднем потребляет по 20мА. в среднем каждые 10 светодиодов потребляют 0,5 Ампера.

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

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

Для питания матрицы нельзя использовать контакты +5 вольт с Ардуино. Нужен отдельный блок питания. Для матрицы 16 на 16 подойдёт адаптер, например от зарядки телефона, но он должен быть напряжением 5 вольт и иметь силу тока от 2-х ампер. Лучше больше двух ампер если у вас будет много белого цвета и статичные узоры.
Если вы будете использовать яркость меньше 50 процентов, то двух ампер вам хватит. В этом видео я установил яркость всего на 10 процентов и этого вполне достаточно.

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

Вот некоторые примеры что можно сделать на такой матрице.

примеры на матрице

Для работы нам понадобятся несколько библиотек от компании Adafruit.

Adafruit NeoPixel.h - для управления лентами,
Adafruit NeoMatrix.h - для управления матрицами и
Adafruit-GFX-Library.h - для различных эффектов.

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

Например вот так.
Матрица подключена к 6 пину Ардуино.
По горизонтали 16 светодиодов
По вертикали 16 светодиодов.
Яркость 50%

Принцип работы ленты WS 2812b - матрицы 16х16.
На вход первого контроллера(НЕО пиксела) передается поток данных.
В каждом пакете которого содержится 3 байта со значением цвета для каждого из 3 светодиодов в пикселе.
Контроллер первого пиксела забирает первые 3 байта(24 бита), и устанавливает цвет в соответствии с содержимым, а остальной поток пропускает к следующим пикселам, и так до момента пока не возникнет пауза в 50 мкс, Это конец потока данных.

нео пиксел ws2812b

Каждый из пикселей WS2812B имеет 2 вывода питания (VDD, VSS), вход (DIN) и выход (DOUT).

подключение нео пикселов ws2812b

Пиксели соединяются в цепочку следующим образом


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

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

Внешний вид проекта управления цветной светодиодной матрицей WS2812B с помощью Arduino и Android приложения

В данной статье мы рассмотрим управление цветной светодиодной матрицей WS2812B (Neopixel Based RGB LED matrix shield) с помощью платы Arduino и Android приложения Blynk с целью создания "обворожительных" световых эффектов. Цветная светодиодная матрица WS2812B реализована в виде шилда (платы расширения) для Arduino.

Adafruit 5X8 NeoPixel шилд для Arduino

Совместимая с Arduino NeoPixel Shield (шилд, плата расширения) содержит 40 трехцветных светодиодов (RGB LEDs) с индивидуальной адресацией. Данная плата расширения имеет встроенный драйвер WS2812b, который организует (упорядочивает) матрицу 5×8 светодиодов в NeoPixel Shield. При необходимости несколько таких шилдов могут быть объединены в один чтобы сформировать светодиодную матрицу большого размера. Для управления трехцветными светодиодами в составе данного шилда необходим всего лишь один контакт платы Arduino, в нашем случае мы решили использовать для этой цели контакт 6.

В нашем проекте все светодиоды матрицы запитываются от контакта 5V платы Arduino, мощности которого достаточно для запитывания примерно трети светодиодов матрицы с полной яркостью. Для запитывания большего числа светодиодов необходимо подключать внешний источник питания 5V.

Принцип управления светодиодной матрицей с помощью Arduino и приложения Blynk

Используемая в нашем проекте светодиодная матрица 8*5 содержит 40 трехцветных светодиодов (RGB LEDs) с индивидуальной адресацией с помощью драйвера WS2812B. Она позволяет использовать 24-битное управление цветом, что позволяет реализовать 16.8 миллионов цветов на одном пикселе. Управляется данная матрица по одному проводу. Как следует из даташита на светодиоды матрицы рабочее напряжение для них составляет от 4 до 6 В, при этом при напряжении 5 В и полной яркости всех трех цветов один такой светодиод потребляет ток примерно 50 mA. Также матрица содержит защиту от неправильной полярности напряжения (Reverse-voltage protection) на внешних контактах подачи питания и кнопку сброса (Reset button), с помощью которой можно производить сброс платы Arduino. Также у нее есть контакт для внешней подачи питания для светодиодов, его можно использовать в случае когда мощности внутреннего источника питания не хватает.

Структурная схема управления светодиодной матрицей с помощью Arduino и приложения Blynk

Как показано на представленной структурной схеме, нам необходимо скачать и установить на свой смартфон приложение Blynk (Blynk application), с помощью которого можно будет управлять цветом и яркостью свечения светодиодов в используемой нами светодиодной матрице. После установки этих параметров в приложении Blynk даже если потом с этим приложением что-нибудь случится, мы все равно можем скачать/изменить эти данные из облака Blynk (Blynk cloud) с помощью нашего компьютера. Когда плата Arduino Uno подключена к компьютеру с помощью USB кабеля, то процесс получения этих данных выглядит следующим образом. Компьютер запрашивает данные из облака Blynk через определенные интервалы времени и если данные в этом облаке обновились, то он передает их плате Arduino, которая управляет изменением цвета и яркости свечения светодиодов. Шилд цветной светодиодной матрицы (RGB LED shield) размещен на плате Arduino и он соединен одиночным проводом с одним из контактов платы Arduino (по умолчанию это контакт D6). Последовательные данные от платы Arduino передаются на данный шилд Neopixel и управляют свечением светодиодов на нем.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Шилд цветной светодиодной матрицы 8*5 (8*5 RGB LED Matrix shield) (купить на AliExpress - смог найти там только один похожий шилд и он не от компании Adafruit, но драйвер у него точно такой же какой рассматривается в статье).
  3. USB A/B кабель для Arduino Uno.
  4. Персональный компьютер или ноутбук

Соединение шилда цветной светодиодной матрицы с платой Arduino

Используемый нами шилд светодиодной матрицы (Adafruit RGB LED Shield с драйвером WS2812B) имеет всего три контакта – один для передачи данных и два для питания. Его очень просто подключить к плате Arduino – для этого необходимо просто поместить наш шилд Neopixel LED matrix сверху платы Arduino UNO. В этом случае светодиодная матрица будет запитываться от контакта 5V платы Arduino. После установки ее сверху на плату Arduino вся конструкция будет выглядеть следующим образом:

Внешний вид установленного шилда на плату Arduino

Настройка приложения Blynk

Blynk – это приложение, которое может работать на мобильных операционных системах Android и IOS и позволяет с помощью смартфона управлять различными устройствами, поддерживающими концепцию интернета вещей (Internet of Things, IoT). При использовании данного приложения нам сначала необходимо создать в нем графический интерфейс пользователя (Graphical User Interface, GUI). Из этого графического интерфейса данные будет передаваться в облако Blynk. На приемной стороне мы имеет плату Arduino, подключенную к компьютеру по USB кабелю. Таким образом, компьютер запрашивает эти данные из облака Blynk и потом эти данные передаются в плату Arduino для дальнейшей обработки.

Прежде чем начать работу с приложением скачайте его (Blynk Application) из магазина Google Play (пользователи IOS аналогичным образом могут скачать его из App Store). После скачивания приложения зарегистрируйтесь в нем используя ваш email и придумав пароль.

Создание нового проекта

Послу успешной установки и регистрации в приложении Blynk вы увидите на его главной странице кнопку “New Project” (новый проект). Нажмите ее и у вас в приложении откроется новое окно, в котором необходимо будет ввести такие параметры проекта как имя, плату и тип соединения. Для нашего проекта выберите плату “Arduino UNO”, тип соединения “USB” и нажмите на кнопку “Create” (создать).

После успешного создания проекта вам на электронную почту (с которой вы регистрировались в приложении) придет ваш идентификатор подлинности (Authenticate ID). Сохраните его – он нам пригодится в дальнейшем.

Создание нового проекта в приложении Blynk

Создание графического интерфейса пользователя (GUI)

Откройте проект в приложении Blynk, в нем нажмите на значок “+” – после этого вы получите доступ к виджетам (графическим элементам), которые вы можете использовать в своем проекте. В нашем случае нам будет нужен RGB Color Picker который назван как “zeRGBa”, как показано на следующем рисунке.

Создание графического интерфейса пользователя в приложении Blynk

Установка виджета

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

Нажмите на ZeRGBa, после чего откроется экран с его настройками (ZeRGBa setting). Установите в нем Output option (настройка выхода) в положение “Merge”, а контакт “V2” установите в положение, показанное на следующем рисунке:

Установка виджета в приложении Blynk

Объяснение программы для Arduino

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

Первым делом в программе нам необходимо подключить все используемые библиотеки. Откройте Arduino IDE, в нем перейдите на вкладку Sketch и в ней нажмите на опцию Include Library-> Manage Libraries. В открывшемся окне выполните поиск "Blynk", после его нахождения скачайте и установите пакет Blynk (Blynk package) для платы Arduino UNO.

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

Таким светодиодом является WS2712B от компании WORLDSEMI.

Чтобы понять, что из себя представляет данный светодиод, посмотрим его предшественника — WS2811. Это была просто микросхема, к которой подключался RGB-светодиод. Делалось это, например, вот таким образом


Это светодиодная гирлянда, в каждом фонарике которой находится RGB-светодиод, подключенный к микросхеме WS2811, расположенной на небольшой плате.

Давайте посмотрим назначение выводов микросхемы WS2811


Кроме ножки питания и общего провода мы видим здесь контакты для подключения ножек RGB-светодиода раздельно для каждого цвета, а также ножку цифрового входа DIN и ножку цифрового выхода DO. Также есть ещё одна ножка SET, которая требуется для включения режима пониженной скорости.

Поэтому к соответствующим ножкам мы подключаем питание, светодиод и передаём определённым образом цифровой сигнал на ножку DIN, чтобы наш светодиод засветился определённым цветом. Затем, если мы выдержим определённое время, светодиод засветится этим цветом. Но если мы не выдержим данного времени и начнём передавать следующий цифровой код, то данный код переместится через ножку цифрового выхода DO к следующей такой же микросхеме, если таковая имеется. Следующую микросхему мы подсоединяем к данной ножке нашей микросхеме ножкой DIN. И таким образом мы выстраиваем цепочку из таких микросхем с подключенными к ним светодиодами (нажмите на картинку для увеличения изображения)


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


Вот назначение его ножек вместе с размерами


Ко мне в руки чудесным образом попала вот такая ленточка, выполненная на данных умных светодиодах (нажмите на картинку для увеличения изображения)


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

Также мы видим, что из обоих концов данной ленты выведены по 5 проводов


Назначение каждого провода.

Красный провод в колодке — питание, белый в колодке — общий, зелёный в колодке — сигнальный.

Красный отдельный — высокотоковое питание, чёрный — высокотоковый общий провод.

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

Вот так вот выглядят вблизи светодиоды на моей ленте


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

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

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

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


Как-то непривычно (не R+G+B), но ничего страшного, справимся.

Теперь посмотрим, как передаётся каждый бит. Под каждый бит отводится определённое время — 1,25 микросекунды.

Если мы передаём ноль, то сначала мы устанавливаем высокий уровень сигнала, держим его в таком состоянии 0,35 микросекунды (допускается отклонение 150 наносекунд или 0,15 микросекунды). По прошествии данного времени мы устанавливаем на ножке низкий уровень и держим его до передачи следующего бита 0,9 микросекунды (допускается такое же отклонение — 150 наносекунд)


Единица передаётся наоборот. Мы также устанавливаем высокий уровень, ждём 0,9 микросекунды (отклонение то же), затем опускаем уровень, ждём 0,35 микросекунды (отклонение такое же — 150 наносекунд)


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

И, так как время передачи одного бита у нас постоянное, то несложно посчитать скорость передачи данных. Она получится равной 800 килобит в секунду. Также несложно подсчитать, что для передачи 24 бит, необходимых и достаточных для информации, требуемой для одного светодиода, потребуется 30 микросекунд. Соответственно, для всех 144 светодиодов потребуется 4,32 милисекунд. Вполне неплохая скорость.

Теперь немного об электрических параметрах данных светодиодов.

Питается светодиод от 3,5 до 5,3 вольт.

Потребление тока при полном свечении светодиода белым светом (все 24 бита в единицах) мы также можем посчитать. При данном цвете заявлена потребляющая мощность — 0,3 ватта. Поэтому, если мы будем питать ленту напряжением 5 вольт, то это будет 60 милиампер. А если мы зажжём все наши 144 светодиода полностью белым цветом на всю яркость (единицы во всех битах во всех светодиодах), то мы получим потребление тока всей нашей лентой целых 8,64 ампера. Чтобы нам не получить такой огромный ток, то мы не будем наши светодиоды никогда зажигать таким полным светом, а будем зажигать их определёнными цветами, и то не более половины их свечения, поэтому мы вполне обойдёмся 3-амперным DC-DC преобразователем который мы подключим к силовым проводам ленты


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

То есть, мы будем стараться, чтобы при нашем тестировании светодиоды горели максимум в 1/6 часть максимального их свечения. Например, чтобы светодиод засветился зелёным цветом, то мы интенсивность RGB зададим как 0,128,0. А если нам надо включить оранжевый цвет, а это одновременно и красный и жёлтый, то мы уже включим 64,0,64. То есть суммарное число у нас не будет превышать 128, а это и будет 1/6 часть свечения, поэтому суммарный ток потребления ленты у нас не превысит 1,5 ампера. Поэтому можно ничего не бояться. И даже при таком свечении при такой плотности светодиодов на ленте она будет светиться очень ярко.

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


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

В следующей части нашего урока мы создадим проект, изучим работу таймера в режиме PWM с использованием DMA и попробуем зажечь определённые светодиоды различными цветами.

Отладочную плату STM32F103C8T6 можно приобрести здесь STM32F103C8T6

Программатор недорогой можно купить здесь ST-Link V2

Ленты светодиодные WS2812B разные можно приобрести здесь WS2812B


После переноса старого Эффектора на платформу Arduino (ATmega328P) стало возможно развивать проект дальше. И вот теперь к Эффектору я подключил умную ленту (NeoPixels) WS2812.
При этом новый Эффектор WS2812 не просто выводит свои эффекты на умную ленту вместо обычных светодиодов, но еще и обзавелся внушительным количеством нового функционала.

Новые плюшки:
— переделан алгоритм формирования уровней, теперь яркость каналов имеет 255 градаций (по сравнению с 8 в предыдущем варианте)

— переделаны встроенные эффекты, теперь они стали плавней
— количество встроенных эффектов увеличено с 8 до 16.

Правда из программы управления Эффектор-12 доступны, как и в предыдущем варианте, только 8 (не стал переделывать программу, дабы осталась совместимость со всеми вариантами Эффекторов), но с самого Эффектора и пульта можно переключать все 16

— как и в предыдущем Эффекторе осталось управление от ИК-пульта, но добавились новые команды управления, связанные с умной лентой
— так как умная лента цветная, то для формирования разных цветов от монохромных сигналов уровня каналов, были задействованы палитры цветов. Можно выбрать одну из 8 палитр (включая динамическую палитру переливающихся цветов)
— теперь Эффектор может быть участником сети ЗиЧип как сателлит

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

Как это выглядит вживую.

Сборка

Так как устройство работает на готовой плате Arduino Nano (или Uno), собирать/паять ничего особо и не придется. Достаточно подключить к Ардуине умную ленту (к выводу 13), залить прошивку (через стандартный ардуиновский USB шнур) и устройство заработает.


Если у Вас количество пикселей WS2812 не превышает 2-3 десятка, то и блока питания отдельного не понадобится – все будет работать от USB-порта. Если лента длинная — USB-порт не сможет обеспечить нужный ток. В этом случае понадобится внешний мощный блок питания 5 вольт.

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

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


Описание работы

Новым способом управления в этом устройстве являются аналоговые входа (АЦП). Посредством напряжения на них (в пределах 0 – 5 вольт) можно изменять картинку, отображаемую на ленте. Линии АЦП подтянуты к 5 вольтам, то есть если к линии ничего не подключено, устройство воспринимает это как максимальный уровень.

– strip_Pixels Number – количество пикселей в ленте, воспроизводящих картинку (5 вольт – 255шт., 0 – 0)
– strip_Scale – масштабирование картинки на ленте (5 вольт – масштаб 1канал:1пиксель, 0 – на всей ленте проецируется 1 канал)
– strip_Offset – смещение рисунка по ленте
– strip_Bright – общая яркость свечения ленты (5 вольт – максимум, 0 – минимум)

Управление посредством уровня напряжения открывает новые возможности использования устройства. Например, если подключить к входу strip_Pixels Number аналоговый сигнал с усилителя, то мы получим линейку-индикатор уровня. Еще, задействовав палитру огня и подключив к strip_Bright сигнал с градусника можно визуализировать температуру и т.д.

Управление устройством посредством бытового пульта.

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

4 – последовательно нажать на пульту 9 кнопок в очередности функций (кнопок устройства 0 All Off … 8 strip_IR Out)
5 – после этого устройство автоматически начинает работать в штатном режиме

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

Если какая либо кнопка не нужна в устройстве (например, 8 strip_IR Out советую пока не задействовать), то в процессе ее изучения нужно нажимать ранее изученную клавишу.

Управление устройством посредством программы Эффектор-12.

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

Читайте также: