blog background header

در جریان اخبار، مقالات، رویدادها و اتفاقات باشید

۱۳ مهر ۱۴۰۲
   
آکادمی

پروژه کنترل جریان و نور ال ای دی (LED) با آردوینو + کد برنامه‌ نویسی

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

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

انواع ال ای دی

کلمه ال ای دی LED مخفف Light-Emitting Diode یا دیود ساطع‌کننده نور است. ال ای دی انواع متفاوتی دارد:

  • ال‌ای‌دی معمولی یا پایه‌دار
  • ال‌ای‌دی اس ام دی (SMD LED) 
  • پاور ال‌ای‌دی (POWER LED)
  • ال‌ای‌دی پاور اس ام دی (SMD POWER LED)
  • ال‌ای‌دی COB 
  • ال‌ای‌دی MCOB

هر کدام از مدل‌های فوق را می‌توان در بوردهای خاصی استفاده کرد. فارغ از مدل، تمامی ال‌ای‌دی‌ها نوعی دیود هستند که خود نیز زیرمجموعه نیمه هادی‌ها است.

در این مقاله، ۱ پروژه کاربردی با ال‌ای‌دی پایه‌دار یا اصطلاحا DIP انجام خواهیم داد. سایر پروژه‌های مشابه را می‌توانید در دسته‌بندی الکترونیک پیدا کنید. 

 

ساختار ال ای دی

برای درک بهتر پروژه زیر، بهتر است کمی درباره ساختار ال ای دی صحبت کنیم. 

LED دارای دو پایه است:

  • پایه منفی (کاتد): این پایه نسبت به پایه مثبت کوتاه‌تر است و هنگام بستن مدار، به زمین (GND) وصل می‌شود.
  • پایه مثبت (آند): این پایه نسبت به پایه منفی بلندتر است و حالت LED را کنترل می‌کند.

همانطور که گفتیم ال ای دی نسبت به جریان عبوری از آن، میزان نوری را بازتاب یا ساطع می‌کند. اما باید دقت کنیم که جریان زیادتر از حد نامی ال ای دی را از آن عبور ندهیم؛ چون جریان بیش از حد باعث سوختن ای ای دی می‌شود. برای کنترل جریان عبوری در مدار از یک قطعه الکترونیکی دیگر به نام مقاومت استفاده می‌کنیم و مقاومت را سر راه ال ای دی و منبع تغذیه قرار می‌دهیم. مقاومت بین پایه آند (+) و VCC، یا بین پایه کاتد و GND متصل می‌شود. مقدار مقاومت مورد استفاده به مشخصات روی LED بستگی دارد. بالطبع هر چقدر مقدار این مقاومت بیشتر باشد، نور ساطع شده از ال ای دی کمتر خواهد بود.

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

 

راه‌اندازی پروژه

همانطور که در بالا توضیح دادیم، میزان نور ساطع شده از ال ای دی بستگی به میزان جریانی دارد که از آن عبور می‌دهیم. همچنین، میزان مقاومت سر راه ال ای دی و منبع تغذیه نیز بر روی شدت نور تاثیر خواهد گذاشت. در پروژه کنترل جریان (نور) ال ای دی می‌توانید میزان جریان عبوری از ال ای دی را از طریق برنامه‌نویسی آردوینو اونو کنترل کنید.

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

برای راه‌اندازی پروژه Fade LED به قطعات زیر احتیاج دارید:

  • بورد آردوینو اونو (Arduino Uno)
  • دو عدد ال ای دی- (ترجیحا دو رنگ متفاوت)
  • برد بورد (Breadboard)- (نوع آن مهم نیست)
  • دو عدد مقاومت ۲۲۰ اهم
  • سیم جامپر نری به نری

بستن مدار و اتصال به آردوینو

روش بستن مدار این پروژه مانند پروژه ال ای دی چشمک زن (Blinki LED) است. با این تفاوت که در اینجا از ۲ ال ای دی استفاده شده است.

ابتدا پایه‌های LEDها را در ستون‌های مختلف قرار می‌دهیم. برای آشنایی با نحوه کار با برد بورد و اتصال قطعات به آن، مقاله «برد بورد چیست» را مطالعه کنید.

حالا یک سر هر دو مقاومت ۲۲۰ اهم را در ستون‌های پایه مثبت LEDها قرار می‌دهیم و سر دیگر مقاومت‌ها را با دو سیم جامپر به پین‌های 3 و 5 آردوینو متصل می‌کنیم. چون می‌خواهیم میزان ولتاژ را بین ۰ تا ۵ ولت کنترل کنیم از پین‌های 3 و 5 که پایه‌های PWM هستند استفاده کردیم. (برای آشنایی با ساختار و پایه‌های آردوینو مقاله «آردوینو چیست» را مطالعه کنید.)

در این پروژه نمی‌توان از پین‌های دیجیتال استفاده کرد زیرا این پین‌ها منطق صفر و یک دارند و نمی‌توان عددی میان ۰ تا ۵ ولت را به پین منتقل کرد. بنابراین، باید از پین‌های دیجیتالی استفاده کرد که علامت مد در کنارشان دارند یا به عبارتی پین‌های PWM هستند. در آردوینو، پین PWM معادل پین آنالوگ است. توضیحات پین PWM را در انتهای مقاله بخوانید.

به طور خلاصه و طبق شماتیک زیر، پایه‌های منفیLEDها به GND آردوینو متصل شده و پایه‌های مثبت آن‌ها ابتدا به مقاومت و سپس به پین PWM شماره 3 و 5 آردوینو متصل شده‌اند.

برنامه‌نویسی آردوینو در IDE

ابتدا وارد نرم‌افزار Arduino IDE شوید. می‌توانید این نرم افزار را از وبسایت آردوینو https://arduino.cc/ دانلود و نصب کنید.

نتیجه کد برنامه این پروژه به شکل زیر است که در ادامه به توضیح هر بخش می‌پردازیم:

 

برای دریافت کامل کد به گیت‌هاب تینگزپاد مراجعه کنید.

ابتدا پین شماره 3 و 5 آردوینو را با داده int به متغیرهای ledPin1 و ledPin2 اختصاص می‌دهیم. با این نامگذاری دیگر نیازی نیست که در طول برنامه، شماره پین آردوینو را تکرار کنیم و به جای شماره پین از متغیرهای ledPin1 و ledPin2 استفاده خواهیم کرد.

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

 

 

روشنایی اولیه ال ای دی های ۱ و۲ در متغیرهای brightness1 و brightness2  تعریف شده‌اند. طبق دستور زیر، ال ای دی ۱ در لحظه اول خاموش و ال ای دی ۲ در لحظه اول با دیوتی سایکل ۱۰۰ درصد روشن می‌باشد.

 

 

چون می‌خواهیم شدت نور ال ای دی ۵ تا ۵ تا کاهش یا افزایش پیدا کند، عدد ۵ را در متغیر fadeAmount ذخیره می‌کنیم.

 

 

حالا در تابع setup، پین شماره 3 و 5 آردوینو که به متغیر ledPin1 و ledPin2 اختصاص داده شده‌اند را به عنوان خروجی تنظیم می‌کنیم. این کار را از طریق تابع ()pinMode و به صورت زیر انجام می‌دهیم؛ در قسمت اول دستور، پین مربوط به آردوینو (ledPin) و در قسمت دوم، حالت آن (Output) را قرار می‌دهیم.

کدهای درون تابع setup در طول اجرای برنامه، فقط یک بار اجرا می‌شوند.

پس از تعیین وضعیت پین آردوینو نوبت به مقداردهی این پین‌ها می‌رسد. چون می‌خواهیم تغییر شدت نور LEDها به صورت مداوم تکرار شود، این کار را در تابع حلقه یا loop انجام می‌دهیم.

برای ال ای دی اول، ابتدا مقدار brightness1 را به ledpin1 اختصاص می‌دهیم. این کار را از طریق تابع ()analogWrite انجام می‌دهیم زیرا از پین PWM یا آنالوگ آردوینو استفاده کرده‌ایم.

 

 

سپس با استفاده از مقداری که در متغیر fadeAmount ذخیره شده است، به تدریج مقدار پین PWM را از صفر به ۲۵۵ افزایش می‌دهیم و سپس از ۲۵۵ به صفر برمی‌گردانیم تا چرخه کامل شود.

اگر brightness1 صفر یا ۲۵۵ باشد، انگاه fadeAmount به مقدار معکوس آن تغییر می‌کند. به طور مثال اگر fadeAmount برابر با ۵ باشد به ۵- تبدیل می‌شود و اگر ۵- باشد به ۵ تبدیل می‌شود. دستور زیر در ()loop باعث می‌شود که نور ال ای دی پیوسته از کم به زیاد و از زیاد به کم تبدیل شود.

 

 

حالا برای ال ای دی دوم، ابتدا مقدار brightness2 را به ledpin2 اختصاص می‌دهیم. این کار را از طریق تابع ()analogWrite انجام می‌دهیم زیرا از پین PWM یا آنالوگ آردوینو استفاده کرده‌ایم.

 

 

سپس تمامی مراحل ال ای دی اول را این مرتبه برای ال ای دی دوم انجام می‌دهیم. با این تفاوت که چون ال ای دی دوم از ابتدا روشن تعریف شده است، باید در ابتدا مقدار fadeAmount را از شدت نور اولیه کم کرد. حالا چون مقدار ۵ از ابتدا به صورت ۵- محاسبه می‌شود، برای تکرار این فرآیند باید در انتهای کد مقدار fadeAmount را به صورت مثبت تعریف کرد.

 

 

دستور ()analogWrite می‌تواند به سرعت مقدار PWM را تغییر دهد؛ بنابراین، بهتر است با تعریف میزانی تأخیر در پایان برنامه، سرعت پر نور یا کم نور شدن را کنترل کنیم. می‌توانید با تغییر عدد تابع ()delay این موضوع را تست کنید. ما در اینجا تاخیر را 30 میلی‌ثانیه که معادل 0.03 ثانیه است تعریف کردیم.

 

 

در نهایت، برای تمیز کردن کد می‌توانید روی صفحه کلیک راست کرده و گزینه Format Document را انتخاب کنید.

حالا از نوار بالای نرم‌افزار، ابتدا روی آیکون تیک کلیک کنید تا آردوینو IDE کد شما را بررسی کند. در صورت نبودن خطا، باید در پایین صفحه اعلان Done Compiling به شما نمایش داده شود.

آردوینو را با کابل Type B به  USB به کامپیوتر خود وصل کنید و از نوار بالای نرم‌افزار، نام آردوینو خود را که توسط سیستم شناسایی شده است انتخاب کنید.

سپس روی آیکون فلش (آپلود) کلیک کنید تا کد فوق بر روی آردوینو اونو شما بارگذاری شود.

همانطور که می‌بینید، نور ال ای دی اول از کم به زیاد و نور ال ای دی دوم از زیاد به کم تبدیل می‌شود.

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

 

سیگنال PWM چیست؟

PWM مخفف Pulse Width Modulation است که در فارسی به آن سیگنال مدولاسیون پهنای باند گفته می‌شود. در این تکنیک، فرکانس ثابت است و پهنای پالس تغییر می‌کند. این مدولاسیون برای تولید سیگنال آنالوگ با استفاده از یک منبع دیجیتال مناسب می‌باشد.

یک سیگنال PWM شامل دو مولفه اساسی به نام‌ duty cycle و فرکانس است که رفتار سیگنال را مشخص می‌کنند.

  • دیوتی سایکل (duty cycle): دوره تناوب یک پالس شامل یک سیکل On (۵ ولت) و یک سیکل Off (صفر ولت) می‌باشد. حاصل تقسیم سیکل On بر روی دوره تناوب، duty cycle نامیده می‌شود.
  • فرکانس سیگنال: این مولفه مشخص می‌کند که PWM با چه سرعتی یک چرخه را طی خواهد ‌کرد؛ مثلاً فرکانس ۱۰۰۰ هرتز به معنی طی کردن ۱۰۰۰ چرخه در ثانیه می‌باشد. به عبارتی دیگر یعنی با چه سرعتی بین حالت‌های ON (بالا) و OFF (پایین) سوییچ می‌کند. با تکرار این الگوی ON-OFF در یک سرعت به اندازه کافی بالا و با یک duty cycle مشخص، میانگین خروجی به صورت یک ولتاژ آنالوگ ثابت نمایان می‌شود و ولتاژ مورد نیاز دستگاه‌ها را فراهم می‌کند.

آردوینو اونو (Arduino Uno) دارای ۶ کانال ۸ بیتی PWM می‌باشد. پین‌هایی با علامت «~» از PWM پشتیبانی می‌کنند. پین‌های PWM آردوینو اونو را می‌توانید در تصویر زیر ببینید:

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

۱. ابتدا از روی شماتیک پروژه نحوه بستن مدار خود و مخصوصا پین‌های آردوینو را بررسی کنید.

۲. مجددا کد خود را با دستورالعمل تطابق دهید. می‌توانید کد را از اینجا یا کانال تلگرام آکادمی تینگزپاد نیز کپی کنید.

۳. ویدیوی آموزشی پروژه را با دقت نگاه کنید.

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

 

بعد از این پروژه چکار کنم؟

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

راجع به این موضوع بیشتر می‌دانید؟ محتوای خود را برای ما ارسال کنید تا آن را با نام خودتان منتشر کنیم.

برچسب‌های مرتبط

اینترنت اشیا