Управління 4 RGB світлодіодами arduino. Управління RGB світлодіодом за допомогою Arduino. Модулі керування Ардуїно

На попередньому уроці ми вже спробували. Тепер розберемося з багатобарвним світлодіодом, який часто називають скорочено: RGB-світлодіод.

RGB – це абревіатура, яка розшифровується як: Red – червоний, Green – зелений, Blue – синій. Тобто всередині цього пристрою розміщується одразу три окремі світлодіоди. Залежно від типу RGB-світлодіод може мати загальний катод або загальний анод.

Змішання квітів

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

Матриця телевізора складається з окремих точок. різних квітів. Якщо взяти лупу і подивитися через неї на монітор, то ці точки можна легко побачити. А ось на вуличному екрані точки розміщуються не дуже щільно, тому їх можна розрізнити неозброєним оком. Але з відстані кілька десятків метрів ці точки невиразні.

Виходить, що чим щільніше один до одного стоять різнокольорові крапки, тим менша відстань потрібна оку, щоб змішувати ці кольори. Звідси висновок: на відміну від трьох окремих світлодіодів, змішання кольорів RGB-світлодіода помітно вже на відстані 30-70 см. До речі, ще краще себе показує RGB-світлодіод з матовою лінзою.

Ардуїно ідеально підходить для керування будь-якими пристроями. Мікропроцесор ATmega за допомогою програми-скетчу маніпулює великою кількістюдискретних висновків, аналогово-цифрових входів/висновків та ШІМ-контролерами.

Завдяки гнучкості коду мікроконтролер ATmega широко використовується в модулях різної автоматики, у тому числі на його основі можна створити контролер управління світлодіодним освітленням.

Принцип управління навантаженням через Ардуїно

Плата Ардуїно має два типи портів виводу: цифровий та аналоговий (ШІМ-контролер). У цифрового порту можливо два стани – логічний нуль та логічна одиниця. Якщо підключити до нього світлодіод він або світитиметься, або не буде.

Аналоговий вихід є ШІМ-контролер, на який подається сигнал частотою близько 500Гц з регульованою шпаруватістю. Що таке ШІМ-контролер та принцип його роботи можна знайти в інтернеті. Через аналоговий порт можливо не тільки вмикати та вимикати навантаження, а й змінювати напругу (струм) на ній.

Синтаксис команд

Цифровий висновок:

pinMode(12, OUTPUT);- задаємо порт 12 портом виведення даних;
digitalWrite(12, HIGH);- Подаємо на дискретний вихід 12 логічну одиницю, запалюючи світлодіод.

Аналоговий висновок:

analogOutPin = 3;– задаємо порт 3 для виведення аналогового значення;
analogWrite(3, значення);– формуємо на виході сигнал із напругою від 0 до 5В. Значення – шпару сигналу від 0 до 255. При значенні 255 максимальна напруга.

Способи керування світлодіодами через Ардуїно

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

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

Види транзисторних ключів

  • Біполярний;
  • Польовий;
  • Складовий (складання Дарлінгтона).
Способи підключення навантаження
Через біполярний транзистор Через польовий транзистор Через комутатор напруги

Під час подання високого логічного рівня (digitalWrite(12, HIGH);)через порт виведення на базу транзистора через ланцюжок колектор-емітер потече опорну напругу на навантаження. Таким чином можна вмикати та вимикати світлодіод.

Аналогічним чином працює і польовий транзистор, але оскільки в нього замість «бази» стік, який керується не струмом, а напругою, обмежувальний резистор у цій схемі є необов'язковим.

Біполярний вигляд не дозволяє регулювати потужні навантаження. Струм через нього обмежений лише на рівні 0,1-0,3А.

Польові транзистори працюють з потужнішими навантаженнями зі струмом до 2А. Для більш потужного навантаження використовують польові транзистори Mosfet зі струмом до 9А і напругою до 60В.

Замість польових можна використовувати збірку Дарлінгтон з біполярних транзисторів на мікросхемах ULN2003, ULN2803.

Мікросхема ULN2003 та принципова схемаелектронного комутатора напруги:

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

Транзистор працює як водопровідний кран лише для електронів. Чим вище напруга, що подається на базу біполярного транзистора або стік польового, тим менше опір в ланцюжку емітер-колектор, тим вище струм, що проходить через навантаження.

Підключивши транзистор до аналогового порту Ардуіно, привласнюємо йому значення від 0 до 255, змінюємо напругу, що подається на колектор або стік від 0 до 5В. Через ланцюжок колектор-емітер проходитиме від 0 до 100% опорної напруги навантаження.

Для керування світлодіодною стрічкою arduino необхідно підібрати транзистор відповідної потужності. Робочий струм для живлення метра світлодіодів 300-500мА, для цього підійде силовий біполярний транзистор. Для більшої довжини знадобиться польовий транзистор.

Схема підключення LED стрічки до ардуїно:

Управління RGB стрічкою за допомогою Andurino

Крім однокристальних світлодіодів, Ардуїно може працювати з кольоровими LED. Підключивши висновки кожного кольору до аналогових виходів Ардуїно, можна довільно змінювати яскравість кожного кристала, домагаючись необхідного кольору свічення.

Схема підключення до Arduino RGB світлодіода:

Аналогічно побудовано та керування RGB стрічкою Arduino:

Ардуїно RGB контролер краще збирати на польових транзисторах.

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

Скетч керування яскравістю світлодіодної стрічки Arduino

int led = 120; встановлюємо середній рівеньяскравості

void setup() (
pinMode(4, OUTPUT); встановлюємо 4й аналоговий порт на виведення
pinMode(2, INPUT);

pinMode(4, INPUT); встановлюємо 2й та 4й цифровий порт на введення для опитування кнопок
}
void loop()(

button1 = digitalRead(2);

button2 = digitalRead(4);
if (button1 == HIGH) натискання на першу кнопку збільшить яскравість
{
led = led + 5;

analogWrite(4, led);
}
if (button2 == HIGH) натискання на другу кнопку зменшить яскравість
{
led = led - 5;

analogWrite(4, led);
}

При утриманні першої або другої кнопки плавно змінюється напруга, що подається на керуючий контакт електронного ключа. Тоді й станеться плавна зміна яскравості.

Модулі керування Ардуїно

Для створення повноцінного драйвера керування світлодіодною стрічкою можна використовувати модулі-датчики.

ІЧ-управління

Модуль дає змогу запрограмувати до 20 команд.

Радіус сигналу близько 8м.

Ціна комплекту 6 у.о.

По радіоканалу

Чотирьохканальний блок з радіусом дії до 100м.

Ціна комплекту 8 у.о.

Дозволяє вмикати освітлення ще при наближенні до квартири.

Безконтактне

Датчик відстані здатний рухати руки збільшувати і зменшувати яскравість освітлення.

Радіус дії до 5м.

Ціна модуля 0,3 у.о.

: червоний, зелений та синій. Одночасно керуючи яскравістю трьох світлодіодів кожного з цих кольорів, можна створити світло практично будь-якого кольору. Світлодіоди, що дозволяють змінювати колір випромінюваного світла, такі як ті, які використовуються в нашому заключному уроці, влаштовані подібним чином, але в їх конструкції три світлодіоди розташовані разом в одному дуже маленькому корпусі. Такий складовий потрійний світлодіод називається RGB LED.

Давайте зробимо власний світлодіод RGB з трьох окремих 5-міліметрових світлодіодів. Ці три світлодіоди мають прозорі незабарвлені лінзи, тому нам потрібні світлодіоди з прозорими, безбарвними лінзами можуть бути будь-якого кольору! Якщо ви використовуєте інший комплект, просто знайдіть один червоний, один зелений і синій світлодіод (з безбарвною або пофарбованою лінзою).

Вимкніть USB-кабель і замініть червоний світлодіод на один із світлодіодів із прозорою лінзою, потім знову підключіть USB-кабель.


Якого кольору світлодіод? Якщо ви виявите червоний з першої спроби, відкладіть його і повторіть процес, щоб визначити колір двох інших світлодіодів.

Підключіть два інших світлодіоди з послідовно увімкненими резисторами на 1K до контактів 10 і 11, як показано на схемі. Завантажте та відкрийте код із модуля Tinkercad Circuits або скопіюйте його та вставте в новий порожній ескіз Arduino. Завантажте його у свою плату Arduino Uno і подивіться, чи можете ви зіставити рядки коду з подіями, які ви бачите на світлодіодах, як це було зроблено раніше.

Незнайомою частиною цього коду є функція setColor(); . Це функція користувача, визначена в коді після функції void loop().

void setColor(int red, int green, int blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}

Визначення функції включає в себе оголошення імені та типу аргументів, які ви можете використовувати як настроювані параметри. Ці параметри можна змінити щоразу під час виконання коду. У цій простій функції три цілі значення записуються в три світлодіодні висновки, використовуючи вже знайому нам функцію
analogWrite(); .
setColor(255, 255, 0); // yellow

Щоразу, коли в основному циклі викликається ця функція, програма виконує код функції перед тим, як продовжити виконання основного циклу. У цьому випадку аргументи використовуються як код рівня яскравості кожного з світлодіодів. Діапазон для встановлення яскравості становить 0-255, тому що для керування кожним кольором використовується один байт, що дозволяє використовувати 256 окремих рівнів яскравості.

Тепер завантажте та відкрийте код із цього більш складного проекту RGB або скопіюйте та вставте код у новий порожній ескіз Arduino. Прочитайте коментарі в коді, щоб дізнатися більше про те, як працює ця програма. Код робить деякі математичні обчислення перетворення діапазону 0-100 в потрібний діапазон, який потрібно світлодіодам (0-255). Це зручно, тому що ви можете думати про яскравість у відсотках замість діапазону 0-255.

Для зберігання інформації про колір код використовує набір змінних, званий

Цей нескладний Arduino проектпризначений для керування за допомогою PWM (широтно-імпульсної модуляції). Вона може змінити рівень кожного кольору незалежно шляхом зміни шпаруватості ШІМ. Таким чином, можна створити будь-який колір шляхом змішування різних кольорів у відсотках. Обертання енкодера на платі дозволяє користувачеві вибрати потрібний канал і змінити його яскравість. Транзистори з малим комутаційним опором створюють дуже низьке тепловиділення навіть з використанням великої кількостісвітлодіодів. Наприклад, IRF540 транзистор має цілком низький прохідний RDS-опір - близько 70 мОм.

Схема контролера стрічок

RGB LED - дуже поширений вид світлодіодних стрічок, який включає червоний, зелений і синій світлодіодний чіп в одному корпусі. Хоча вони в одному корпусі, кожен кристал можна контролювати незалежно. Завдяки цій функції, ми можемо отримати величезну кількість різних кольорів за допомогою RGB світлодіодів і звичайно колір, що вийшов, може бути динамічно змінений за допомогою регулятора.

Основний контролер виконаний із застосуванням Arduino Uno. Він зчитує вхідні дані від енкодера і згідно з цією інформацією відбувається перемикання транзисторів. Транзистори управляються висновками 9, 10 та 11, які мають внутрішні функції ШІМ. Напрямок сигналів енкодера A і B читаються за допомогою елементів 2 та 3, які підключені до модуля. Кнопка енкодера використовується для вибору каналу та підключена до висновку 1, що встановлюють як вхідні дані.

У багатьох додатках, як аматорських, і професійних, іноді буває необхідним генерувати кольори різних відтінків. Використання окремих одноколірних світлодіодів у разі невиправдано конструктивно і економічно. Тому для таких цілей було розроблено RGB-світлодіоди.



RGB-світлодіод (абревіатура означає RED, GREEN, BLUE) є поєднанням кристалів, здатних генерувати червоний, зелений та синій кольори. Завдяки такому поєднанню ці світлодіоди можуть відтворювати 16 мільйонів відтінків світла. Керувати RGB-світлодіодами нескладно, і вони без проблем можуть використовуватись у проектах з Arduino. У цьому матеріалі буде показаний приклад керування RGB-світлодіодом за допомогою Arduino.


Оскільки RGB-світлодіод, як було зазначено вище, є поєднанням кристалів трьох різних базових кольорів, то схемотехнічно він зображується як три світлодіоди. Конструктивно такий світлодіод має один загальний висновокта три висновки для кожного кольору. Нижче показано схему підключення RGB-світлодіода до Arduino. Також на схемі є буквено-числовий РК-дисплей 16×2, потенціометри та послідовно з'єднані з лініями RGB-світлодіода резистори. Ці резистори (R1 = 100 Ом, R2 = 270 Ом, R3 = 330 Ом) обмежують струм світлодіодів, щоб вони не вийшли з ладу. Змінні резистори (потенціометри) VR1-VR3 опором 10 КОм використовуються для керування інтенсивністю свічення RGB-світлодіода, тобто за допомогою них можна задавати колір світлодіода, змінюючи інтенсивність червоного, зеленого та синього кристалів. Потенціометр VR1 з'єднаний з аналоговим входом A0, VR2 з аналоговим входом A1, а VR3 з аналоговим входом A2.



РК-дисплей у цьому випадку використовується для відображення значення кольору та шістнадцяткового значення колірного коду. Значення колірного коду відображається в 1-му рядку РК-дисплея (у вигляді Rxxx Gxxx Bxxx, де xxx є числове значення), а шістнадцятковий код відображається у 2-му рядку РК-дисплея (у вигляді HEXxxxxxx). Резистор R4 опором 100 Ом застосовується для обмеження струму, що прикладається до підсвічування РК-дисплея, а регулювання контрастності РК-дисплея використовується змінний резистор VR4 опором 10 КОМ.


Нижче наведено код (скетч), що дозволяє керувати зміною кольору RGB-світлодіода за допомогою плати Arduino та підключеними до неї потенціометрами.


#include // бібліотека для РК-дисплея LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // Лінії Arduino для підключення РК-дисплея int Radj; int Gadj; int Badj; int Rval = 0; int Gval=0; int Bval = 0; int R = 9; int G = 10; int B = 11; void setup() ( pinMode(R, OUTPUT); // Лінія 9 спрямована на вихід pinMode(G, OUTPUT); // Лінія 10 спрямована на вихід pinMode(B, OUTPUT); // Лінія 11 спрямована на вихід lcd.begin (16,2); // Ініціалізація дисплея delay(1); lcd.setCursor(0,0); lcd.print("RGB COLOUR"); lcd.setCursor(4,1); lcd.print("GENERATOR" ); delay(2000); lcd.setCursor(0, 0); lcd.print(" R G B "); lcd.setCursor(3,1); Radj = analogRead(0), Gadj = analogRead(1), Badj = analogRead(2), Rval=Radj/4; // Convert the range from (0-1023) to (0-255) Bval=Badj/4; // Convert the range from (0-1023) to (0-255) lcd.setCursor(2,0); (Rval<10) { lcd.setCursor(2,0); lcd.print("00"); lcd.print(Rval); } else if(Rval<100) { lcd.setCursor(2,0); lcd.print("0"); lcd.print(Rval); } else { lcd.setCursor(2,0); lcd.print(Rval); } lcd.setCursor(8,1); if (Rval<16) { lcd.print("0"); lcd.print(Rval, 16); } else { lcd.print(Rval, 16); } lcd.setCursor(7,0); if (Gval<10) { lcd.setCursor(7,0); lcd.print("00"); lcd.print(Gval); } else if(Gval<100) { lcd.setCursor(7,0); lcd.print("0"); lcd.print(Gval); } else { lcd.setCursor(7,0); lcd.print(Gval); } lcd.setCursor(10,1); if (Gval<16) { lcd.print("0"); lcd.print(Gval, 16); } else { lcd.print(Gval, 16); } lcd.setCursor(12,0); if (Bval<10) { lcd.setCursor(12,0); lcd.print("00"); lcd.print(Bval); } else if(Bval<100) { lcd.setCursor(12,0); lcd.print("0"); lcd.print(Bval); } else { lcd.setCursor(12,0); lcd.print(Bval); } lcd.setCursor(12,1); if (Bval<16) { lcd.print("0"); lcd.print(Bval, 16); } else { lcd.print(Bval, 16); } analogWrite(R, Rval); // ШИМ-выход для красного цвета analogWrite(G, Gval); // ШИМ-выход для зеленого цвета analogWrite(B, Bval); // ШИМ-выход для синего цвета }
Поділіться з друзями або збережіть для себе:

Завантаження...