Управление RGB лентой через ULN2003 и Arduino
Схема подключения RGB ленты к Arduino через ULN2003
Для подключения светодиодной ленты RGB к Arduino будем использовать сборку Дарлингтона ULN2003 в качестве схемы управления. Светодиодная лента работает от напряжения 12 В.
//=========================================================================
// Управление RGB лентой
//
//=========================================================================
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin = 7; // порт кнопки
const int BLUEledPin = 11; // LED pin
const int REDledPin = 10; // LED pin
const int GREENledPin = 9; // LED pin
// variables will change:
int buttonState = 0; // переменная для хранения статуса кнопки
int color=0;
//=========================================================================
// SETUP
//=========================================================================
void setup() {
// Задем порты для цветов ленты:
pinMode(BLUEledPin, OUTPUT);
pinMode(REDledPin, OUTPUT);
pinMode(GREENledPin, OUTPUT);
// поределеяем порт для кнопки
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH); //Активируем прерывание для кнопки
}
//=========================================================================
//
//=========================================================================
void loop(){
// read the state of the pushbutton value:
buttonState = digitalRead(buttonPin);
// провереяем нажата ли кнопка
// if it is, the buttonState is HIGH:
if (buttonState == LOW) {
delay(300);
color++;
if(color>10)
{color=0;}
}
//Устанавливаем значения цветов для ленты, см. Цветовые коды для HTML
switch (color)
{
case 0:
SetColor(255,0,0);
break;
case 1:
SetColor(255,255,0);
break;
case 2:
SetColor(0,0,255);
break;
case 3:
SetColor(128,128,20);
break;
case 4:
SetColor(0,255,255);
break;
case 5:
SetColor(55,100,100);
break;
case 6:
SetColor(0x00,0xA8,0xA9);
break;
case 7:
SetColor(0xCC,0x66,0x66);
break;
case 8:
SetColor(0x12,0xA2,0x7E);
break;
case 9:
SetColor(0xF0,0x80,0x32);
break;
case 10:
SetColor(0x30,0xFF,0xFF);
break;
}
}
//=========================================================================
// функция для установки цвета светодиода на ленте
//=========================================================================
void SetColor(char R,char G,char B)
{
analogWrite(REDledPin,R);
analogWrite(GREENledPin,G);
analogWrite(BLUEledPin,B);
}