به نام خدا
آموزش پروژه محور آردوینو – جلسه سوم
در این جلسه میخواهیم یک ال ای دی RGB را توسط برد آردوینو راه اندازی کنیم . RGB مخفف سه کلمه RED ، GREEN و BLUE میباشد .
در این پروژه آردوینو از تابع analogWrite برای کنترل رنگ ال ای دی RGB استفاده خواهیم کرد .
در واقع ال ای دی RGB از سه ال ای دی قرمز و سبز و آبی تشکیل شده است که ما میتوانیم با تغییر میزان شدت روشنایی هر یک از این سه رنگ توسط پین های PWM برد آردوینو به صورت جداگانه ، به رنگ های جالبی برسیم .
قطعات مورد نیاز برای پروژه :
توضیحات مدار :
ال ای دی RGB چهار پایه دارد . یک پایه مشترک است که به زمین وصل میشود و سه پایه دیگر که هر کدام مربوط به سه رنگ قرمز و سبز و آبی میباشد به ولتاژ مثبت وصل میشود .
پایه مشترک ال ای دی RGB پایه دوم از سمت تخت ال ای دی میباشد . این پایه بلندترین پایه بین ۴ پایه این ال ای دی است . البته توسط تست دیود مولتی متر نیز میتوان آن را پیدا کرد . این پایه مشترک به زمین وصل میشود .
هر کدام از سه پایه دیگر را با یک مقاومت ۲۷۰ اهم همان طور که در شکل زیر نشان داده شده به پین های آردوینو وصل میکنیم .
با تغییر شدت هر کدام از این سه رنگ میتوان به رنگ های مختلفی مثل بنفش ، قهوه ای کم رنگ و پرنگ و هر رنگ دیگه ای که وجود داره برسید . دقیقا از همین سیستم برای تولید رنگ در نمایشگر های رنگی استفاده میشود . این کنترل شدت روشنایی برای سه رنگ توسط خطوط برنامه انجام میشود .
توضیحات برنامه :
برای دانلود کد های برنامه بر روی لینک زیر کلیک کنید .
دانلود فایلاین برنامه با سه خط زیر شروع میشود که هر کدام از این خط ها یک پین آردوینو را به یکی از سه رنگ نسبت میدهد .
int redPin = 11; int greenPin = 10; int bluePin = 9;
گام بعدی نوشتن تابع setup است . همانطور که در جلسه های قبل آموزش آردوینو گفتیم ، این تابع با روشن شدن برد آردوینو فقط یک بار اجرا میشود . همان طور که در زیر میبینید ما پین های ۹ و ۱۰ و ۱۱ آردوینو را که به سه رنگ نام گذاری کرده بودیم به عنوان خروجی تعریف کرده ایم .
void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); }
قبل از این که تابع حلقه ( loop ) را بررسی کنیم اجازه دهید آخرین تابع برنامه را توضیح دهیم .
void setColor(int red, int green, int blue) { analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); }
این تابع دارای ۳ آرگومان برای میزان روشنایی ۳ رنگ قرمز و سبز و آبی است . هر کدام از این آرگومان ها میتوانند عددی بین ۰ تا ۲۵۵ داشته باشند که صفر به معنی خاموش و ۲۵۵ به معنای حداکثر روشنایی میباشد . این عدد را توسط تابع analogWrite به ال ای دی ها میدهیم . این تابع در واقع یک موجع pwm است که با افزایش عدد آن پهنای پالس افزایش میابد .
همانطور که در خطوط برنامه زیر میبینید ما توسط تابع تابع loop میزان روشنایی سه رنگ را تغییر میدهیم . به عنوان مثال در خط اول این تابع که عدد ۲۵۵ به قرمز نسبت داده شده و به دو رنگ دیگر ۰ نسبت داده شده در عمل ما رنگ قرمز را خواهیم دید یا در خط هفتم به دو رنگ قرمز و سبز عدد ۲۵۵ را نسبت داده ایم و به رنگ آبی عدد صفر را داده ایم که نتیجه آن در عمل رنگ زرد میباشد . شما میتوانید به جای این اعداد هر عددی بین ۰ تا ۲۵۵ بگذارید مثلا تابع را به صورت setcolor(190 , 46 , 21) قرار دهید و نتیجه را ببینید . همان طور که در خطوط زیر میبینید بعد از هر تغییر ، یک تاخیر ۱۰۰۰ میلی ثانیه ای ایجاد کرده ایم این کار به این منظور است که شما تغییر رنگ را واضح ببینید ، اگر این تاخیر نباشد آنقدر تغییر رنگ سریع صورت میگیرد که شما نمیتوانید رنگ ها را از هم تفکیک کنید . برای درک بهتر حرف من میتونید تاخیر ها را بردارید و برنامه را بر روی برد آپلود کنید .
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(0x4B, 0x0, 0x82); // indigo
تئوری PWM :
مدولاسیون پهنای پالس یا همان PWM یک تکنیک برای کنترل توان میباشد . که ما پروژه امروز خود برای کنترل توان ال ای دی های قرمز و سبز و آبی استفاده کردیم و توانستیم روشنایی ال ای دی ها را کنترل کنیم .
توسط پین های PWM آردوینو میتوانیم این کار را انجام دهیم .
در نمودار اول که پهنای پالس ما در کل دوره ۵ درصد است و ولتاژ ۵ ولت را قطع و وصل کرده ایم یعنی ۵ درصد ولتاژ ۵ ولت را در اختیار قرار داده ایم این یعنی ۰٫۲۵ ولت .
در نمودار دوم که پهنای پالس ما در کل دوره ۵۰ درصد است و ولتاژ ۵ ولت را قطع و وصل کرده ایم یعنی ۵۰ درصد ولتاژ ۵ ولت را در اختیار قرار داده ایم این یعنی ۲٫۵۰ ولت .
در نمودار سوم که پهنای پالس ما در کل دوره ۹۰ درصد است و ولتاژ ۵ ولت را قطع و وصل کرده ایم یعنی ۹۰ درصد ولتاژ ۵ ولت را در اختیار قرار داده ایم این یعنی ۴٫۵۰ ولت .
عمل تولید موج PWM و کنترل پهنای پالس آن در آردوینو توسط تابع analogWrite انجام میشود .
دیدگاهها (0)