Проект 11: RGB светодиод

Описание

RGB светодиод (Red Green Blue Light Emitting Diode) — это светодиод, который может излучать свет в трёх основных цветах: красном, зелёном и синем, а также создавать различные другие цвета за счёт комбинации этих трёх цветов.

В этом проекте мы используем RGB светодиод для достижения цветовых изменений и градиентных эффектов с помощью программирования Arduino.

Аппаратное обеспечение

1. Плата разработки UNO R3 (ch340) x1

2. RGB светодиод x1

3. Резистор 220 Ом x3

4. Макетная плата x1

5. Соединительные провода

Принцип работы

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

RGB светодиоды содержат три внутренних светодиода (красный, зелёный и синий), которые можно комбинировать для получения практически любого цвета. Чтобы получить разные цвета, нужно регулировать интенсивность каждого внутреннего светодиода и комбинировать три цветовых сигнала. В этом проекте мы будем использовать ШИМ для индивидуальной регулировки яркости красного, зелёного и синего светодиодов. Особенность в том, что наши глаза воспринимают смесь цветов, а не отдельные цвета, так как светодиоды находятся очень близко друг к другу внутри корпуса.

Типы и структура RGB светодиодов

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

RGB-LEDs-Pinout

Если посмотреть на RGB светодиод, то у него будет четыре вывода. Если расположить светодиод так, чтобы самый длинный вывод был вторым слева, то выводы будут располагаться в следующем порядке: красный, анод или катод, зелёный и синий.

RGB светодиод с общим анодом

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

Common-Anode-RGB-LED-Pinout

RGB светодиод с общим катодом

В RGB светодиоде с общим катодом катоды внутренних светодиодов соединены с внешним катодным выводом. Для управления каждым цветом нужно подавать HIGH сигнал или VCC на выводы красного, зелёного и синего, а катодный вывод подключать к отрицательному полюсу источника питания.Common-Cathode-RGB-LED-Pinout

Технические характеристики

Низкое тепловое сопротивление

Отсутствие ультрафиолетового излучения

Очень высокая световая отдача и высокая яркость

Прямой ток для красного, синего и зелёного цвета: 20 мА

Прямое напряжение

Красный: 2 В (типичное)

Синий: 3.2 В (типичное)

Зелёный: 3.2 В (типичное)

Световая интенсивность

Красный: 800 мкд

Синий: 4000 мкд

Зелёный: 900 мкд

Длина волны

Красный: 625 нм

Синий: 520 нм

Зелёный: 467.5 нм

Рабочая температура: от -25 ℃ до 85 ℃

Температура хранения: от -30 ℃ до 85 ℃

Схема подключения

Подключите вывод R RGB светодиода к цифровому пину D9 на плате

Подключите вывод G RGB светодиода к цифровому пину D10 на плате

Подключите вывод B RGB светодиода к цифровому пину D11 на плате

Подключите вывод GND RGB светодиода к GND на плате

Img

Пример кода

/*

Electronics Learning Starter Kit for Arduino

Project 11

RGB LED

Edit By Keyes

*/

int redPin = 9; // red pin

int greenPin = 10; // green pin

int bluePin = 11; // blue pin

void setup() {

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);

}

void loop() {

// red gradient

for (int i = 0; i <= 255; i++) {

analogWrite(redPin, i);

delay(10);

}

for (int i = 255; i >= 0; i--) {

analogWrite(redPin, i);

delay(10);

}

// green gradient

for (int i = 0; i <= 255; i++) {

analogWrite(greenPin, i);

delay(10);

}

for (int i = 255; i >= 0; i--) {

analogWrite(greenPin, i);

delay(10);

}

// blue gradient

for (int i = 0; i <= 255; i++) {

analogWrite(bluePin, i);

delay(10);

}

for (int i = 255; i >= 0; i--) {

analogWrite(bluePin, i);

delay(10);

}

}

Объяснение кода

В коде определены три целочисленные переменные redPin, greenPin и bluePin, которым присвоены значения 9, 10 и 11 соответственно. Эти номера соответствуют пинам на плате Arduino, к которым подключён RGB светодиод. Эти пины будут настроены в режиме вывода для отправки аналоговых сигналов и управления яркостью светодиодов.

int redPin = 9; // Pin connected to the red LED

int greenPin = 10; // Pin connected to the green LED

int bluePin = 11; // Pin connected to the blue LED

В функции setup() используется функция pinMode() для установки каждого цветового пина в режим вывода (OUTPUT). Это необходимо, так как по умолчанию пины Arduino настроены на ввод.

void setup() {

pinMode(redPin, OUTPUT);

pinMode(greenPin, OUTPUT);

pinMode(bluePin, OUTPUT);

}

Функция loop() содержит основную логику управления градиентом цвета RGB светодиода. Используются три отдельных цикла for для управления яркостью красного, зелёного и синего светодиодов соответственно. Каждый цикл сначала постепенно увеличивает яркость от 0 до 255, а затем постепенно уменьшает обратно до 0. Этот процесс создаёт эффект плавного появления и исчезновения света от полностью выключенного до максимальной яркости и обратно. Функция analogWrite() используется для установки значения ШИМ (широтно-импульсной модуляции) на конкретном пине, что регулирует яркость светодиода.

void loop() {

// Red fade

for (int i = 0; i <= 255; i++) {

analogWrite(redPin, i);

delay(10);

}

for (int i = 255; i >= 0; i--) {

analogWrite(redPin, i);

delay(10);

}

// Green fade

for (int i = 0; i <= 255; i++) {

analogWrite(greenPin, i);

delay(10);

}

for (int i = 255; i >= 0; i--) {

analogWrite(greenPin, i);

delay(10);

}

// Blue fade

for (int i = 0; i <= 255; i++) {

analogWrite(bluePin, i);

delay(10);

}

for (int i = 255; i >= 0; i--) {

analogWrite(bluePin, i);

delay(10);

}

}

Результат проекта

После загрузки кода на плату разработки RGB светодиод будет отображать градиентный эффект красного, зелёного и синего цветов по очереди.

P11

Яркость каждого цвета будет постепенно увеличиваться от 0 до 255, а затем постепенно уменьшаться до 0.