آردوینوالکترونیکپروژه آردوینو

راه اندازی ال ای دی rgb با آردوینو

مقدمه

همراه ما باشید با آموزش راه اندازی ال ای دی rgb با آردوینو. ال ای دی LED RGB یکی از ابزارهای پر کاربرد در نورپردازی و علم کنترل نوراست. و راه اندازی ال ای دی LED RGB یکی از چالش های این حوزه است. در این آموزش می خواهیم کنترل سه نور قرمز،سبز و آبی را توسط برد آردوینو به شما عزیزان آموزش بدیم. با ما همراه باشید.

راه اندازی ال ای دی rgb با آردوینو
راه اندازی ال ای دی rgb با آردوینو

در دید اول یک LED RGB ممکن است شبیه یک LED معمولی به نظر برسد. با این وجود LED RGB خود از سه LED داخلی با سه رنگ قرمز (RED) سبز (GREEN) و آبی (BLUE) تشکیل شده است. با کنترل روشنایی هر کدام از LED ها می توانید ترکیبی زیبا از تمامی رنگ ها را داشته باشید.


برای خرید ال ای دی RGB کلیک کنید


ترکیب رنگ های این LED ها مانند ترکیب رنگ ها برای کشیدن یک نقاشی یا ترکیب صدا ها برای یک آهنگ می باشد. برای این کار یک راه سخت تر نیز وجود دارد که استفاده از مقادیر مختلف مقاومت هاست که البته کار سختی است. اما به لطف وجود آردوینو دیگر نیازی به این کار نیست.

آردوینو دارای تابع analogWrite می باشد که به شما این اجازه را می دهد که از خروجی هایی که با علامت ~   مشخص شده اند، مقادیر مختلفی ولتاژ تحویل بگیرید. در این درس برای کنترل LED توسط آردوینو، از تابع analogWrite  استفاده خواهیم کرد.

قطعات مورد نیاز برای راه اندازی ال ای دی rgb با آردوینو

نام قطعهتعدادتصویر قطعه
برد آردوینو Uno R3 ۱ آردوینو uno r3
برد بورد ۱برد برد کوچک
LED RGB۱led rgb
مقاومت ۲۷۰ اهم۳مقاومت
سیم جامپرسیم جامپر
لوازم مورد نیاز پروژه راه اندازی LED RGB با آردوینو

شماتیک مدار راه اندازی ال ای دی LED RGB با برد آردوینو

LED RGB دارای چهار پایه است. همانطور که در شکل زیر می بینید، سه عدد از این پایه ها به صورت جداگانه به قطب مثبت هر LED متصل شده اند و یک پایه نیز به طور مشترک به تمامی قطب های منفی LED ها متصل گردیده است.

آرایش پایه های led rgb
پروژه راه اندازی LED RGB با آردوینو. آرایش پایه های LED RGB

دو راه برای شناختن پایه منفی مشترک LED ها وجود دارد. این پایه مشترک، دومین پایه از سمت تخت LED بوده و همچنین بلند ترین پایه بین آنها نیز می باشد.

هر  LED داخلی به تنهایی به یک مقاومت ۲۷۰ اهمی نیاز دارد. یعنی در مجموع به ۳ عدد مقاومت ۲۷۰ اهمی نیاز است تا از ورود جریان زیاد به آن ها جلوگیری نمایند. این سه پایه LED هر کدام با یک مقاومت جداگانه به آردوینو متصل می شوند.

دقت کنید اگر شما از LED های آند مشترک به جای کاتد مشترک استفاده می کنید ، شما بایستی بلند ترین پایه LED که همان پایه مشترک است را به جای اتصال به زمین، به ۵ ولت متصل نمایید.

راه اندازی ال ای دی rgb با آردوینو. قسمت یک نصب مقاومت ها و ولتاژ
راه اندازی ال ای دی rgb با آردوینو. قسمت یک نصب مقاومت ها و ولتاژ

رنگ ها

تمام رنگ های طبیعت را می توان از ترکیب سه رنگ قرمز ، آبی و سبز به وجود آورد. به همین صورت چشم انسان نیز دارای سه گیرنده برای این سه رنگ می باشد. چشم انسان ، مقادیر قرمز ، سبز و آبی هر نوری را که چشم دریافت می کند را توسط مغز پردازش کرده و آن به طیف نوری قابل درک برای انسان ، تبدیل می کند.

LED  RGBنیز از همین قانون استفاده می کند تا با ترکیب این سه رنگ، رنگ های متفاوتی درست کند. از این ایده هم اکنون در نمایشگر های تلویزیون نیز استفاده می شود که هر پیکسل از آن از سه LED با رنگ های سه گانه تشکیل شده است.

راه اندازی ال ای دی rgb با آردوینو. قسمت دوم رنگ ها
راه اندازی ال ای دی rgb با آردوینو. قسمت دوم رنگ ها

در راه اندازی ال ای دی rgb با آردوینو اگر میزان روشنایی تمام LED های سه گانه را به بالاترین میزان تنظیم کنیم، آنگاه رنگ کلی LED به رنگ سفید تبدیل می شود. اگر روشنایی رنگ آبی را به صفر برسانیم و میزان روشنایی قرمز و سبز به بالاترین مقدار باقی بماند، آنگاه رنگ زرد در آن مشاهده خواهد شد.

کنترل هر یک از این LED ها به صورت جداگانه می باشد . ما می توانیم هر رنگی را با ترکیب این مقادیر سه گانه ، بدست آوریم.

رنگ مشکی در اصل در اثر نبود روشنایی به وجود می آید.  بنابر این نزدیک ترین رنگی که نزدیک به رنگ مشکی می توانیم تشکیل دهیم به این صورت است که روشنایی همه LED ها را به صفر برسانیم.

کد برنامه در راه اندازی ال ای دی rgb با آردوینو

در این برنامه می خواهیم رنگ های قرمز، سبز ، آبی ، زرد ، بنفش و آبی آسمانی توسط RGB LED نمایش دهیم.

int redPin = 11 ;
int greenPin = 10;
int bluePin = 10;
//uncomment this line if using a Common Anode LED
//#define COMMON_ANODE
void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT); 
}
void loop()
{
  setColor(255, 0, 0);  // red
  delay(1000);
  setColor(0, 255, 0);  // green
  delay(1000);
  setColor(0, 0, 255);  // blue
  delay(1000);
  setColor(255, 255, 0);  // yellow
  delay(1000); 
  setColor(80, 0, 80);  // purple
  delay(1000);
  setColor(0, 255, 255);  // aqua
  delay(1000);
}
void setColor(int red, int green, int blue)
{
  #ifdef COMMON_ANODE
    red = 255 - red;
    green = 255 - green;
    blue = 255 - blue;
  #endif
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue); 
}

یکبار به متن کد نوشته شده و توضیحات آن یک نگاه بیاندازید. پس از آن  به شرح برنامه می پردازیم.

int redPin = 11;
int greenPin = 10;
int bluePin = 9;

در ابتدا با مشخص کردن پایه های مورد نیاز خود و نامگذاری آن ها کار خود را شروع می کنیم. ما به سه پایه جهت کنترل LED RGB نیاز داریم که هر کدام مختص یک رنگ می باشد.

void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT); 

مرحله بعدی اجرای تابع راه اندازی (Setup) می باشد. همانطور که در درس های قبل آموختیم، تابع راه اندازی پس از شروع دوباره یا ریست آردوینو، فقط یک بار اجرا می شود. در این جا بایستی خروجی بودن هرکدام از سه پایه متصل به LED را مشخص کنیم.

void setColor(int red, int green, int blue)
{
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue); 
}

قبل از اینکه به تابع حلقه اصلی برسیم یک تابع دیگر را نیز بایستی به کد ها اضافه نماییم.

void loop()
{
  setColor(255, 0, 0);  // red
  delay(1000);
  setColor(0, 255, 0);  // green
  delay(1000);
  setColor(0, 0, 255);  // blue
  delay(1000);
  setColor(255, 255, 0);// yellow
  delay(1000); 
  setColor(80, 0, 80);  // purple
  delay(1000);
  setColor(0, 255, 255);// aqua
  delay(1000);
}

تعریف تابع

در تابع اول متغیرها را که همان رنگ های ما هستند را توسط تابع setColor معرفی می کنیم. در هر مورد عدد مورد نظر ما برای تنظیم روشنایی هر LED بایستی بین اعداد ۰ تا ۲۵۵ باشد که درآن ۰ به معنی خاموش بودن و ۲۵۵ به معنای روشنایی حداکثر آن LED می باشد. سپس با استفاده از تابع حلقه analogWrite که شرح آن در زیر آمده است، به هر پایه مشخص شده مقدار روشنایی مورد نظر را اختصاص می دهیم. همانطور که در تابع حلقه زیر می بینید ، به ازای هر رنگ متفاوت، ما مقادیری از روشنایی را به هر LED داده ایم تا از ترکیب آن رنگ ها، رنگ دلخواه ما را تشکیل شود. به طور مثال برای تشکیل رنگ قرمز کافیست که فقط روشنایی LED قرمز به میزان دلخواه افزایش دهیم و دو LED دیگر را خاموش نماییم.

به همین ترتیب سعی کنید در پروژه راه اندازی LED RGB با آردوینو چند ترکیب رنگ دیگر را تشکیل دهید و آنها را متناسب با رنگ حاصله شان نامگذاری نمایید.

دقت کنید اگر شما از LED آند مشترک استفاده می کنید، بایستی مقادیر LED را از عدد ۲۵۵ کم کنید و آن را در تابع analogWrite قرار دهید.

استفاده از رنگ های اینترنتی

اگر شما تا بحال برنامه نویسی اینترنتی انجام داده باشید ، احتمالا آشنا هستید که رنگ ها را با مقادیری با مبنای شانزده بیان می کنند. به طور مثال رنگ قرمز را با عدد #FF0000  نشان می دهند.

شما می توانید عدد مربوط به هر رنگ را در جداولی خاص مانند جدول زیر مشاهده نمایید:

http://www.devguru.com/features/colors

این شش شماره در اصل سه جفت شماره هستند که به ترتیب از سمت چپ بیانگر رنگ های قرمز ، سبز و آبی می باشند. رنگ قرمز برابر عدد FF0000 میباشد به این علت که دو عدد اول که بیانگر رنگ قرمز هستند دارای مقدار ماکسیمم اند (FF در مبنای شانزده برابر ۲۵۶ در مبنای ده می باشد) و مقادیر سبز و آبی آن نیز صفر است. با استفاده از این رنگ بندی شما می توانید هر رنگی را که دوست دارید را از جدول رنگ دهی که در بالا گفته شد را بیابید و توسط آردوینو خود آن را به LED های RGB انتقال دهید.

در این رنگ مقدار رنگ های قرمز ، سبز و آبی به ترتیب برابر است با (مبنای شانزده) ۴B و ۰۰ و ۸۲ . می توانیم این اعداد را توسط تابع ‘setColor’ به LED RGB خود به شکل زیر منتقل کنیم.

setColor(0x4B, 0x0, 0x82); 

همانطور که می بینید در اینجا ما همان اعداد مبنای شانزده را با گزاشتن ‘0x’ در ابتدای آنها به تابع وارد کردیم.

به همین روش سعی کنید تا رنگ های مختلفی را به حلقه اصلی مدار اضافه کنید. فقط فراموش نکنید  که بعد از هر رنگ ، تاخیری برای تغییر رنگ به دستوراتتان اضافه کنید.

موج (PWM)


مدلاسیون پهنای پالس (یا PWM) یک روش برای کنترل توان خروجی می باشد. ما می خواهیم از این تکنیک در اینجا برای پروژه راه اندازی LED RGB با آردوینو کنترل روشنایی هر یک از LED ها استفاده کنیم.


موج PWM یا مدولاسیون پهنای باند چیست؟


دیاگرام شکل زیر یک شکل موج PWM تولیدی توسط یکی از پایه های PWM  آردوینو را نشان می دهد.

دیاگرام شکل موج PWM
دیاگرام شکل موج PWM

تقریبا در هر  1/500ثانیه که معادل ۲۰ میلی ثانیه می شود، خروجی PWM یک پالس تولید می کند. طول این پالس توسط تابع ‘analogWrite’ کنترل می شود. بنابر این دستور ”analogWrite(0)’ هیچ موجی تولید نمی کند و دستور ‘analogWrite(255)’ موجی با پهنای باندی حداکثر تولید می کند که طول آن تا موج بعدی ادامه خواهد داشته و خروجی در مدت زمان این پالس، دارای ماکسیمم توان می باشد.

اگر ما مقادیری در دستور ‘analogWrite’ وارد کنیم که بین ۰ تا ۲۵۵ باشد، موجی به همین نسبت شکل می گیرد. به این صورت که اگر فرضا طول موج ما ۵% از زمان کل دوره پالس باشد، آنگاه خروجی فقط توانی برابر ۵% توان کل را دریافت می کند.

اگر چنانچه خروجی به اندازه ۹۰% با توان ۵ ولت باشد ، آنگاه LED ما تنها ۹۰% از انرژی تحویلی به آنرا دریافت خواهد کرد و مابقی زمان را تا پایان زمان طول موج به صورت خاموش خواهد بود. چشم انسان این خاموش و روشن شدن سریع LED را قادر نیست تشخیص دهد. بنابراین به نظر می رسد که روشنایی LED تغییر می کند.

کارهای دیگری که می توانید انجام دهید:


سعی کنید یک توپ پینگ پنگ بر روی LED قرار دهید.
سعی کنید سرعت تغییر رنگ ها را با افزایش و یا کاهش تاخیر انجام دهید.

با استفاده از پتانسیومتر یا ولوم کنترل هرLED  را به صورت دستی انجام دهید.

کلام اخر

همانطور که در ابتدا نیز گفتیم علم نورپردازی علمی بسیار جذاب می باشد که حد و مرزی ندارد.شما می توانید با استفاده از خلاقیت خود پروژه های جدیدی را انجام دهید.در این مقاله سعی شد تا مبانی پایه این علم جذاب را با برد آردوینو به شما عزیزان آموزش دهیم.امیدواریم این آموزش مورد توجه شما عزیزان قرار گرفته باشد.

نمایش بیشتر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا