آموزش آردوینو جلسه هفتم
در جلسات گذشته راه اندازی نمایشگر را با آردوینو آموختیم. اما گاهی اوقات برای نمایش چندین حالت، مقرون به صرفه نیست که از نمایشگر استفاده کنیم. از این روی از LED ها استفاده میکنیم. یکی از این LED ها ال ای دی RGB است.
RGB مخفف Red – Green – Blue به معنای سه رنگ اصلی قرمز، سبز و آبی است. به وسیله این سه رنگ میتوان تمام رنگ ها را به وجود آورد.

یکی از راه های نمایش وضعیت دما، یک سنسور، یک پوتانسیومتر و… چراغ های LED است؛ این چراغ ها قیمت بسیار ارزانی دارند. این قطعات با عنوان دیود نورانی نیز شناخته میشوند. نوعی از دیود های نورانی، ال ای دی های RGB است. این ال ای دی ها دارای سه رنگ اصلی قرمز، سبز و آبی هستند که بدین معناست که میتوان به وسیله آنها تمامی رنگ ها را به وجود آورد…
ال ای دی های RGB معمولی دارای چهار پایه هستند و به دو نوع آند مشترک و کاتد مشترک دسته بندی میشوند. این LED ها از سه ال ای دی تشکیل شده اند که یکی از پایه های آنها با یکدیگر مشترک شده است که اصطلاحا به آن پایه com میگویند.
در زیر دو نوع LED کاتد مشترک و آند مشترک را مشاهده میکنید:
اتصالات
راه اندازی این LED ها مانند ال ای دی های معمولی است؛ با این تفاوت که در در اینجا سه ال ای دی وجود دارد. در تصویر زیر اتصالات و مدار را مشاهده میکنید.
نکته: در این جلسه ما از آردوینو مگا استفاده میکنیم و تفاوتی در بورد شما وجود ندارد!
سورس کد
ابتدا کد آردوینو را از آخر همین صفحه دانلود و بر روی آردوینو خود آپلود کنید؛ همچنین برای مشاهده کد به صورت آنلاین بر روی جدول زیر کلیک کنید:
#define RED 2
#define GREEN 3
#define BLUE 4
#define LED_TYPE "C"
void setup() {
Serial.begin(9600);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
}
void loop() {
rgb(1, 0, 0);
Serial.println("Red color");
delay(1000);
rgb(0, 1, 0);
Serial.println("Green color");
delay(1000);
rgb(0, 0, 1);
Serial.println("Blue color");
delay(1000);
rgb(1, 1, 0);
Serial.println("Yellow color");
delay(1000);
rgb(1, 0, 1);
Serial.println("Purple color");
delay(1000);
rgb(0, 1, 1);
Serial.println("Cyan color");
delay(1000);
rgb(1, 1, 1);
Serial.println("White color");
delay(1000);
rgb(0, 0, 0);
Serial.println("No color (Off)");
delay(1000);
}
void rgb(int rr, int gg, int bb){
if(LED_TYPE == "C"){
digitalWrite(RED, rr);
digitalWrite(GREEN, gg);
digitalWrite(BLUE, bb);
}
else if(LED_TYPE == "A"){
digitalWrite(RED, !rr);
digitalWrite(GREEN, !gg);
digitalWrite(BLUE, !bb);
}
}
توضیحات:
در خطوط 1 تا 5 چندین ثابت تعریف شده است. سه خط اول پین متصل به ال ای دی است و ثابت چهارم مشخص کننده نوع ال ای دی است؛ اگر ال ای دی شما از نوع کاتد بود، مقدار “C” و درصورتی که نوع ال ای دی شما آند بود، مقدار “A” را قرار دهید.
#define RED 2 // Red pin
#define GREEN 3 // Green pin
#define BLUE 4 // Blue pin
#define LED_TYPE "C" // Cathode LED
در آخر کد یک تابع تعریف شده است که به وسیله آن میتوان به LED مقدار دهی کرد. این تابع دارای سه آرگومان است. آرگومان ها مقادیری هستند که در تابع ها مقداری را مشخص میکنند. درواقع آرگومان متغیری است که به یک تابع مقداری را بیان میکند.
عدد اول مقدار رنگ قرمز است (0 نشانه خاموش بودن و 1 نشانه روشن بودن)، آرگومان دوم مقدار رنگ سبز به باینری و آرگومان سوم مقدار رنگ آبی است.
void rgb(int rr, int gg, int bb){
...
}
در جلسات قبل نحوه فراخوانی یک تابع را گفته ایم. مثلا برای فراخوانی (Call کردن یا صدا زدن) تابع doThis مانند کد زیر عمل میکنیم:
doThis();
در تابع rgb سه آرگومان وجود دارد پس برای صدا زدن این تابع باید به تمام آنها مقداری را اختصاص دهیم. مثلا برای اینکه مقدار قرمز را 1 منطقی قرار دهیم از کد زیر استفاده میکنیم:
rgb(1, 0, 0); // Red: 1 - Green: 0 - Blue: 0
در تابع rgb دو شرط وجود دارد. شرط اول مقدار ثابت LED_TYPE که در اول کد تعریف کرده بودیم را چک میکند و درصورتی که با مقدار “C” برابر بود، ال ای دی ها را با مقدار آرگومان ها تنظیم میکند:
if(LED_TYPE == "C"){
digitalWrite(RED, rr);
digitalWrite(GREEN, gg);
digitalWrite(BLUE, bb);
}
شرط دوم میگوید در غیر اینصورت اگر مقدار LED_TYPE برابر با “A” بود، مقدار آرگومان ها را بر عکس کند. در جلسات قبل گفته شد علامت تعجب “!” یا نقیض، درست را به نادرست / نادرست را به درست / 1 را به 0 / 0 را به 1 تبدیل میکند!
else if(LED_TYPE == "A"){
digitalWrite(RED, !rr);
digitalWrite(GREEN, !gg);
digitalWrite(BLUE, !bb);
}
در کد بالا تنها تعداد محدودی از رنگ ها را میتوان به وجود آورد. در جلسات آینده که بیشتر با مباحث خروجی آنالوگ آشنا شدیم میتوانیم رنگ های بیشتری تولید کنیم.
با تشکر از شما که در جلسه هفتم همراه ما بودید، درصورت داشتن هرگونه سوال، نظر و یا پیشنهاد در بخش نظرات با ما در ارتباط باشید.
درباره admin_hb
حسین بذرافکن هستم، برنامه نویس، فریلنسر و عاشق الکترونیک...
نوشته های بیشتر از admin_hb
دیدگاهتان را بنویسید