آردوینو, پروژه آردوینو

آموزش کامل ساخت کنترل RGB LED با شاسی فشاری

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

در این مطلب از بلاگ بهنام رباتیک می‌خواهیم شما را با نحوه ساخت کنترل RGB LED با آردوینو و شاسی فشاری آشنا کنیم؛ پس با ما همراه باشید.

فهرست مطالب

قطعات مورد نیاز برای پروژه ساخت کنترل RGB LED با آردوینو

سیم‌کشی مدار پروژه ساخت کنترل RGB LED با آردوینو

همان‌طور که می‌دانید، بلندترین پایه RGB LED که همان پایه مشترک اتصال به زمین (GND) بود را می‌بایست به اتصال به زمین برد بورد (GND) وصل کرد.

نحوه سیم‌کشی این مدار بر اساس LED کاتد مشترک صورت گرفته است. بر این اساس، چنان‌چه شما یک LED آند مشترک دارید، توجه داشته باشید که باید پایه دوم یا مشترک LEDها را به پایه منبع تغذیه 5 ولت متصل نمایید. دقت کنید که با استفاده از LED آند مشترک، چرخش رنگ‌های ماژول LED RGB معکوس خواهد شد.

کدنویسی پروژه ساخت کنترل RGB LED با آردوینو

کدهایی که در ادامه نوشته شده را باید در برنامه آردوینو بارگذاری کنید.

				
					
    /*
    Adafruit Arduino - Lesson 7. RGB Fader
    */
    int redLEDPin = 11;
    int greenLEDPin = 10;
    int blueLEDPin = 9;
    int redSwitchPin = 7;
    int greenSwitchPin = 6;
    int blueSwitchPin = 5;
    int red = 0;
    int blue = 0;
    int green = 0;
    void setup()
    {
      pinMode(redLEDPin, OUTPUT);
      pinMode(greenLEDPin, OUTPUT);
      pinMode(blueLEDPin, OUTPUT);
      pinMode(redSwitchPin, INPUT_PULLUP);
      pinMode(greenSwitchPin, INPUT_PULLUP);
      pinMode(blueSwitchPin, INPUT_PULLUP);
    }
    void loop()
    {
      if (digitalRead(redSwitchPin) == LOW)
      {
        red ++;
        if (red > 255) red = 0;
      }
      if (digitalRead(greenSwitchPin) == LOW)
      {
        green ++;
        if (green > 255) green = 0;
      }
      if (digitalRead(blueSwitchPin) == LOW)
      {
        blue ++;
        if (blue > 255) blue = 0;
      }
      analogWrite(redLEDPin, red);
      analogWrite(greenLEDPin, green);
      analogWrite(blueLEDPin, blue);
      delay(10);
    }
				
			

ترکیب رنگ‌ها در پروژه ساخت کنترل RGB LED با آردوینو

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

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

در این میان، اگر می‌خواهید که هر برنامه‌ای را از اول شروع کنید، کافیست دکمه ریست آردوینو را فشار دهید. این دکمه به رنگ قرمز و در کنار درگاه USB قرار دارد.

در این پروژه سه پایه خروجی داریم که دیود نورانی را کنترل می‌کنند. این سه پایه خروجی، PWM آردوینو هستند که با کنترل توان خروجی آنها میزان رنگ LEDها کنترل خواهد شد.

این پایه‌ها به وسیله مقاومت داخلی پول‌آپ دائماً دارای مقدار HIGH هستند. البته وقتی یکی از دکمه‌ها فشار داده می‌شود، پایه مربوط به خود را به مقدار LOW می‌رساند. این مقدار ناشی از اتصال کوتاه کلید با زمین خواهد بود.

تعریف پایه LEDها و متغیرها در پروژه ساخت کنترل RGB LED با آردوینو

پس از معرفی پایه‌های مربوط به دکمه‌ها و LEDها، نوبت به معرفی سه متغیر red، blue و green می‌رسد.

				
					int red = 0;
int blue = 0;
int green = 0;
				
			

این متغیرها برای نگه داشتن آخرین مقادیر شدت روشنایی هر رنگ از LED به کار می‌روند. این یعنی اگر مقدار رنگ قرمز 0 بود، قسمت قرمز رنگ LED خاموش خواهد شد و اگر مقدار آن به 255 رسید، میزان روشنایی نیز به بیشترین مقدار خود می‌رسد.

تابع حلقه به دو قسمت تقسیم می‌شود؛ قسمت اول هر دکمه را بررسی کرده و با توجه به آن، مقادیر سه متغیر green، red و blue را تغییر می‌دهد. توجه کنید که همه دکمه‌ها شبیه به هم عمل می‌کنند با این تفاوت که هر کدام مربوط به یکی از سه رنگ می‌باشد.

				
					if (digitalRead(redSwitchPin) == LOW)
{
red ++;
if (red > 255) red = 0;
}
				
			

توضیحات کد پروژه ساخت کنترل RGB LED با آردوینو

اولین جمله شرطی، شرایط پایه مربوط به دکمه قرمز را چک می‌کند که می‌تواند به دو حالت منطقی 0 یا 1 باشد. اگر دکمه فشرده نبود، به علت وجود مقاومت پول‌آپ مقدار پایه برابر 5 ولت یا همان 1 منطقی خواهد بود و اگر دکمه فشار داده شود، مقدار به 0 خواهد رسید که ناشی از اتصال کوتاه شدن پایه به زمین خواهد بود.

در زمانی که مقدار پایه 0 یا همان LOW است، وارد زیرمجموعه شرط اول خواهیم شد که در این صورت متغیر red اضافه می‌گردد.

در اینجا باید کمی با احتیاط پیش رفت زیرا نهایت مقدار قابل‌قبول برای PWM برابر با عدد 255 است بنابراین حتماً می‌بایست محدودیت ایجاد شود تا مقدار متغیر از حد خاصی فراتر نرود. بدین منظور، در خط بعد با یک جمله شرطی دیگر این محدودیت را اعمال می‌کنیم تا در صورت افزایش متغیر از 255، ریست و 0 شود و فرآیند دوباره آغاز گردد.

قسمت دوم تابع حلقه، به دستور analogWrite مربوط می‌شود که مقادیر متغیرهای سه رنگ را به آنالوگ تبدیل و به پایه‌های LED منتقل می‌کند.

				
					analogWrite(redLEDPin, red);
analogWrite(greenLEDPin, green);
analogWrite(blueLEDPin, blue);
				
			

در نهایت، تابع نیز یک تأخیر تلقی خواهد شد تا تغییر رنگ‌های LED با سرعت قابل‌کنترلی انجام شود.

علت گذاشتن تأخیر در کدهای پروژه ساخت کنترل RGB LED با آردوینو

سعی کنید دستور تأخیر در پایان برنامه را حذف کنید. برای انجام این کار می‌توانید دستور نامبرده را به کامنت تغییر دهید.

				
					analogWrite(blueLEDPin, blue);
// delay(10);
}
				
			

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

بدون دستور تأخیر متوجه خواهید شد که هر وقت دستتان را از روی دکمه بردارید، میزان روشنایی کاملاً تصادفی انتخاب می‌شود زیرا چرخش بین مقادیر روشنایی رنگ‌ها آن‌قدر سریع است که نمی‌توانید آن را کنترل کنید.

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