Подключение адресной светодиодной ленты WS2812 (NeoPixel LEDs) к Arduino


В настоящее время адресные светодиодной ленты (NeoPixel LEDs) на базе светодиодов WS2812 находят широкое применение в различных областях. В данной статье мы рассмотрим подключение подобной ленты к плате Arduino и научимся управлять ею в различных режимах.

Внешний вид адресной светодиодной ленты

Ранее на нашем сайте применение адресной светодиодной ленты (NeoPixel LEDs) рассматривалось в следующих проектах:

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

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Адресная светодиодная лента (WS2812 RGB LED Ring Module) (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Внешний вид необходимых для проекта компонентовЧто такое NeoPixel?

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

RGB светодиод способен излучать любой цвет, комбинируя в нужной пропорции 3 основных базовых цвета – красный, зеленый и синий. Например, красного и синего цвета формирует фиолетовый цвет. То есть если каждым из базовых цветов управлять с помощью соответствующих им значений от 0 до 255, то можно сформировать любой цвет. Например, фиолетовый (magenta) цвет в этом случае будет формироваться совокупностью значений 255 0 255 (в шестнадцатеричном коде - 2550255 = # FF00FF). RGB светодиоды формируют множество цветов, основываясь на этой модели.

RGB модель цветовДля управления RGB светодиодом необходимо 3 цифровых контакта микроконтроллера (платы Arduino). То есть, к примеру, если мы хотим управлять 60 RGB светодиодами (причем цвет каждого из них настраивать независимо от других), то нам для этой цели понадобится 180 цифровых контактов. Естественно, подобный подход очень неудобен, поэтому для управления большой совокупностью RGB светодиодов, объединенных, к примеру, в ленту, стали использовать адресацию.

Внутреннее устройство RGB адресного светодиода

Адресуемые (адресные) светодиоды (addressable LEDs) – это новое поколение светодиодов, включающих помимо RGB светодиоды также микросхему (контроллер) управления им. В настоящее время для управления подобными светодиодами наиболее часто используется контроллер WS2812, который позволяет получить доступ к множеству светодиодов с помощью одного цифрового контакта по интерфейсу one wire (1-wire), используя адреса светодиодов.

Схема подключения адресуемых светодиодовНо в отличие от обычных светодиодов данные светодиоды не включаются просто при подаче на них напряжения, для управления ими необходим микроконтроллер. NeoPixel – это марка (наименование) компании Adafruit для адресуемых светодиодов.

Почему NeoPixel?

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

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

Схема проекта

Схема подключения адресной светодиодной ленты WS2812 к плате Arduino представлена на следующем рисунке.

Схема подключения адресной светодиодной ленты WS2812 к плате ArduinoРезистор в схеме необходим для защиты от повреждений светодиодов NeoPixel и для корректной передачи данных. Наилучшее расстояние для связи между модулем светодиодов NeoPixel и микроконтроллерной платой составляет от 1 до 2 метров.

Примечание: если вы используете адресную светодиодную ленту с большим количеством светодиодов, то в этом случае рекомендуется подключать конденсатор большой емкости (приблизительно 1000 мкФ) параллельно + и – источника питающего напряжения.

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

Прежде чем начинать работу с адресной светодиодной лентой в Arduino необходимо скачать и установить библиотеку для нее - NeoPixel Adafruit library.

Эта функция определяет число светодиодов и контакт Arduino для управления ими.

Эта функция инициализирует адресную светодиодную ленту.

Функция, устанавливающая яркость свечения светодиодов. 1 – минимальная яркость, 255 – максимальная.

Эта функция задает цвет свечения светодиода с помощью системы RGB, при этом задается номер светодиода (от 0 до NUMPIXELS-1).

Функция, которая активирует заданные настройки, то есть включает светодиоды с заданными ранее настройками.

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

Раздельное управление светодиодами NeoPixel

В этом примере программы мы включаем светодиоды в ленте и управляем цветом и интенсивностью свечения каждого светодиода по отдельности использую плату Arduino UNO.

Мигание светодиодами NeoPixel в ленте

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

Постепенное затухание свечения светодиодов в ленте

Постепенное затухание свечения светодиодов (fading) – это еще один из замечательных эффектов светодиодов NeoPixel. Чем медленнее происходит затухание, тем более впечатляющим является этот эффект.

Случайный режим свечения светодиодов

В этом примере мы будем использовать функцию random(num1, num2) чтобы сгенерировать случайное число в интервале от num1 и num2 и на основе этого выбрать цвет и светодиод.

Режим радуги для светодиодов NeoPixel

В сети есть интересный инструмент для удобного создания различных эффектов для адресной светодиодной ленты NeoPixel - NeoPixel Effects Generator. В нем вы можете задать число светодиодов и контакт платы Arduino для управления ими и после создания в этом генераторе необходимых эффектов для вашей ленты вы можете в этом генераторе сформировать готовый код для платы Arduino.

Для этого выполните следующую последовательность шагов.

1. На сайте генератора нажмите Add Led Strip (добавить светодиодную ленту).

2. Задайте количество светодиодов в ленте и номер контакта Arduino, с которого будет осуществляться управление ими.

3. После этого нажмите на Add Effect (добавить эффект) и выберите желаемый эффект.

4. Задайте цвет свечения светодиодов.

5. Нажмите на “generate Arduino code” и после этого для вас будет сформирован код программы для Arduino, который вы можете непосредственно вставить в Arduino IDE.

(Проголосуй первым!)
Загрузка...
7 846 просмотров

Комментарии

Подключение адресной светодиодной ленты WS2812 (NeoPixel LEDs) к Arduino — 6 комментариев

  1. Здравствуй, спасибо за статью и то, что указано на классный конструктор эффектов, сделал себе радугу со своими цветами, скоростью и т.д, но есть проблема, может подскажете. Не могу изменить яркость, шпарит очень ярко и сильно, куда только не пытался впихнуть pixel.setBrightness(); не получается и все, может знаете как уменьшить яркость, спасибо.

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

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

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

    • Могу конечно ошибаться, но попробуйте задать цвет не 255, а 230 или меньше, по идее тусклее должно быть

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

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