8 (800) 350-30-16

Управляем RGB светодиодной лентой с помощью arduino

Дата: / Категория: Arduino / Автор: marsel

Как подключить RGB светодиодную ленту к arduino?

Начнем с того, что у Arduino есть пины, поддерживающие широтно-импульсную модуляцию (ШИМ), что дает нам возможность использовать плавную регулировку яркости. Проблема лишь в том, что выдаваемый ток способен зажечь разве что отдельно взятый светодиод, но никак не 5 метров ленты, работающей к тому-же от 12 вольт.

Для того, чтобы согласовать такую нагрузку и Arduino, используем распространенный драйвер двигателя L298N, он вполне справится с такой нагрузкой, как 5 метров светодиодной ленты, поддерживает ШИМ а главное имеет 4 канала (из которых мы используем 3), под разные цветовые каналы RGB (красный, зеленый синий).

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

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

//подключение драйвера L298N 

#define LED_R 11 // Pin D11 --> красный
#define LED_G 10 // Pin D10 --> зеленый
#define LED_B 9 // Pin D9 --> синий

int red();
int green();
int blue();

void setup () {

pinMode( LED_R, OUTPUT );
pinMode( LED_G, OUTPUT );
pinMode( LED_B, OUTPUT );
analogWrite (LED_R,255);
analogWrite (LED_G,255);
analogWrite (LED_B,255);

}

void loop () {
//-------------------------------------------------------------------------------------------//
// //
// Это основной цикл нашей программы!!! //
// //
//-------------------------------------------------------------------------------------------//

//-------------зажигаем и гасим красный
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
red(i);
if (i == 255) x = -1; // переключение в сторону гашения на максимуме
delay(5);
}
}
//-------------зажигаем и гасим зеленый
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
green(i);
if (i == 255) x = -1; // переключение в сторону гашения на максимуме
delay(5);
}
}
//-------------зажигаем и гасим синий
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
blue(i);
if (i == 255) x = -1; // переключение в сторону гашения на максимуме
delay(5);
}
}

//-------------подмигиваеи каждым цветом по три раза
red(0);
delay(100);
red(80);
delay(100);
red(0);
delay(100);
red(160);
delay(100);
red(0);
delay(100);
red(255);
delay(100);
red(0);
delay(100);
green(80);
delay(100);
green(0);
delay(100);
green(160);
delay(100);
green(0);
delay(100);
green(255);
delay(100);
green(0);
delay(100);
blue(80);
delay(100);
blue(0);
delay(100);
blue(160);
delay(100);
blue(0);
delay(100);
blue(255);
delay(100);
blue(0);
//-------------мигаем случайными цветами со случайной яркостью
for (int i=0; i <= 50; i++){
int color=(random(3)+1);
if (color=1) {red(random(256)); delay(100);red(0);}
if (color=2) {green(random(256)); delay(100);green(0);}
if (color=3) {blue(random(256)); delay(100);blue(0);}
}


//-------------------------------------------------------------------------------------------//
// //
// Завершаем наш основной цикл !!! //
// //
//-------------------------------------------------------------------------------------------//

}

//***************************************************
void red(int s){
analogWrite (LED_R,255-s);
}
//***************************************************
void green(int s){
analogWrite (LED_G,255-s);
}
//***************************************************
void blue(int s){
analogWrite (LED_B,255-s);
}

Видео версия статьи:

Теги: #Arduino, #l298N, #RGB LED

Ваша оценка:

Рейтинг: 10.0 (Оценок: 3)

Комментарий:

Copyright © RobOM.ru 2016 г. Все права защищены