Как подключить rgb светодиод к arduino
Перейти к содержимому

Как подключить rgb светодиод к arduino

  • автор:

RGB-светодиод

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

У RGB-светодиода четыре ножки. Одна из них (самая длинная) — общий катод или анод, который находится вторым слева. Если вы вдруг будете возмущаться, что у вас бракованный светодиод, у которого самая длинная ножка является третьей, то я могу удалённо починить его (бесплатно). Возьмите светодиод в руки, закройте глаза и медленно поверните его. Откройте глаза — самая длинная ножка стала второй. Магия!

RGB-светодиод

К каждой ножке, которая отвечает за цвет, нужно подключать резисторы, как и для обычных светодиодов (подойдут на 220 Ом). Подключение общей ножки зависит от модели. Если светодиод с общим анодом, то подключайте к питанию, если с общим катодом — то к заземлению. При неправильном подключении светодиод просто не будет светиться.

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

04.Communication: ReadASCIIString

В Arduino IDE есть пример File | Examples | 04.Communication | ReadASCIIString, использующий RGB-светодиод. Мы можем вводить нужные значения цвета в Serial Monitor и светодиод начнёт светиться заданным цветом.

Подключаем компоненты как на рисунке. Первую ножку подключаем к третьему выводу, вторую ножку к пятому выводу, а третью ножку к шестому выводу. Общую ножку подключаем к питанию 5В. Если вы не обратили внимания, то напомню, что нужно использовать выводы с символом тильды (~), чтобы плавно менять напряжение.

RGB-светодиод

 // выводы 3, 5 и 6 const int redPin = 3; const int greenPin = 5; const int bluePin = 6; void setup() < Serial.begin(9600); // режим вывода pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); >void loop() < while (Serial.available() >0) < // ищем правильные числовые значения из входящего потока int red = Serial.parseInt(); // делаем это снова int green = Serial.parseInt(); // и ещё раз int blue = Serial.parseInt(); // ищем символ новой строки (конец данных) if (Serial.read() == '\n') < // ограничиваем значения в пределах 0 - 255 и инвертируем // если используется общий катод, то применяйте "constrain(color, 0, 255);" red = 255 - constrain(red, 0, 255); green = 255 - constrain(green, 0, 255); blue = 255 - constrain(blue, 0, 255); // применяем значения к каждому цвету: analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); // выводим введённые значения в виде шестнадцатеричного числа Serial.print(red, HEX); Serial.print(green, HEX); Serial.println(blue, HEX); >> > 

Запускаем скетч, открываем окно Serial Monitor и вводим три числа через запятую. Каждое число должно находиться в пределах от 0 до 255. Например, чтобы получить чистый красный цвет, нужно ввести 255,0,0. Вместо запятой можно вводить любые нечисловые символы, но зачем?

Белый цвет — это 255,255,255. Тогда по идее чёрный — это 0,0,0. Но на самом деле вы не получите чёрный цвет, а просто выключите светодиод.

RGB-модуль KY-009 с SMD-светодиодом и с общим катодом

Бывают RGB-светодиоды в виде модуля с четырьмя выводами в формате SMD. Как и у обычного светодиода, три вывода отвечают за цвет, а один общий вывод является общим катодом. Поэтому провод присоединяем к земле, а не к питанию.

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

 red = constrain(red, 0, 255); green = constrain(green, 0, 255); blue = constrain(blue, 0, 255); 

Упрощённый скетч с включением разных цветов.

 int redPin = 11; int greenPin = 10; int bluePin = 9; int val; void setup() < pinMode(redPin, OUTPUT); pinMode(bluePin, OUTPUT); pinMode(greenPin, OUTPUT); Serial.begin(9600); >void loop() < for (val = 255; val >0; val--) < analogWrite(redPin, val); //set PWM value for red analogWrite(greenPin, 128 - val); //set PWM value for green analogWrite(bluePin, 255 - val); //set PWM value for blue Serial.println(val); //print current value delay(1); >for (val = 0; val < 255; val++) < analogWrite(redPin, val); analogWrite(greenPin, 128 - val); analogWrite(bluePin, 255 - val); Serial.println(val); delay(1); >> 

RGB-модуль с SMD-светодиодом 5050

Аналогичный модуль как и KY-009. Подключение и пример остаются без изменений.

Каждый цвет управляется отдельно. На плате уже размещены токоограничивающие резисторы.

SMD 5050

RGB-модуль KY-016 с общим катодом

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

KY-016

 KY-016 | Arduino ---------------- R | 11 G | 10 B | 9 GND | GND 

Все предыдущие примеры применимы к данному модулю.

KY-016 — Модуль RGB светодиода 5 мм. Подключение к Arduino.

Светодиоды широко используются в проектах на Arduino. Сегодня рассмотрим модуль KY-016, которой оснащен RGB светодиодам 5 мм. В отличие от модуля «KY-009 RGB светодиода (SMD)», данный модуль оснащен резисторами и его можно подключать напрямую к Arduino, без дополнительной обвязки. Схема подключения и код аналогичные с модулем KY-009.

Описание модуля KY-016 — rgb led Arduino.

Описание модуля KY-016 - rgb led Arduino.

KY-016rgb led Arduino полноцветный 5-миллиметровый светодиод RGB, разные цвета и оттенки могут быть получены путем смешивания трех основных цветов.

Технические характеристики rgb модуля Arduino.

Технические характеристики rgb модуля Arduino.

Этот rgb модуль Arduino состоит из 5- миллиметрового RGB-светодиода и трех токоограничивающих резисторов на 150 Ом, для предотвращения перегорания. Регулировка сигнала ШИМ на каждом пине модуля приведет к изменению цвета светодиода.

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

Схема подключения rgb Arduino KY-016.

Подключение rgb светодиода к Arduino следующим оброзом: красный контакт (R) на KY-016 к контакту 9 на Arduino. Синий (B) к контакту 11, зеленый (G) к контакту 10 и земля (-) к GND. Обратите внимание, что вам не нужно использовать ограничивающие резисторы, поскольку они уже установлены на плату.

Схема подключения rgb Arduino KY-016.

Контакты:

На эти контакты подается питание положительной полярности:

Схема подключения KY-016 к Arduino UNO.

Схема подключения KY-016 к Arduino UNO.

Схема подключения KY-016 к Arduino NANO.

Схема подключения KY-016 к Arduino NANO.

Arduino rgb скетч.

Следующий пример Arduino rgb скетч будет циклически переключаться между различными цветами, изменяя значение ШИМ для каждого из трех основных цветов.

int redpin = 9; //pin red LED int bluepin =10; //pin blue LED int greenpin = 11;//pin green LED int val; void setup() < pinMode(redpin, OUTPUT); pinMode(bluepin, OUTPUT); pinMode(greenpin, OUTPUT); Serial.begin(9600); >void loop() < for(val = 255; val >0; val--) < analogWrite(redpin, val); //PWM red analogWrite(bluepin, 255 - val); //PWM blue analogWrite(greenpin, 128 - val); //PWM green Serial.println(val); //print delay(5); >for(val = 0; val < 255; val++) < analogWrite(redpin, val); analogWrite(bluepin, 255 - val); analogWrite(greenpin, 128 - val); Serial.println(val); delay(5); >>

Второй вариант кода позволяет плавно изменять цвет из одного оттенка к другому и так по кругу .

#define R_PIN 9 //pin red LED #define G_PIN 10 //pin blue LED #define B_PIN 11 //pin green LED void setup() < pinMode(R_PIN, OUTPUT); pinMode(G_PIN, OUTPUT); pinMode(B_PIN, OUTPUT); >void loop() < // плавно проходимся по всем цветам static int counter = 0; counter += 10; colorWheel(counter); delay(100); if (counter >1530) counter = 0; > // включает цвет по цветовому колесу, принимает 0-1530 void colorWheel(int color) < byte _r, _g, _b; if (color else if (color > 255 && color else if (color > 510 && color else if (color > 765 && color else if (color > 1020 && color else if (color > 1275 && color analogWrite(R_PIN, 255 - _r); analogWrite(G_PIN, 255 - _g); analogWrite(B_PIN, 255 - _b); >

Код не оптимальный, но для понимания этого достаточно. Кроме этого, для облегчения работы с RGB светодиодами также есть библиотеки, например: RGBLed Arduino library.

Использование библиотеки RGBLed Arduino library для работы с модулем KY-016.

Скачать библиотеку RGBLed можно на github или внизу статьи, в разделе «файлы для скачивания»

Заходим в Arduino IDE и выбираем в меню: «Скетч –> Подключить библиотеку –> Добавить .ZIP библиотеку…»

Заходим в Arduino IDE и выбираем в меню

Выбираем скаченный архив RGBLed-master .zip и нажимаем кнопку «Открыть». После установки вы увидите надпись, что библиотека успешно добавлена.

Использование библиотеки RGBLed Arduino library для работы с модулем KY-016.

Для начала работы с библиотекой RGBLed ее нужно подключить.

#include

Затем создать объект для подключения, указав пины подключения светодиода к Arduino.

RGBLed led(RED_PIN, GREEN_PIN, BLUE_PIN, RGBLed::COMMON_ANODE or RGBLed::COMMON_CATHODE);

В дальнейшем мы можем, в основном цикле loop(), оперировать цветом светодиода, для этого в библиотеке есть функции:

led.setColor(RGBLed::RED); // или led.setColor(255, 0, 0);
  • Выключить свет
led.off();
  • Установить яркость
led.brightness(RGBLed::RED, 50); // 50% brightness // или led.brightness(255, 0, 0, 50); // 50% brightness

Для того чтобы загорелся красный светодиод на 100 мс, достаточно в коде добавить строчку:

led.flash(RGBLed::RED, 100); // Interval 100ms // или led.flash(255, 0, 0, 100); // Interval 100ms

Также в библиотеки есть палитра цветов.

RED GREEN BLUE MAGENTA CYAN YELLOW WHITE

С библиотекой идут примеры использования. Например Вспышка:

#include RGBLed led(9, 10, 11, RGBLed::COMMON_CATHODE); void setup() < >void loop() < // Flash red color, interval 100ms led.flash(RGBLed::RED, 100); // Flash green color, interval 100ms led.flash(0, 255, 0, 100); // Flash red color, during 250ms with interval 100ms led.flash(RGBLed::RED, 250, 100); // Flash green color, during 250ms with interval 100ms led.flash(0, 255, 0, 250, 100); >

Как видим из кода, у нас будем c , про которую есть у меня на сайт отдельный урок: Полицейская мигалка своими руками из светодиодов на Arduino

мигать светодиод красным и синим цветами, на подобии полицейской мигалки

Вывод

Модуль KY-016 показал себя как достаточно простой в использовании, и применить его можно в различных проектах на Arduino. И главный плюс, по сравнению с модуля KY-009, — это распаянные резисторы.

Понравился Урок KY-016 — Модуль RGB светодиода 5 мм. Подключение к Arduino ? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Arduino и RGB светодиод

RGB светодиод – три светодиода с цветами Red (красный), Green (зелёный) и Blue (синий), размещённые в общем корпусе. Более подробную теорию можно найти в уроке про RGB светодиоды.

Подключение

“Голый” RGB светодиод подключается к источнику 5V точно так же, как обычный светодиод: с ограничением тока при помощи резисторов, иначе довольно быстро сгорит. Но в наборе GyverKIT идёт удобный RGB модуль, на котором резисторы уже распаяны, а сам светодиод имеет общий катод:

Соответственно достаточно подключить GND к пину “-“, а пины RGB – к любым цифровым пинам микроконтроллера.

  • При подключении к обычным цифровым пинам мы получим всего 8 цветов – чёрный (все выключены), белый (все включены) и 6 сочетаний между тремя цветами
  • При подключении к ШИМ пниам у нас появится возможность контролировать яркость каждого канала цвета, что при стандартных настройках даёт 256 градаций яркости и 256*256*256 = 16.7 миллионов оттенков для RGB светодиода!
  • Подключение к Wemos будет точно такое же, но там ШИМ сигнал можно включить на любом пине, причём с глубиной 10 бит (1024 значения), что даёт 1 миллиард оттенков! Это так много, что глазами различить не получится =)
    • У Wemos логический уровень 3.3V, поэтому светодиод будет гореть менее ярко, т.к. будет потреблять меньший ток. В то же время допустимый ток с пина Wemos ниже, чем у Arduino, поэтому всё работает “как нужно”!

    Библиотеки

    По сути библиотеки не нужны, так как светодиодом можно управлять при помощи базовых функций вывода. Но для удобства работы с разными цветовыми моделями удобнее использовать уже готовые алгоритмы, например мою библиотеку GRGB. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GRBG. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

    Примеры ручного управления

    Для удобства управления обозначим пины, подключение например как по схеме выше:

    #define R_PIN 6 #define G_PIN 5 #define B_PIN 3

    В блоке setup() сделаем пины выходами:

    pinMode(R_PIN, OUTPUT); pinMode(G_PIN, OUTPUT); pinMode(B_PIN, OUTPUT);

    Готово! Теперь можно включить любой нужный цвет. Объединим всё в одну программу и будем включать цвета на полную яркость поочерёдно:

    #define R_PIN 6 #define G_PIN 5 #define B_PIN 3 void setup() < pinMode(R_PIN, OUTPUT); pinMode(G_PIN, OUTPUT); pinMode(B_PIN, OUTPUT); >void loop()

    Примеры с GRGB

    Для удобства задания цветов попробуем поработать с библиотекой:

    Пространство RGB

    Пример простого переключения основных цветов

    #define R_PIN 6 #define G_PIN 5 #define B_PIN 3 #include GRGB led(COMMON_CATHODE, R_PIN, G_PIN, B_PIN); void setup() < >void loop() < led.setRGB(255, 0, 0); // установить красный delay(1000); led.setRGB(0, 255, 0); // установить зелёный delay(1000); led.setRGB(0, 0, 255); // установить синий delay(1000); >

    Цветовое колесо

    В этом примере плавно меняются все цвета при помощи функции “цветового колеса”

    #define R_PIN 6 #define G_PIN 5 #define B_PIN 3 #include GRGB led(COMMON_CATHODE, R_PIN, G_PIN, B_PIN); void setup() < >void loop() < static byte count = 0; // переменная "счётчик" led.setWheel8(count); // ставим значение колеса (0-255) count++; // за счёт использования типа byte переменная будет меняться от 0 до 255 delay(50); // задержка для плавности >

    Домашнее задание

    • Изучить возможности библиотеки GRGB
    • Попробовать другие цветовые режимы

    Связанные уроки

    • Обычные светодиоды
    • RGB светодиоды
    • ШИМ сигнал

    RGB светодиод. Урок 8. Ардуино

    RGB светодиоды

    Привет! Мы много раз работали с обычными светодиодами, подключали их к Ардуино и программировали разные скетчи для управления. Но сегодня поговорим про особенный RGB светодиод.

    В общем случае, RGB светодиод — это три простых цветных светодиода размещенных в общем корпусе.

    В предыдущих уроках мы рассматривали подключение нескольких светодиодов и управление ими с помощью кнопок. На этот раз мы подключим к Ардуино RGB светодиод и будем им управлять. Так что, посмотрите предыдущие уроки, если вы пропустили их или уже забыли.

    Разумеется, не забудем также и о подавлении дребезга кнопок.

    Для того, чтобы выполнить этот урок нам понадобиться

    • Ардуино UNO
    • Макетная плата
    • Перемычки
    • 4 Резистора номиналом 220 Ом
    • RGB Светодиод
    • Кнопка
    • Кабель USB

    Как и в предыдущем уроке, мы будем переключать режим светодиода кнопкой. Но, на этот раз, будем использовать один светодиод вместо 4 и добавим несколько новых режимов. Использую RGB светодиод мы можем смешивать цвета в разных пропорциях, а в результате получать другие цвета и оттенки.

    Разные RGB светодиоды

    RGB Светодиоды

    Существует несколько разновидностей RGB светодиодов:

    • элементы с общим катодом, которые управляются положительными сигналами, подаваемыми на аноды чипов. Такие элементы маркируются буквами CA;
    • с общим анодом. Команды на изменение режима работы идут на катоды элементов. Маркировка CC;
    • собственной парой контактов для каждого кристалла (6 выводов).

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

    Принципиальная схема подключения RGB светодиода

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

    Программа и режимы

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

    void setMode(int mode)< if (mode == 1)< // только красный digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); >else if (mode == 2)< // только зеленый digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, LOW); >else if (mode == 3) < // только синий digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); >> 

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

    Вы можете и сами дописать любые режимы для светодиода и даже использовать возможности ШИМ пинов Ардуино, чтобы плавно изменять цвета.

    Полный текст программы

    const int buttonPin=2; boolean lastButtonState = LOW; boolean buttonState = LOW; int RLED = 9; int GLED = 10; int BLED = 11; int ledMode = 0; void setup() < Serial.begin(9600); pinMode (buttonPin , INPUT); pinMode(RLED, OUTPUT); pinMode(GLED, OUTPUT); pinMode(BLED, OUTPUT); >void setMode(int mode)< if (mode == 1)< digitalWrite(RLED, HIGH); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); >else if (mode == 2)< digitalWrite(RLED, LOW); digitalWrite(GLED, HIGH); digitalWrite(BLED, LOW); >else if (mode == 3)< digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, HIGH); >else if (mode == 4)< analogWrite(RLED, 127); analogWrite(GLED, 0); analogWrite(BLED, 127); >else if (mode == 5)< analogWrite(RLED, 0); analogWrite(GLED, 127); analogWrite(BLED, 127); >else if (mode == 6)< analogWrite(RLED, 127); analogWrite(GLED, 127); analogWrite(BLED, 0); >else if (mode == 7)< analogWrite(RLED, 85); analogWrite(GLED, 85); analogWrite(BLED, 85); >else < digitalWrite(RLED, LOW); digitalWrite(GLED, LOW); digitalWrite(BLED, LOW); >> boolean debounce(boolean last) < boolean current = digitalRead(buttonPin ); if (last != current)< delay(3); current = digitalRead(buttonPin ); return current; >> void loop() < buttonState = debounce(lastButtonState); if (lastButtonState == LOW && buttonState == HIGH)< ledMode++; if (ledMode == 8)< ledMode = 0; >setMode( ledMode ); > lastButtonState = buttonState; >

    Заключение

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

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

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