رباتیک و هوافضا

آموزش پروژه محور آردوینو – جلسه سوم

جلسه های آموزش پروژه محور آردوینو

به نام خدا

آموزش پروژه محور آردوینو – جلسه سوم

در این جلسه میخواهیم یک ال ای دی RGB را توسط برد آردوینو راه اندازی کنیم . RGB مخفف سه کلمه RED ، GREEN و BLUE میباشد .

در این پروژه آردوینو از تابع analogWrite برای کنترل رنگ ال ای دی RGB استفاده خواهیم کرد .

 

arduino_project_3_on_breadboard

 

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

قطعات مورد نیاز برای پروژه :

 

rgb_10mm

 

R-270_web

 

breadboard 2

 

learn_arduino_uno_r3_web

 

learn_arduino_jumpers

 

توضیحات مدار :

ال ای دی RGB چهار پایه دارد . یک پایه مشترک است که به زمین وصل میشود و سه پایه دیگر که هر کدام مربوط به سه رنگ قرمز و سبز و آبی میباشد به ولتاژ مثبت وصل میشود .

 

led

 

پایه مشترک ال ای دی RGB پایه دوم از سمت تخت ال ای دی میباشد . این پایه بلندترین پایه بین ۴ پایه این ال ای دی است . البته توسط تست دیود مولتی متر نیز میتوان آن را پیدا کرد . این پایه مشترک به زمین وصل میشود .

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

 

learn_arduino_ circuit

 

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

 

rgb_color

 

توضیحات برنامه :

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

دانلود فایل

این برنامه با سه خط زیر شروع میشود که هر کدام از این خط ها یک پین آردوینو را به یکی از سه رنگ نسبت میدهد .

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

گام بعدی نوشتن تابع setup است . همانطور که در جلسه های قبل آموزش آردوینو گفتیم ، این تابع با روشن شدن برد آردوینو فقط یک بار اجرا میشود . همان طور که در زیر میبینید ما پین های ۹ و ۱۰ و ۱۱ آردوینو را که به سه رنگ نام گذاری کرده بودیم به عنوان خروجی تعریف کرده ایم .

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

قبل از این که تابع حلقه ( loop ) را بررسی کنیم اجازه دهید آخرین تابع برنامه را توضیح دهیم .

بیشتر بخوانید...  انکودر چرخشی با میکروکنترلر ATmega8

 

    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 آردوینو میتوانیم این کار را انجام دهیم .

 

learn_arduino_pwm_works

 

در نمودار اول که پهنای پالس ما در کل دوره ۵ درصد است و ولتاژ ۵ ولت را قطع و وصل کرده ایم یعنی ۵ درصد ولتاژ ۵ ولت را در اختیار قرار داده ایم این یعنی ۰٫۲۵ ولت .

در نمودار دوم که پهنای پالس ما در کل دوره ۵۰ درصد است و ولتاژ ۵ ولت را قطع و وصل کرده ایم یعنی ۵۰ درصد ولتاژ ۵ ولت را در اختیار قرار داده ایم این یعنی ۲٫۵۰ ولت .

در نمودار سوم که پهنای پالس ما در کل دوره ۹۰ درصد است و ولتاژ ۵ ولت را قطع و وصل کرده ایم یعنی ۹۰ درصد ولتاژ ۵ ولت را در اختیار قرار داده ایم این یعنی ۴٫۵۰ ولت .

عمل تولید موج PWM و کنترل پهنای پالس آن در آردوینو توسط تابع analogWrite انجام میشود .

 

دیدگاه‌ها (0)

*
*