В настоящее время адресные светодиодной ленты (NeoPixel LEDs) на базе светодиодов WS2812 находят широкое применение в различных областях. В данной статье мы рассмотрим подключение подобной ленты к плате Arduino и научимся управлять ею в различных режимах.
Ранее на нашем сайте применение адресной светодиодной ленты (NeoPixel LEDs) рассматривалось в следующих проектах:
- комнатный термометр на Arduino Nano;
- связь двух плат Arduino на расстоянии 3 км с помощью Lora E32.
Почему NeoPixel?
Способность управлять отдельно каждым светодиодом в адресной светодиодной ленте дает вам возможность создать уникальные визуальный эффекты для своих проектов. Но помните о том, что если вам требуются очень высокие скорости переключения светодиодов, то использование подобной адресной светодиодной ленты нежелательно. Еще одним достоинством адресной светодиодной ленты NeoPixel является ее низкая цена по сравнению с другими типами адресуемых светодиодов. Светодиоды NeoPixel доступны в форме колец, лент, прямоугольников и поверхностей круглой формы – вы можете выбрать любой ее тип для своих проектов.
Примечание: чем больше светодиодов NeoPixel вы используете, тем больше оперативной памяти и больше мощности необходимо для управления ими, также при этом увеличивается время обработки, поэтому выбирайте оптимальное количество светодиодов NeoPixel исходя из возможностей используемого вами микроконтроллера.
Список необходимого
- Мозг устройства – Ардуино Нано – 1 шт. — 150 р.
- Датчик движения — HC-SR505 – 1 шт. — 60 р.
- Сенсорная кнопка TTP-223 – 1 шт. — 20 р.
- Транзистор IRF-3205 — 3 шт. -150 р.
- Резистор 10 К 0,25 Вт – 3 шт. – 6 р.
- Резистор 20 Ом 0,25 Вт – 3 шт. – 6 р.
- Макетная плата под пайку размерами 90х50 мм – 1 шт. 100 р.
- Корпус 100х60 — 1 шт. 60 руб.
Итого 14 деталей на общую сумму примерно 600 рублей + сама светодиодная RGB лента в зависимости от формата планируемой подсветки.
Всё, кроме транзисторов и резисторов дешевле купить в Китае, а вот транзисторы лучше купить в наших магазинах. Китайцы иногда присылают откровенный шлак под видом транзисторов, а резисторы продают большим количеством, хоть и довольно дёшево.
Схема проекта
Схема подключения адресной светодиодной ленты WS2812 к плате Arduino представлена на следующем рисунке.
Резистор в схеме необходим для защиты от повреждений светодиодов NeoPixel и для корректной передачи данных. Наилучшее расстояние для связи между модулем светодиодов NeoPixel и микроконтроллерной платой составляет от 1 до 2 метров.
Примечание: если вы используете адресную светодиодную ленту с большим количеством светодиодов, то в этом случае рекомендуется подключать конденсатор большой емкости (приблизительно 1000 мкФ) параллельно + и – источника питающего напряжения.
Принцип управления нагрузкой через Ардуино
Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.
Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете
Через аналоговый порт возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.
Синтаксис команд
Цифровой вывод:
pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных; digitalWrite(12, HIGH); — подаём на дискретный выход 12 логическую единицу, зажигая светодиод.
Аналоговый вывод:
analogOutPin = 3; – задаём порт 3 для вывода аналогового значения; analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В
Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение
Способы управления светодиодами через Ардуино
Напрямую через порт можно подключить лишь слабый светодиод, да и то лучше через ограничительный резистор. Попытка подключить более мощную нагрузку выведет его из строя.
Для более мощных нагрузок, в том числе светодиодных лент, используют электронный ключ – транзистор.
Объяснение программы Arduino для работы с адресной светодиодной лентой
Прежде чем начинать работу с адресной светодиодной лентой в Arduino необходимо скачать и установить библиотеку для нее — NeoPixel Adafruit library.
Arduino
1 | Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); |
Эта функция определяет число светодиодов и контакт Arduino для управления ими.
Arduino
1 | pixels.begin(); |
Эта функция инициализирует адресную светодиодную ленту.
Arduino
1 | pixel.setBrightness(b); |
Функция, устанавливающая яркость свечения светодиодов. 1 – минимальная яркость, 255 – максимальная.
Arduino
1 | pixels.setPixelColor(Wich LED,Wich color(Red,Green,Blue)); |
Эта функция задает цвет свечения светодиода с помощью системы RGB, при этом задается номер светодиода (от 0 до NUMPIXELS-1).
Arduino
1 | pixels.show(); |
Функция, которая активирует заданные настройки, то есть включает светодиоды с заданными ранее настройками.
Теперь рассмотрим примеры программ, позволяющие реализовать различные варианты управления светодиодами в адресной светодиодной ленте.
Лента на базе ws2812b
Лента на базе ws2812b
Лента на чипе ws2812b является более совершенствованной, чем ее предшественник. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.
Основные преимущества ленты на основе ws2812b:
- компактные размеры;
- легкость управления;
- управление осуществляется всего по одной линии + провода питания;
- количество включенных последовательно светодиодов не ограничено;
- невысокая стоимость – покупка отдельно трех светодиодов и драйвера к ним выйдет значительно дороже.
Лента оснащена четырьмя выходами:
- питание;
- выход передачи данных;
- общий контакт;
- вход передачи данных.
Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до +80 градусов. Напряжение питания составляет 5 В +-0,5.
ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью. Нули и единицы кодируются высоким и низким уровнем сигнала по линии.
1 бит передается за 1,25 мкс. Весь пакет из 24 бит для одного светодиода передается за 30 мкс.
Режим радуги для светодиодов NeoPixel
В сети есть интересный инструмент для удобного создания различных эффектов для адресной светодиодной ленты NeoPixel — NeoPixel Effects Generator. В нем вы можете задать число светодиодов и контакт платы Arduino для управления ими и после создания в этом генераторе необходимых эффектов для вашей ленты вы можете в этом генераторе сформировать готовый код для платы Arduino.
Для этого выполните следующую последовательность шагов.
1. На сайте генератора нажмите Add Led Strip (добавить светодиодную ленту).
2. Задайте количество светодиодов в ленте и номер контакта Arduino, с которого будет осуществляться управление ими.
3. После этого нажмите на Add Effect (добавить эффект) и выберите желаемый эффект.
4. Задайте цвет свечения светодиодов.
5. Нажмите на “generate Arduino code” и после этого для вас будет сформирован код программы для Arduino, который вы можете непосредственно вставить в Arduino IDE.
Принцип управления нагрузкой через Ардуино
управление Arduino
На плате есть много выходов, как цифровых, имеющих два состояния – включено и выключено, так и аналоговых, управляемых через ШИМ-controller с частотой 500 Гц.
Но выходы рассчитаны на ток 20 – 40 мА с напряжением 5 В. Этого хватит для питания индикаторного RGB-светодиода или матричного светодиодного модуля 32×32 мм. Для более мощной нагрузки это недостаточно.
Для решения подобной проблемы во многих проектах нужно подключить дополнительные устройства:
- Реле. Кроме отдельных реле с напряжением питания 5В есть целые сборки с разным количеством контактов, а также со встроенными пускателями.
- Усилители на биполярных транзисторах. Мощность таких устройств ограничена током управления, но можно собрать схему из нескольких элементов или использовать транзисторную сборку.
- Полевые или MOSFET-транзисторы. Они могут управлять нагрузкой с токами в несколько ампер и напряжением до 40 – 50 В. При подключении мосфета к ШИМ и электродвигателю или к другой индуктивной нагрузке, нужен защитный диод. При подключении к светодиодам или LED-лампам в этом нет необходимости.
- Платы расширения.
FAQ
Основные вопросы
В: Как скачать с этого грёбаного сайта? О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP
В: Скачался какой то файл .zip, куда его теперь? О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.
В: Компьютер никак не реагирует на подключение Ардуины! О: Возможно у тебя зарядный USB кабель, а нужен именно data-кабель, по которому можно данные передавать
В: Ошибка! Скетч не компилируется! О: Путь к скетчу не должен содержать кириллицу. Положи его в корень диска.
В: Сколько стоит? О: Ничего не продаю.
Варианты подсветки подвесного потолка
В качестве подсветки подвесных конструкций могут использоваться такие же источники, как для натяжных потолков. Обычно это – светодиодные ленты. Но могут быть и другие варианты – от неоновой подсветки до подвесных светильников.
Виды
Для освещения подвесного потолка чаще всего используются:
- неоновые лампы, отличающиеся разнообразием цветов, но достаточно дорогие и требующие установки бортиков для крепления светильников;
- дюралайт – экономичный вариант, минусом которого является выход из строя всего шнура, если перестал работать хотя бы один элемент;
- светодиодные ленты – самый универсальный вид подсветки, подходящий как для одноуровневого потолка, так и для многоуровневых конструкций в комнатах любого назначения.
Подсвечиваться конструкция может и устройствами, расположенными по краям гипсокартонного потолка. Устанавливать такие светильники проще, чем на натяжном полотне. А создают с их помощью не только подсветку, но и основное освещение.
Порядок установки
Подсветка подвесного потолка делается открытой или скрытой. Чаще всего выбирают второй вариант, основные этапы которого выглядят следующим образом:
- Прокладывают и подключают проводку. Один из способов подключения предусматривает использование кабель-канала, второй – прокладку провода в гофре.
- Если используется кабель-канал, проводку размещают внутри конструкции и крепится к стене.
- При прокладке в гофре проводку крепят крепёжными клипсами, кабель к каждому светильнику прокладывают в отдельной гофрированной трубке.
- Выполняют отверстия под светильники в соответствии с чертежом (для ленты таких действий не требуется).
- Устанавливают и подключают к питанию светильники или светодиодная лента.
Effects
- Static — No blinking. Just plain old static light.
- Blink — Normal blinking. 50% on/off time.
- Breath — Does the «standby-breathing» of well known i-Devices. Fixed Speed.
- Color Wipe — Lights all LEDs after each other up. Then turns them in that order off. Repeat.
- Color Wipe Inverse — Same as Color Wipe, except swaps on/off colors.
- Color Wipe Reverse — Lights all LEDs after each other up. Then turns them in reverse order off. Repeat.
- Color Wipe Reverse Inverse — Same as Color Wipe Reverse, except swaps on/off colors.
- Color Wipe Random — Turns all LEDs after each other to a random color. Then starts over with another color.
- Random Color — Lights all LEDs in one random color up. Then switches them to the next random color.
- Single Dynamic — Lights every LED in a random color. Changes one random LED after the other to a random color.
- Multi Dynamic — Lights every LED in a random color. Changes all LED at the same time to new random colors.
- Rainbow — Cycles all LEDs at once through a rainbow.
- Rainbow Cycle — Cycles a rainbow over the entire string of LEDs.
- Scan — Runs a single pixel back and forth.
- Dual Scan — Runs two pixel back and forth in opposite directions.
- Fade — Fades the LEDs on and (almost) off again.
- Theater Chase — Theatre-style crawling lights. Inspired by the Adafruit examples.
- Theater Chase Rainbow — Theatre-style crawling lights with rainbow effect. Inspired by the Adafruit examples.
- Running Lights — Running lights effect with smooth sine transition.
- Twinkle — Blink several LEDs on, reset, repeat.
- Twinkle Random — Blink several LEDs in random colors on, reset, repeat.
- Twinkle Fade — Blink several LEDs on, fading out.
- Twinkle Fade Random — Blink several LEDs in random colors on, fading out.
- Sparkle — Blinks one LED at a time.
- Flash Sparkle — Lights all LEDs in the selected color. Flashes single white pixels randomly.
- Hyper Sparkle — Like flash sparkle. With more flash.
- Strobe — Classic Strobe effect.
- Strobe Rainbow — Classic Strobe effect. Cycling through the rainbow.
- Multi Strobe — Strobe effect with different strobe count and pause, controlled by speed setting.
- Blink Rainbow — Classic Blink effect. Cycling through the rainbow.
- Chase White — Color running on white.
- Chase Color — White running on color.
- Chase Random — White running followed by random color.
- Chase Rainbow — White running on rainbow.
- Chase Flash — White flashes running on color.
- Chase Flash Random — White flashes running, followed by random color.
- Chase Rainbow White — Rainbow running on white.
- Chase Blackout — Black running on color.
- Chase Blackout Rainbow — Black running on rainbow.
- Color Sweep Random — Random color introduced alternating from start and end of strip.
- Running Color — Alternating color/white pixels running.
- Running Red Blue — Alternating red/blue pixels running.
- Running Random — Random colored pixels running.
- Larson Scanner — K.I.T.T.
- Comet — Firing comets from one end.
- Fireworks — Firework sparks.
- Fireworks Random — Random colored firework sparks.
- Merry Christmas — Alternating green/red pixels running.
- Fire Flicker — Fire flickering effect. Like in harsh wind.
- Fire Flicker (soft) — Fire flickering effect. Runs slower/softer.
- Fire Flicker (intense) — Fire flickering effect. More range of color.
- Circus Combustus — Alternating white/red/black pixels running.
- Halloween — Alternating orange/purple pixels running.
- Bicolor Chase — Two LEDs running on a background color.
- Tricolor Chase — Alternating three color pixels running.
- thru 62. Custom — Up to eight user created custom effects.
Готовимся к новому году: простая гирлянда на arduino
Где можно приобрести?
Адресную светодиодную лентe без труда можно найти в любом специализированном магазине. Из проверенного варианта, отличающегося не высокими ценниками и хорошим качеством продукта, можно посоветовать интернет-магазин www.giant4.ru. Также адресную LED-ленты можно приобрести и на всем известной площадки AliExpress.com.
Чтобы избежать проблем с некачественной продукцией, при покупке товара на AliExpress стоит внимательно изучать товар и отзывы покупателей.
Используемые источники:
- https://alexgyver.ru/ws2812_guide/
- https://arduinomaster.ru/datchiki-arduino/adresnaya-svetodiodnaya-lenta/
- https://ledjournal.info/spravochnik/adresnaja-svetodiodnaja-lenta.html