RGB светодиод

Ардуино: трехцветный светодиод — RGB

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

RGB — это аббревиатура, которая расшифровывается как: Red — красный, Green — зеленый, Blue — синий. То есть внутри этого устройства размещается сразу три отдельных светодиода. В зависимости от типа, RGB-светодиод может иметь общий катод или общий анод.

RGB-светодиоды встречаются в разных исполнениях: выводные с разным диаметром линзы, SMD разных размеров. Наиболее популярны в DIY-среде светодиоды с линзой 5мм (см. фото) и SMD светодиоды типоразмера 5050.

RGB-светодиод

Для удобства использования, мы в RobotClass сделали модуль в форм-факторе 23×23 мм, на котором установлен RGB-светодиод с матовой линзой диаметром 10 мм.

На плате уже есть токозадающие резисторы для каждого компонента, так что их не нужно будет подключать самому. Для подключения к контроллеру предусмотрен 4-контактный разъём.

Модуль RGB-светодиода RobotClass

Смешение цветов

Чем RGB-светодиод, лучше трех обычных? Всё дело в свойстве нашего зрения смешивать свет от разных источников, размещенных близко друг к другу. Например, если мы поставим рядом синий и красный светодиоды, то на расстоянии несколько метров их свечение сольется, и глаз увидит одну фиолетовую точку. А если добавим еще и зеленый, то точка покажется нам белой. Именно так работают мониторы компьютеров, телевизоры и уличные экраны.

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

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

Список необходимых компонентов

Для выполнения всех примеров из этого урока потребуется контроллер Arduino Uno или любой его аналог, выводной RGB-светодиод или модуль, резисторы, макетная плата и немного проводов вилка-вилка.

Необходимые компоненты можно добавить в корзину прямо здесь, и затем оформить заказ в нашем интернет-магазине.

В корзину
В корзину
В корзину
В корзину
В корзину
В корзину

Изменено:

Ардуино: трехцветный светодиод — RGB: 8 комментариев

  1. Не знаю, как на предыдущих версиях Arduino IDE, но на моей (1.8.5) скетч плавного изменения яркости не заработал — отладчик дюже ругался на (переменную?) dim. Немного пошукав по сети, добавил сразу после строчки [const byte rgbPins[3] = {6,5,3}; (изменил порядок под свою раскладку цветов)] такую строчку: [int dim = 1;] — всё заработало! Здесь число dim меняет шаг
    дискретности уровня свечения. Чем меньше число, тем меньше шаг и
    плавнее изменение яркости.

  2. Довольно прикольно. Интересно, а на этот RGB светодиод на каждый выход(цвет) добавить три потенциометра и через них регулировать свечение цвета и яркость?

    • Разумеется можно. Три потенциометра подключаются к трем аналоговым входам контроллера. Программа берет с них значения, и пропорционально передает их на три контакта RGB светодиода.

  3. скетч рабочий и компактный .Я применил задержку — 50,так мне кажется лучше. Уно- китайская.

  4. убрал переменную dim , работает так же вот код : const byte rgbPins[3] = {3,5,6};

    void setup() {
    for(byte i=0; i=0; i—){
    analogWrite( rgbPins[0], i );
    analogWrite( rgbPins[1], (255-i) );
    delay(10);
    }
    // гасим зеленый, параллельно разжигаем синий
    for(int i=255; i>=0; i—){
    analogWrite( rgbPins[1], i );
    analogWrite( rgbPins[2], (255-i));
    delay(10);
    }
    // гасим синий, параллельно разжигаем красный
    for(int i=255; i>=0; i—){
    analogWrite( rgbPins[2], i);
    analogWrite( rgbPins[0], (255-i) );
    delay(10);
    }

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.