ال ای دی نئوپیکسل نوعی قابل آدرس دهی جداگانه همه روی رشته ای قرار دارند که می توانند از یک پایه روی میکروکنترلر کنترل شوند. این بدان معنی است که یک پایه می تواند تمام رنگ های LED ها را کنترل کند و اینکه کدام LED ها در هر زمان روشن هستند. در مقایسه با یک LED RGB معمولی متوجه خواهید شد که برای کنترل مقدار Red ،Green و Blue به ۳ پایه نیاز داریم و همه LED ها باید روشن یا خاموش باشند. همانطور که مشاهده می کنید استفاده از آدرس دهی جداگانه می تواند به ایجاد برخی افکت های جالب کمک کند. بسیاری از شرکت ها نوارهای LED قابل آدرس دهی را به فروش می رسانند، اما معروف ترین آنها یعنی ال ای دی نئوپیکسل توسط Adafruit ساخته شده است. Adafruit یک خط نوار LED آدرس پذیر تولید می کند. همچنین کتابخانهای را برای کنترل آنها توسعه دادهاند، که “Adafruit NeoPixel” نامیده می شود. شرکت های دیگری هم وجود دارند که برای کنترل این LED های آدرس پذیر کتابخانه تولید کرده اند. با این حال به نظر من، Adafruits بهترین پشتیبانی را دارد و برای شروع انتخاب مناسبی است. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه Adafruit_NeoPixel.h
ابتدا در نرم افزار Arduino IDE اقدام به نصب کتابخانه مورد نیاز خواهیمکرد. مراحل زیر را دنبال کنید:
- این مسیر را دنبال کنید Sketch > Include Library > Manage Libraries
- کلمه Adafruit_NeoPixel را جستجو کنید.
- کتابخانه را نصب کنید.
مقدار دهی اولیه
چند خط اول برای ارجاع و مقدار دهی به “LED_PIN” و “LED_COUNT” است که باید اعداد مربوط به این موارد را وارد کنید. LED pin همانطور از نام آن پیداست پین دیجیتالی است که وروردی نئوپیکسل یا D0 به آن متصل میشود، مورد دوم LED Count در واقع تعداد قطعه های LED موجود در ماژول مورد استفاده شده است تا زمان اجرای کد به بهترین شکل شاهد اجرای کد باشیم. همانطور که در مثال پایین مشاهده میکنید برای تعریف مقادیر از اعداد استفاده میشود.
#define LED_PIN 6 #define LED_COUNT 60
فراخوانی کتابخانه
اولین مرحله از راهاندازی و استفاده از کتابخانه ها فراخوانی هدر فایل مد نظر است. این کتابخانه با نام Adafruit_NeoPixel.h شناخته میشود و در مواردی که نیاز به فراخوانی این کتابخانه داریم باید آن را با پسوند قابل فهم برای ادیتور مورد نظر یعنی با پسوند h. فراخوانی شود که به این شکل نوشته میشود Adafruit_NeoPixel.h.
#include <Adafruit_NeoPixel.h>
معرفی ساختمان نئوپیکسل
بعد از مقداردهی اولیه و فراخوانی کتابخانه نیاز داریم تا مواردی را که مربوط به سخت افزار استفاده شده است را به کد معرفی کنیم. در ()Adafruit_NeoPixel اقدام به معرفی مقادیر مانند تعداد نئوپیکسل ها، پین مربوط به نئوپیکسل که البته در یک متغیر از قبل مقادیر را برای این دو مورد ذخیره کردهایم و تنها نام متغیر ها ذکر خواهند شد. و برای سومین مورد که باید معریفی شود که از دوبخش تشکیل شده نوع نئوپیکسل و ۸۰۰KHz یا ۴۰۰KHz بودن قطعه نئوپیکسل ما.
۸۰۰ کیلوهرتز (اکثر محصولات NeoPixel با LED های WS2812) : NEO_KHZ800
۴۰۰ کیلوهرتز (نئوپیکسل کلاسیک v1 FLORA با درایورهای WS2811) : NEO_KHZ400
مناسب پیکسل هایی تولید شده با استاندارد GRB هستند : NEO_GRB
مناسب پیکسل هایی تولید شده با استاندارد RGB هستند : NEO_RGB
مناسب پیکسل هایی تولید شده با استاندارد RGBW هستند : NEO_RGBW
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRBW + NEO_KHZ800);
مستندات عملکرد اعضا
- ;()Begin(); & SHOW
ابتدا در بخش Setup برای شروع پین داده برای NeoPixel از ;()strip.begin برای شروع استفاده میکنیم، در خط دوم ;()strip.show این عملکرد داده ها را به سمت پیکسل ها سوق می دهد. از آنجا که هنوز هیچ رنگی تنظیم نشده است، درصورتی که برخی از آنها توسط یک برنامه قبلی روشن بمانند، همه NeoPixels را به حالت اولیه “خاموش” تبدیل می کند.
strip.begin(); strip.show();
- ;()setBrightness
با استفاده از این تابع قادر خواهیم بود میزان روشنایی نئوپیکسل ها را از کمترین تا بیشترین با مقدار دهی بین اعداد ۰ تا ۲۵۵ مشخص کنید.
strip.setBrightness(50);
- ;()Color
با استفاده از این تابع قادر خواهیم بود با مقدار دهی به تابع از ۰ تا ۲۵۵، مبزان روشنایی هر یک از رنگ های قرمز، آبی و سبز را مشخص کنیم و در نهایت به طیف نوری و رنگ مدنظر خود برسیم.
strip.Color(255, 0, 0) , 50);
- ;()fill
از این تابع میتوان برای تغییر رنگ چندین نئوپیکسل بصورت همزمان استفاده کرد. برای مقدار دهی تابع باید سه مورد رنگ، اولین پیکسل و تعداد پیکسل های مورد نظر در تابع مشخص شود.
strip.fill(color, first, count);
- ;()clear
اگر تابع Fill را بدون مقادیر معرفی شده فراخوانی کنیم پیکسل ها خاموش خواهند شد اما راه استاندار و پایداری برای این کار وجود دارد، یعنی تابع clear که با فراخوانی تمام پیکسل ها به حالت پیشفرض تغییر حالت خواهند داد.
strip.clear();
- ;()getPixelColor
با استفاده از این تابع قادر خواهید مقادیر RGB موجود در یک پیکسل را دریافت و ذخیره کنید.
color = strip.getPixelColor(11);
- ;()numPixels
اگر قصد بدست آوردن تعداد پیکسل ها در یک نوار LED یا تعداد در یک حلقه نئوپیکسل را دارید، با استفاده از این تابع قادر خواهید بود این تعداد را محاسبه و در یک متغیر ذخیره کنید.
n = strip.numPixels();
HSV (Hue-Saturation-Value)
کتابخانه Adafruit_NeoPixel.h دارای توابعی است که به کمک آنها قادر خواهیم بود نمایش رنگی با استاندارد HSV داشته باشیم. این استاندارد رنگی نمایشی جایگزینی از مدل رنگی RGB است که در دهه ۱۹۷۰ توسط محققان گرافیک رایانهای برای هماهنگی بیشتر با دید انسان طراحی شده است. در این مدل ها، رنگ های هر بخش در یک برش شعاعی، در اطراف یک محور مرکزی از رنگ های خنثی که از سیاه در پایین تا سفید در بالا است، مرتب شده اند. در کتابخانه NeoPixel ، رنگ یا hue به عنوان یک عدد ۱۶ بیتی بیان می شود. با شروع از ۰ برای قرمز، و به سمت زرد افزایش می یابد (حدود ۶۵۵۳۶/۶، یا ۱۰۹۲۲ ) ، و از طریق سبز، فیروزه ای (۳۲۷۶۸)، آبی، سرخابی و دوباره به قرمز افزایش می یابد. در کد اختصاصی خود، می توانید به متغیرهای مربوط hue اجازه دهید تا overflow یا underflow شوند. Saturation ، خلوص رنگ را تعیین می کند. که یک عدد ۸ بیتی است که از ۰ (grayscale) تا ۲۵۵ متغیر است. Value مقدار روشنایی یک رنگ را تعیین می کند. که یک عدد ۸ بیتی از ۰ تا ۲۵۵ است.
- ;()ColorHSV
توابعی که قبل تر معرفی کردیم برای تغییر رنگ نئوپیکسل ها مانند ()Fill و ()Color همگی با استاندارد رنگی RGB کار میکنند، در این قسمت با این تابع قادر خواهید بود مقادیر رنگی را با استاندارد HSV مشخص کرده و نمایش دهید.
uint32_t rgbcolor = strip.ColorHSV(hue, saturation, value); uint32_t rgbcolor = strip.ColorHSV(hue); strip.fill(rgbcolor);
قطعات سازگار با کتابخانه
جمع بندی
کتابخانه Adafruit_NeoPixel.h یکی از کتابخانه های مرجع برای راهاندازی LED های نئوپیکسل است که در کمترین زمان ممکن به ما امکان راهاندازی و آدرس دهی به LED های موجود را به ما میدهد، همچنین قادر خواهیم بود با استاندارد های مختلفی رنگ های مد نظر را نمایش دهیم. کنترل NeoPixels از ابتدا یک چالش بوده است، بنابراین ما با این کتابخانه قادر خواهیم بود به راحتی اقدام به راهاندازی آنها کنیم. این کتابخانه با اکثر برد های رایج و انواع آردوینو Uno ،Mega ،Leonardo ،Micro و غیره کار می کند و بیشتر از همه با پردازنده Atmel AVR 8 بیتی از ۸ تا ۱۶ مگاهرتز و همچنین با Arduino Due سازگار است.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
متوجه نشدم توابع rainbowcycle و wheel چه کاری انجام میدهند . لطفا راهنمایی بفرمایید
سلام، اگر از این کتابخانه استفاده کنید به شما کمک می کنند به چند حالت مختلف که از قبل حاضر شدند، نئوپیکسل رو فعال کنید.
سلام ببخشید من این کد ها رو از جای دیگه دانلود کردم ولی روی ال ای دی ار جی بی حلقه ای فقط یک چراغ روشن میشه تمام دستورات هم درست انجام میدم و پیغام خطایی دریافت نمیکنم اتصالات هم درست هستند ولی هنو دستورات بالا رو انجام ندادم
با سلام، برای این مورد باید از تابع colorWipe استفاده کنید.