Як керувати індивідуально адресними світлодіодами WS2812B за допомогою Arduino

У цьому підручнику ми дізнаємося, як керувати індивідуально адресованими світлодіодами RGB або світлодіодною стрічкою WS2812B за допомогою Arduino. Ви можете переглянути наступне відео або прочитати письмовий підручник нижче, щоб отримати докладнішу інформацію.

Спочатку ми пояснимо принцип роботи на декількох основних прикладах, а потім подивимось на справді крутий проект Arduino, використовуючи ці світлодіоди, інтерактивний журнальний столик "зроби сам". Журнальний столик оснащений світлодіодами WS2812B, інфрачервоними датчиками наближення для виявлення предметів та модулем Bluetooth HC-05 для управління кольорами за допомогою спеціальної програми для Android. Цей проект насправді є співпрацею між мною та Марією з YouTube-каналу Creativity Hero.

індивідуально

Як працюють світлодіоди WS2812B

Почнемо з детального розгляду світлодіодної стрічки. Він складається зі світлодіодів типу 5050 RGB, в які вбудований дуже компактний світлодіодний драйвер WS2812B.

Залежно від інтенсивності трьох окремих червоних, зелених та синіх світлодіодів ми можемо імітувати будь-який бажаний колір.

Чудовим у цих світлодіодах є те, що ми можемо управляти навіть усією світлодіодною стрічкою лише одним штифтом з нашої плати Arduino. Кожен світлодіод має три роз'єми на кожному кінці, два для живлення та один для даних. Стрілка вказує напрямок потоку даних. Панель виведення даних попереднього світлодіода підключена до панелі введення даних наступного світлодіода. Ми можемо вирізати смужку до будь-якого розміру, який ми хочемо, а також віддалити світлодіоди за допомогою деяких проводів.

Що стосується живлення, яке вони працюють від 5 В, і кожен червоний, зелений та синій світлодіоди споживає близько 20 мА, або це в цілому 60 мА для кожного світлодіода при повній яскравості. Зверніть увагу, що коли Arduino живиться через USB, 5-контактний висновок може обробляти лише близько 400 мА, а при живленні через роз'єм живлення стовбура, 5-контактний висновок може обробляти близько 900 мА. Отже, якщо ви використовуєте більше світлодіодів, і кількість струму, яку вони будуть витрачати, перевищує обмеження, згадані вище, ви повинні використовувати окремий блок живлення 5 В. У такому випадку вам також потрібно з’єднати дві лінії заземлення дві між собою. Крім того, для зменшення шуму на цій лінії рекомендується використовувати резистор близько 330 Ом між Arduino та штирком даних світлодіодної стрічки, а також конденсатор приблизно 100 мкФ через 5 В і землю для згладжування джерела живлення.

Приклади світлодіодів Arduino та WS2812B

Приклад 1

Тепер як приклад я буду використовувати смужку довжиною 20 світлодіодів, підключену до Arduino через резистор 330 Ом і живлену окремим джерелом живлення 5 В, як описано вище. Для програмування Arduino ми будемо використовувати бібліотеку FastLED. Це відмінна і добре задокументована бібліотека, яка дозволяє легко керувати світлодіодами WS2812B.

Ви можете отримати компоненти, необхідні для цього прикладу, за посиланнями нижче:

  • Світлодіодна стрічка WS2812B …………………. Амазонка/Banggood
  • Arduino Board …………………………… Амазонка/Banggood
  • Джерело живлення постійного струму 5В 6А ……………… Амазонка/Banggood

Розкриття інформації: це партнерські посилання. Як партнер компанії Amazon я заробляю на кваліфікованих покупках.

Ось вихідний код Arduino для першого прикладу:

Опис: Отже, спочатку нам потрібно включити бібліотеку FastLED, визначити контакт, до якого підключені дані світлодіодної стрічки, визначити кількість світлодіодів, а також визначити масив типу CRGB. Цей тип містить світлодіоди з трьома однобайтовими членами даних для кожного з трьох червоних, зелених та синіх кольорових каналів.

У розділі налаштування нам просто потрібно ініціалізувати FastLED параметрами, визначеними вище. Тепер це основний цикл, яким ми можемо керувати нашими світлодіодами як завгодно. За допомогою функції CRGB ми можемо встановити будь-який світлодіод на будь-який колір, використовуючи три параметри червоного, зеленого та синього кольорів. Для того, щоб зміни відбулися на світлодіодах, нам потрібно викликати функцію FastLED.show ().

Приклад 2

Використовуючи певні цикли «for», ми можемо легко зробити анімацію.

Ось вихідний код Arduino для другого прикладу:

Тут перший цикл «for» засвітить усі 20 світлодіодів синім кольором, від першого до останнього світлодіода із затримкою в 40 мілісекунд. Наступний цикл "for" знову запалює всі 20 світлодіодів, але на цей раз червоним кольором і в зворотному порядку, від останнього до першого світлодіода.

Бібліотека FastLED має безліч інших функцій, які можна використовувати для створення дійсно цікавих анімацій та світлових шоу, тож ваш наступний світлодіодний проект сяє лише від вашої фантазії.

Інтерактивний світлодіодний журнальний столик із використанням світлодіодів WS2812B

А зараз давайте подивимось на проект інтерактивного світлодіодного журнального столика “DIY”, про який я згадував на початку. Отже, це був проект співпраці зі мною та Марією з героя творчості.

Ви можете переглянути статтю на веб-сайті, де вона пояснює весь процес виготовлення столу, починаючи від різання та складання дерев’яної конструкції, до пайки та з'єднання всіх електронних деталей разом. Тут я розповім, як працює електронна частина, як створити власний додаток для Android та запрограмувати плату Arduino.

Ось повна принципова схема цього проекту.

Таким чином, стіл складається з 45 адресних світлодіодів, 45 інфрачервоних датчиків наближення та модуля Bluetooth HC-05, всі вони підключені до плати Arduino Mega. Схема живиться від джерела живлення 5В 6А.

Ви можете отримати компоненти, необхідні для цього прикладу, за посиланнями нижче:

  • Світлодіодна стрічка WS2812B …………………. Амазонка/Banggood
  • ІК-датчик наближення …………………… Амазонка/Banggood
  • Модуль Bluetooth HC-05 ……. …… Амазонка/Banggood
  • Arduino Board …………………………… Амазонка/Banggood
  • Джерело живлення постійного струму 5В 6А ……………… Амазонка/Banggood

Розкриття інформації: це партнерські посилання. Як партнер компанії Amazon я заробляю на кваліфікованих покупках.

Вихідні коди

Ось код Arduino для цього проекту, і якщо виключити функцію керування кольором Bluetooth, ми можемо помітити, що код насправді дуже простий.

Desctiopion: Спочатку нам потрібно визначити основні параметри, як пояснювалося раніше, та встановити 45 контактів датчиків наближення як входи.

У головному циклі за допомогою єдиного циклу «for» ми встановлюємо всі світлодіоди на певний колір, а також перевіряємо, чи не виявляє об’єкт датчик наближення. Якщо це правда, або в цьому випадку стан НИЗЬКО логічного, конкретний реактивний колір буде встановлений на конкретний світлодіод. В кінці за допомогою функції FastLED.show () ми оновлюємо кольори світлодіодів.

Щоб включити функцію керування кольором Bluetooth, нам потрібно додати ще кілька рядків коду, а також зробити додаток для Android. У мене вже є окремі підручники про те, як використовувати модуль Bluetooth HC-05 з Arduino та як створити власну програму для Android за допомогою онлайн-програми MIT App Inventor, тому ви завжди можете перевірити їх, щоб отримати докладнішу інформацію.

Ось як працює програма для Android. Він складається із зображення кольорової палітри, звідки ми можемо підбирати кольори, двох кнопок перевірки, звідки ми можемо вибрати, чи буде вибраний колір застосовуватися до реактивних або фонових світлодіодів та повзунка для регулювання яскравості.

Якщо ми подивимося на блоки програми, ми зможемо побачити, що відбувається, коли торкаємося полотна, де розміщено зображення кольорової палітри. Використовуючи блоки .GetPixelColor, ми отримуємо значення червоного, зеленого та синього для вибраного кольору, а за допомогою блоку Bluetooth SendText ми надсилаємо цю інформацію в Arduino у вигляді тексту.

Залежно від вибраного прапорця, ми надсилаємо інший перший символ або маркер, який допомагає при отриманні тексту на Arduino. Те ж саме відбувається, коли ми змінюємо положення повзунка, значення від 10 до 100 надсилається на Arduino у вигляді тексту, з маркером “3” попереду.

Ви можете завантажити додаток для Android нижче, а також файл проекту MIT App Inventor: