Рубрики
Схемы на Arduino

Подключение нескольких трехцветных светодиодов к Arduino Uno

В этой статье мы рассмотрим подключение 5 трехцветных светодиодов RGB (Red Green Blue) к плате Arduino Uno. Эти светодиоды будут соединены в параллель для того чтобы уменьшить число используемых контактов. Более упрощенный пример работы Arduino с трехцветным светодиодом можно прочитать в этой статье.

Принципы работы трехцветных светодиодов

Внешний вид трехцветного светодиода показан на следующем рисунке:

Трехцветный светодиод имеет 4 контакта как показано на рисунке ниже:

  • контакт 1: цвет 1 отрицательный вывод при общем аноде или цвет 1 положительный вывод при общем катоде;
  • контакт 2: общий положительный вывод для всех трех цветов при общем аноде или общий отрицательный вывод для всех трех цветов при общем катоде;
  • контакт 3: цвет 2 отрицательный вывод или цвет 2 положительный вывод;
  • контакт 4: цвет 3 отрицательный вывод или цвет 3 положительный вывод.

Таким образом, есть 2 типа трехцветных светодиодов – с общим катодом (ОК) и с общим анодом (ОА). При общем катоде (общий отрицательный вывод) мы имеем три положительных вывода, где каждый вывод отвечает за свой цвет, и один общий отрицательный вывод. Внутренняя схема подключений трехцветного светодиода с общим катодом показана на следующем рисунке:

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

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

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

В нашем примере мы будем использовать трехцветные светодиоды с общим анодом. В обычном режиме для подключения 5 трехцветных светодиодов к плате Arduino нам бы понадобилось 5×4= 20 контактов, но мы уменьшим количество используемых контактов до 8 при помощи соединения трехцветных светодиодов в параллель и использовании технологии мультиплексирования.

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

Плата Arduino Uno
Трехцветный светодиод с общим анодом (ОА) – 5 шт.
Резистор 1 кОм – 3 шт.

Работа схемы

Схема устройства представлена на следующем рисунке.

Предположим, к примеру, что нам в представленной схеме необходимо включить красный светодиод в SET1 (наборе 1) и зеленый светодиод в SET2. Для этого будет необходимо подать напряжение питания на PIN8 и PIN9 платы Arduino Uno, и землю на PIN7 и PIN6.

Но при этом включатся еще зеленый светодиод в SET1 и красный светодиод в SET2. Аналогичная ситуация будет наблюдаться и при попытке включить светодиоды в других наборах (светодиодов).

Чтобы устранить эту проблему мы будем включать только один набор (SET, светодиод) в один момент времени. Например, в момент времени t=0 сек мы будем включать SET1. А в момент времени t=1 мсек мы SET1 будем выключать, а SET2 включать. Продолжая аналогично будем иметь что в t=6 мсек SET5 мы будем выключать, а SET1 будем включать. И так по кругу.

Поскольку человеческий глаз не может различить частоту мигания более 30 Гц, то нам необходимо будет переключать светодиоды с частотой 30 Гц или более. В этом случае человеческий глаз будет видеть что светодиод постоянно горит. Но на самом деле это не так – светодиоды будут постоянно включаться и выключаться. Эта технология и называется мультиплексированием.

Проще говоря, мы будем запитывать каждый общий катод 5 наборов (SET) на 1 миллисекунду. В этом случае по прошествии 5 миллисекунд мы будем иметь полный цикл, после чего снова происходит переключение к SET1. И так будет продолжаться снова и снова. Поскольку светодиоды будут включаться и выключаться достаточно часто, то человеческий глаз будет видеть их постоянно горящими.

То есть когда мы запитываем SET1 в момент времени t=0 мс, мы подаем землю на общий контакт красных светодиодов. В момент времени t=1 мс мы подаем питание на SET2 и землю на общий контакт зеленых светодиодов (в это время на общие контакты красных и синих светодиодов должен быть подан высокий уровень). Поскольку все это происходит достаточно часто для человеческого глаза, то глаз видит постоянного горящими красный светодиод в первом наборе (трехцветном светодиоде) и зеленый светодиод во втором наборе (трехцветном светодиоде).

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

Исходный код программы

Текст программы снабжен необходимыми пояснения для лучшего понимания ее работы.

void setup()
{
for (int i=0;i<11;i++) // сначала все 11 контактов устанавливаем в режим вывода данных
{
pinMode(i, OUTPUT);
}
for (int i=3;i<8;i++)
{
digitalWrite(i, LOW); // на контакты 3-8 подаем сигнал низкого уровня
}
}

// цикл, в котором мы будем зажигать светодиоды
void loop()
{
for (int i=3;i<8;i++)
{
digitalWrite(i,HIGH); // подаем питание на каждый трехцветный светодиод в каждый момент времени
for (int j=8;j<11;j++)
{
digitalWrite(j,LOW);
delay(100);
digitalWrite(j,HIGH); // мигаем тремя цветами каждого трехцветного светодиода
}
digitalWrite(i,LOW); // подаем низкий уровень на каждый трехцветный светодиод когда помигали цветами
}
}

Видео, демонстрирующее работу схемы

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

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