Электронный компонент:RGB-светодиод

Материал из ВикиСправочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1745 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Азы электроники: Как работает RGB-светодиод[1]

RGB-светодиод может сгенерировать практически любой нужный вам цвет. «Как? – спросите вы. – Ведь это всего один светодиод!» Попробую объяснить.

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

Хитрость в том, что RGB-светодиод состоит из 3 разных светодиодов: красного, зеленого и синего, и генерация всех остальных цветов осуществляется за счет смешения этих трех базовых цветов. RGB-светодиод выглядит следующим образом:

Rgb-led 1.jpg

Два типа RGB-светодиодов

Есть RGB-светодиоды с общим анодом и RGB-светодиоды с общим катодом. Подробнее смотрите на рисунке ниже:

Rgb-led-common-pin.jpg

Как видите, оба типа имеют 4 контакта: 3 для каждого светодиода (зеленого, красного и синего) и 1 общий катод/анод.

Впрочем, самый популярный тип – это RGB-светодиод с общим анодом.

Как создавать разные цвета?

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

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

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

Поскольку светодиоды находятся очень близко друг к другу, в результате вы увидите именно скомбинированный цвет, а не три отдельных цвета.

Чтобы понимать, как происходит смешение цветов, взгляните на рисунок ниже. Это очень простая схема, но в интернете можно найти и посложнее.

Color-mixing.png

Контакты RGB-светодиода

RGB-светодиоды имеют 4 контакта, которые можно определить по их длине. Самый длинный – это «земля» (-) или напряжение (+), что зависит от типа RGB-светодиода, т.е. является ли он RGB-светодиодом с общим анодом или общим катодом.

Три других контакта соответствуют красному, зеленому и синему светодиодам (см. картинку ниже):

Rgb-led-pins.jpg

Проект: Управление RGB-светодиодом с помощью Arduino

В этом проекте мы воспользуемся тремя потенциометрами для управления каждым контактом RGB-светодиода, что позволит создавать практически любой цвет.

Example – Control an RGB LED with the Arduino 2.jpg

Необходимые компоненты

  • Одна плата Arduino
  • Один RGB-светодиод с общим анодом
  • Три потенциометра на 1 кОм
  • Одна макетная плата
  • Три резистора на 220 Ом
  • Провода-перемычки
Example – Control an RGB LED with the Arduino 3.jpg

Схема

Подключите эти компоненты друг к другу согласно схеме ниже:

Example – Control an RGB LED with the Arduino rgb-led potentiometer.png

Важно! Если вы используете RGB-светодиод с общим катодом, то длинный контакт нужно подключить к GND.

Код

Загрузите на Arduino вот этот скетч:

  1. /*
  2.  
  3.  Более подробно о проекте на:
  4.  http://randomnerdtutorials.com/
  5.  
  6. */
  7.  
  8. int redPin = 3;     // контакт для красного светодиода -> D3
  9. int greenPin = 5;   // контакт для зеленого светодиода -> D5
  10. int bluePin = 6;    // контакт для синего светодиода -> D6
  11.  
  12. int potRed = A0;    // между потенциометром и красным контактом -> A0
  13. int potGreen = A1;  // между потенциометром и зеленым контактом -> A1
  14. int potBlue = A2;   // между потенциометром и синим контактом -> A2
  15.  
  16. void setup() {
  17.   pinMode(redPin,OUTPUT);
  18.   pinMode(bluePin,OUTPUT);
  19.   pinMode(greenPin, OUTPUT);
  20.  
  21.   pinMode(potRed, INPUT);
  22.   pinMode(potGreen, INPUT);
  23.   pinMode(potBlue, INPUT);
  24. }
  25.  
  26. void loop() {
  27.   // считывает позицию потенциометра и конвертирует ее в значение
  28.   // между «0» и «255», чтобы управлять RGB-светодиодом через ШИМ;
  29.   // для RGB-светодиода с общим анодом:
  30.   analogWrite(redPin,(255./1023.)*analogRead(potRed));
  31.   analogWrite(greenPin,(255./1023.)*analogRead(potGreen));
  32.   analogWrite(bluePin,(255./1023.)*analogRead(potBlue));
  33.  
  34.   // уберите знаки комментария, если используете
  35.   // RGB-светодиод с общим катодом:
  36.   /*
  37.   analogWrite(redPin,255-(255./1023.)*analogRead(potRed));
  38.   analogWrite(greenPin,255-(255./1023.)*analogRead(potGreen));
  39.   analogWrite(bluePin,255-(255./1023.)*analogRead(potBlue));
  40.   */
  41.  
  42.   delay(10);
  43. }

Важно! Если используете RGB-светодиод с общим катодом, обратите внимание на блок loop(). Вам нужно будет убрать знаки комментария у одного фрагмента и добавить их в другой фрагмент кода. Подробнее читайте в комментариях в скетче.

Демонстрация

Небольшое видео, показывающее проект в действии:

[Видео]

См.также

Внешние ссылки

  1. randomnerdtutorials.com - Electronics Basics – How do RGB LEDs work?