استفاده از LED پیکسلی به صورت سری باعث کاهش تعداد پایههای مورد استفاده در میکرو میشود. استفاده از ال ای دی پیکسلی بسیار آسان است. در این مقاله به آموزش راه اندازی LED پیکسلی با آردوینو میپردازیم. با پیاده سازی دو پروژه ساده، مفاهیم آنها را یاد خواهید گرفت.
همانطور که میدانید LED های مختلفی با کاربردهای متفاوت در بازار به فروش میرسند. ابتدا نگاهی میاندازیم به انواع LED های رنگی و مزایا و معایب هر کدام را به طور مختصر بررسی میکنیم.
انواع LED ها در رنگ های متنوعی در بازار یافت میشوند؛ رنگهایی نظیر قرمز، آبی، سبز، سفید، بنفش، صورتی، زرد و … .
در برخی از مدلهای LED از سه رنگ اصلی قرمز، آبی و سبز استفاده شده است. یعنی سه LED به رنگ های قرمز، آبی و سبز را در یک بسته جای دادهاند. معمولاً این LEDها در دو دسته بندی قرار میگیرند.
تعداد پایههای این نوع ال ای دی ها، 4 تاست؛ یکی پایه مشترک و 3 پایه دیگر آن مربوط به رنگها میباشد.
همانطور که میدانید، با سه رنگ اصلی (قرمز، آبی، سبز) میتوان طیف رنگی وسیعی ایجاد کرد. این طیف رنگی را میتوان با استفاده از روشن کردن مشترک 2 یا 3 رنگ با هم و با شدتهای مختلف ایجاد کرد.
از آنجا که سه رنگ اصلی در تشکیل رنگِ نهایی دخیل هستند؛ به این LED ها RGB گفته میشود.
برای راه اندازی ال ای دی RGB دو راه حل داریم:
در برنامه نویسی راه اندازی LED های RGB تکنیکی به نام روش موج PWM استفاده میشود که در مقاله زیر مورد بررسی قرار گرفته است.
همانطور که متوجه شدهاید، برای کار با هر LED RGB تعداد 3 پایه از میکرو اشغال خواهد شد. برای مثال اگر بخواهیم با 10 LED کار کنیم، 30 پایه از میکرو اشغال خواهد شد.
بله! این مقدار بسیار زیاد است!
اگر با یکی از مقرون به صرفه ترین میکروهای آردوینو که UNO نام دارد کار کنیم، خواهیم توانست حداکثر چهار LED RGB را مدیریت کنیم.
دو روش پیشنهادی برای رفع این مشکل وجود دارد:
در ادامه این مقاله به آموزش راه اندازی LED پیکسلی با آردوینو خواهیم پرداخت.
اخیراً LED هایی به بازار عرضه شده است که دارای آی سی هستند. این آی سی ها میتوانند تمام طیف رنگی را ایجاد و به اصطلاح LED را درایو کنند. فقط کافی است رنگی که مد نظر ماست را به آی سی بدهیم. به این کار آدرس دهی گفته میشود.
چهار مزیت اصلی و مهم استفاده از ال ای دی پیکسلی عبارتند از:
نسبت به سایر روشهای کار با LED از سادگی بیشتری در برنامه نویسی برخوردار است.
برای کار با این LEDها فقط کافی است که کد رنگ را برای آن ارسال کنیم. پس برای آدرس دهی آی سی ها فقط به یک پایه برای ارسال اطلاعات نیاز خواهیم داشت.
میتوان LED های پیکسلی را باهم سری کرد؛ هر تعداد LED پیکسلی را با هم سری کرده و در نهایت به یک پایهی میکرو متصل میشود.
این IC ها دارای حافظهای جهت ذخیره کد رنگ ارسالی هستند. به این معنا که وقتی کد رنگ به LED داده شد، آن ال ای دی روشن شده و تا زمانی که کد رنگ جدیدی به آن ندهیم، روشنایی با همان رنگ باقی خواهد ماند.
شکل زیر نحوه اتصال چندین LED پیکسلی را نشان میدهد.
برای راه اندازی LED پیکسلی با استفاده از آردوینو نیاز به کتابخانه داریم. کتابخانه این LED ها Adafruit_NeoPixel.h
نام دارد که باید به برنامه اضافه شود. اگر چنین کتابخانهای ندارید، در بخش نظرات (انتهای مقاله) اعلام کنید تا برایتان ارسال شود.
#include <Adafruit_NeoPixel.h> |
در این بخش از برنامه استفاده از دستور زیر کتابخانه استفاده شده را پیکربندی میکنیم.
#define PIN 6 #define MAX_LED 16 Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_GRB + NEO_KHZ800 ); |
در قطعه کد فوق دو متغیر تعریف شده است:
PIN
: مشخص کننده شماره پایهای است که پایه دیتای LED به آن متصل میشود. (در اینجا پایه 6 استفاده شده است.)MAX_LED
: تعداد LED هایی است که به صورت سری به هم متصل شدهاند و قرار است آدرس دهی شوند. (در این آموزش 16 LED داریم.)برای هر LED چهار متغیر در نظر میگیریم؛ یکی برای شماره LED مورد نظر و سه تای دیگر برای مشخص کردن طیف رنگی (مقادیر R و G و B)
LED_Number
برای مشخص کردن ال ای دی (از صفر تا تعداد LED ها منهای یک)R
شدت نور قرمزG
شدت نور سبزB
شدت نور آبیمتغیرهای شدت نور میتوانند با اعداد 0 تا 255 مقدار دهی شوند؛ 0 به معنای خاموش بودن رنگ و 255 به معنای حداکثر روشنایی آن.
به طور پیشفرض مقادیر اولیه را برابر 0 قرار دادهایم.
uint16_t LED_Number = 0; uint8_t R = 0; uint8_t G = 0; uint8_t B = 0; |
در حلقه Setup از برنامه، کتابخانه را استارت زده و نمایش میدهیم. نمایش دادن به این معنا است که اطلاعات رنگ را به LED انتخاب شده ارسال میکنیم.
void setup() { strip.begin(); strip.show(); } |
در اینجا یک کار ساده را انجام میدهیم. LED شماره صفر را ابتدا به رنگ قرمز، سپس بعد از گذشت یک ثانیه به رنگ سبز و در نهایت به رنگ آبی روشن خواهیم کرد.
ابتدا مقدار متغییر قرمز (R
) را با 255 و دو متغییر سبز و آبی را با صفر مقداردهی میکنیم.
سپس شماره LED که میخواهیم روش شود را مشخص میکنیم.
نکته: زمانی که LED ها با هم سری میشوند، آن LED که به میکرو نزدیکتر است LED صفرم خواهد بود.
در نهایت رنگ انتخابی خود را توسط تابع colorPixel()
به LED ها ارسال میکنیم.
1 2 3 4 5 6 7 | void loop() { R = 255; G = 0; B = 0; LED_Number = 0; colorPixel( strip.Color( G, R, B ), LED_Number ); delay( 1000 ); |
مطابق حالت قبل، متغییر سبز را در حداکثر خود قرار داده و متغییر قرمز و آبی را صفر میکنیم. سپس آنها را به LED ها ارسال میکنیم.
1 2 3 4 5 6 | R = 0; G = 255; B = 0; LED_Number = 0; colorPixel( strip.Color( G, R, B ), LED_Number ); delay( 1000 ); |
و در نهایت، رنگ همان LED را به آبی تغییر میدهیم.
1 2 3 4 5 6 7 | R = 0; G = 0; B = 255; LED_Number = 0; colorPixel( strip.Color( G, R, B ), LED_Number ); delay( 1000 ); } |
تابع زیر عملیات ارسال اطلاعات به LED را انجام میدهد.
void colorPixel( uint32_t c, uint8_t LED_Number ) { strip.setPixelColor( LED_Number, c ); strip.show(); } |
با تغییر دادن مقدار متغیر LED_Number
در هنگام ارسال اطلاعات، میتوان سایر LED ها را نیز برنامه ریزی کرد.
به عنوان مثال در حلقهی زیر تمام LED ها به ترتیب با رنگ سبز و تاخیر 500 میلی ثانیه روشن و خاموش خواهند شد.
در این کد به جای استفاده از متغیر i
(شمارنده حلقه for) برای مشخص کردن شماره LED استفاده کردهایم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include <Adafruit_NeoPixel.h> #define PIN 6 #define MAX_LED 16 Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_GRB + NEO_KHZ800 ); void setup() { strip.begin(); strip.show(); } void loop() { for (int i = 0; i < 16; i++) { colorPixel( strip.Color( 255, 0, 0 ), i ); delay( 500 ); colorPixel( strip.Color( 0, 0, 0 ), i ); } } void colorPixel( uint32_t c, uint8_t LED_Number ) { strip.setPixelColor( LED_Number, c ); strip.show(); } |
فایل پروژه اول که در این مقاله آن را با هم بررسی کردیم را میتوانید از طریق لینک زیر دانلود کنید.
در این مقاله به بررسی انواع LED پرداختیم. دریافتیم LED پیکسلی به دلیل مزیت استفاده از تعداد پایه کمتر، میتواند یکی از بهترین و مقرون به صرفهترین روش های استفاده از LED باشد. در ادامه به آموزش راه اندازی LED پیکسلی با آردوینو پرداختیم. مدار سری کردن LED Pixel را مورد بررسی قرار داده و دو پروژه ساده اجرا کردیم.
سون لرن • آموزش...برچسب : نویسنده : استخدام کار 7learn بازدید : 383