در این پروژه از آردوینو برای کنترل رنگ LED RGB با استفاده می کنیم. در اینجا چرخه وظیفه سیگنال PWM تولید شده توسط آردوینو وظیفه شبیه سازی مقاومت برای تغییر رنگ RGB LED را دارد.
RGB LED
دو نوع RGB LED وجود دارد:
- ال ای دی آند مشترک
- ال ای دی کاتدی مشترک
هر دو از نظر عملکردی یکسان هستند و هر دو LED RGB دارای سه فلامنت LED داخلی هستند و نور متناظر را هنگام دریافت سیگنال تولید میکنند.
قرمز، سبز و آبی رنگ های اصلی نامیده می شوند و با ترکیب شدن با شدت های مختلف با یکدیگر تا 16 میلیون رنگ به تولید می شود.
در این پروژه میخواهیم از RGB LED آند مشترک استفاده کنیم که تقریباً همه از پیکربندیهای پین یکسانی پیروی میکنند، اگر در مورد پینها شک دارید از منبع تغذیه 2.0 ولت تا 2.5 ولت استفاده کنید و هر پایهها را خودتان بررسی کنید تا پینهای RGB LED خود را شناسایی کنید کنید.
پایه های LED
این ال ای دی شامل چهار پایه است که اولی ترمینال کاتدی LED داخلی قرمز و پین 2 آند مشترک برای همه LED های داخلی و پین 3 کاتد سبز است و در نهایت پین 4 پین کاتدی آبی است.
پین آند مشترک RGB LED را به پایه +5V برد آردوینو وصل کنید و پایانه های قرمز، سبز و آبی را به پین های دیجیتال آردوینو D9، D10 و D11 و سپس مقاومت 220Ω وصل کنید. سه مقاومت متغیر پایه اول را به +5 ولت و پایه سوم را به GND برد آردوینو وصل کنید. پایه های دوم مقاومت های متغیر را به طور جداگانه در اینجا A0 برای قرمز، A1 برای سبز و A2 برای مقادیر رنگ آبی به A0، A1 و A2 وصل کنید.
شماتیک ها
همه کامپوننت ها را وصل کرده و کد آردوینو زیر را آپلود کنید.
// Name the Pins used for PWM output to RGB LED
const int redPin = 9;
const int greenPin = 10;
const int bluePin = 11;
// Name the Pins used for 100K pots (You can use different value)
const int redPotPin = 0;
const int greenPotPin = 1;
const int bluePotPin = 2;
// Init our Vars
int currentColorValueRed;
int currentColorValueGreen;
int currentColorValueBlue;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
}
void loop()
{
// Read the voltage on each analog pin then scale down to 0-255 and inverting the value for common anode
currentColorValueRed = (255 - map( analogRead(redPotPin), 0, 1024, 0, 255 ) );
currentColorValueBlue = (255 - map( analogRead(bluePotPin), 0, 1024, 0, 255 ) );
currentColorValueGreen = (255 - map( analogRead(greenPotPin), 0, 1024, 0, 255 ) );
// Write the color to each pin using PWM and the value gathered above
analogWrite(redPin, currentColorValueRed);
analogWrite(bluePin, currentColorValueBlue);
analogWrite(greenPin, currentColorValueGreen);
}
پس از آپلود کد روی برد آردوینو، اکنون مقادیر Resistor را تغییر دهید تا خروجی رنگ متفاوت از RGB LED را مشاهده کنید.