ال ای دی های نئوپیکسل led neopixel در طرح و ظاهر های متفاوت در بازار عرضه شده و با توجه به نیاز پروژه انتخاب میشوند. مانند ال ای دی حلقه ای یا ال ای دی های نواری که پیکسل هایی با تعداد مشخص دارند. ال ای دی نئوپیکسل WS2812B که در ادامه به آن معرفی آن خواهیم پرداخت، امکانات ویژه ای را در اختیار شما قرار میدهد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
ال ای دی led neopixel
ال ای دی نئوپیکسل نوعی ال ای دی RGB هستند که در ساختار آن ها از آی سی آدرس پذیر و برنامه پذیر استفاده شده است. ال ای دی های نئوپیکسل به دلیل پشتیبانی از کتابخانه های تعریف شده، نمونه برنامه های آماده و آسان در بین سازندگان طرفداران زیادی را جذب کرده است. چرا که بدون نیاز به دانش برنامه نویسی میتوانید توسط یک میکروکنترلر به ال ای دی فرمان دهید. ال ای دی نئوپیکسل با انواع بردهای آردوینو و ESP8266 و رزبری پای سازگاری شده و کتابخانه آن در دسترس عموم قرار گرفته است. ال ای دی نئوپیکسل بر اساس چهار پایه ساخته شده است. پایه VCC, GND, DIN , Dout که یکی از ویژگی های منحصر به فرد ال ای دی نئوپیسکل را به نمایش میگذارد. ال ای دی های نئوپیکسل قابلیت سری شدن دارند. بی نهایت ال ای دی را میتوانید توسط پایه های DIN, Dout به یکدیگر متصل کرده و تعداد ال ای دی های متصل شده به هم را در کد برنامه آردوینو تعریف کنید تا همزمان تغییرات اعمالی را نمایش دهند. پایه ی دیتا به هر پایه از میکروکنترلر متصل شده و از قابلیت دیگر این ال ای دی میتوان به فرمان به تمامی ال ای دی ها فقط توسط یک پایه از میکرو اشاره کرد. فوق العاده است!
نصب کتابخانه Adafruit Neopixel
کتابخانه Adafruit Neopixel جهت راه اندازی ال ای دی های نئوپیکسل توسعه یافته است. پس از نصب کتابخانه نمونه برنامه های مناسبی جهت شروع و یادگیری کار با ال ای دی ها در کتابخانه قرار گرفته شده است. جهت نصب کتابخانه ابتدا از مسیر زیر کتابخانه را سرچ کنید.
Arduino/Tools/Manage Libraries
سپس در صفحه باز شده عبارت Neopixel را سرچ و بر روی install کلیک کنید.
کتابخانه نصب و آماده تست برنامه است.
اتصالات نوار ال ای دی
ال ای دی نئوپیکسل دارای ۴ پایه از دو طرف است:
سمت راست:
- پایه GND
- پایه Dout
- پایه ۴ – ۷ DC
- پایه GND
سمت چپ:
- پایه GND
- پایه DIN
- پایه ۴ – ۷ DC
- پایه GND
پایه DIN, DOUT جهت اتصال سری ال ای دی ها استفاده میشود. به عنوان مثال اگر بخواهید ۴ عدد ال ای دی نئوپیکسل ۸X1 را به یکدیگر متصل کنید، پایه DIN ال ای دی اول را به پایه DOUT ال ای دی دوم متصل میکنیم. به همین ترتیب روند اتصالات ادامه پیدا میکند.
کد آردوینو LED Neopixel
پس از نصب کتابخانه از مسیر Arduino/ File / Examples میتوانید نمونه برنامه های LED را تست و اجرا کنید. جهت سهولت از کد زیر استفاده کنید.
#include <Adafruit_NeoPixel.h> #define PIN 6 #define NUMPIXELS 24 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 void setup() { pixels.begin(); } void loop() { pixels.clear(); for(int i=0; i<NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(227, 38, 54)); pixels.show(); delay(DELAYVAL); } }
در این برنامه یک رنگ ثابت به ال ای دی نسبت میدهیم و سپس تعداد پیکسل های مورد استفاده را در برنامه تعریف کرده و اجرا میکنیم.
انتخاب پایه دیجیتال:
#define PIN 6
انتخاب تعداد ال ای دی نئوپیکسل:
#define NUMPIXELS 24
فراخوانی کتابخانه:
#include <Adafruit_NeoPixel.h>
فعال شدن پیکسل ها:
void setup() { pixels.begin(); }
شرط نویسی برای پیکسل ها:
void loop() { pixels.clear(); for(int i=0; i<NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(227, 38, 54)); pixels.show(); delay(DELAYVAL); } }
راه اندازی نئوپکسل با ESP8266
با نصب پکیج ESP8266 دسترسی به تمامی بردهای زیر شاخه پکیج ESP8266 فراهم شده و میتوانید ال دی نئوپیکسل را به برد های Nodemcu, Wemos D1 mini و سایر بردهای مشابه متصل کنید. بردهای ESP8266 از پایه های GPIO از D1 تا D8 استفاده میکند و بایستی در کدنویسی برنامه یکی از این پایه را با D فراخوان کنید. همچنین تنها با یک پایه GPIO میتوانید بی نهایت ال ای دی نئوپیکسل را راه اندازی و کد رنگ دهید.
کد آردوینو LED Neopixel با برد Wemos
کد زیر را کپی و به نرم افزار آردوینو انتقال دهید. سپس با توجه به نوع برد مورد استفاده Nodemcu یا Wemos D1 mini برد را انتخاب و پورت را مشخص کنید. سپس کد را کامپایل کنید:
#include <Adafruit_NeoPixel.h> #define PIN D1 #define NUMPIXELS 24 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 500 void setup() { pixels.begin(); } void loop() { pixels.clear(); for(int i=0; i<NUMPIXELS; i++) { pixels.setPixelColor(i, pixels.Color(227, 38, 54)); pixels.show(); delay(DELAYVAL); } }
تمامی ۲۴ ال ای دی به ترتیب با رنگ بنفش روشن شده و قابلیت تغییر رنگ دارد. جهت تعریف پایه دیتا سنسور از پایه های GPIO استفاده میکنیم:
#define PIN D1
تغییر رنگ Nepixel با کلید
روش دیگر تغییر دادن رنگ ال ای دی نئوپیکسل استفاده از کلید است. به این صورت که با فشردن کلید هر بار ال ای دی ها تغییر رنگ میدهند. در این کد سه حالت مختلف با سوییچ نوشته شده است. با هر بار فشردن کلید ال ای دی های نئوپیکسل تغییر رنگ داده و به ترتیب روشن میشود. برای اینکار از میکروسوسییچ استفاده خواهیم کرد. میکروسوییپچ در انواع مختلفی وجود دارد که من از مدل ماژول ۳ پایه آن استفاده میکنم.
کد آردوینو ButtonCycler
کد زیر با پایه های GPIO برد Wemos d1 mini نوشته شده است. در صورت استفاده از بردهای آردوینو کافیست به جای D1, D2 پایه های دیجیتال مورد استفاده را جایگزین کنید.
#include <Adafruit_NeoPixel.h> #define BUTTON_PIN D2 #define PIXEL_PIN D1 #define PIXEL_COUNT 24 Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); boolean oldState = HIGH; int mode = 0; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); strip.begin(); strip.show(); } void loop() { boolean newState = digitalRead(BUTTON_PIN); if((newState == LOW) && (oldState == HIGH)) { delay(20); newState = digitalRead(BUTTON_PIN); if(newState == LOW) { if(++mode > 8) mode = 0; switch(mode) { case 0: colorWipe(strip.Color( 0, 0, 0), 50); break; case 1: colorWipe(strip.Color(175, 0, 42), 50); break; case 2: colorWipe(strip.Color( 255, 191, 0), 50); break; case 3: colorWipe(strip.Color( 59, 122, 87), 50); break; break; } } } oldState = newState; } void colorWipe(uint32_t color, int wait) { for(int i=0; i<strip.numPixels(); i++) { // For each pixel in strip... strip.setPixelColor(i, color); // Set pixel's color (in RAM) strip.show(); // Update strip to match delay(wait); // Pause for a moment } }
تعریف پایه های کلید و ال ای دی :
#define BUTTON_PIN D2 #define PIXEL_PIN D1 #define PIXEL_COUNT 24
فعال سازی ورودی و شروع کار ال ای دی ها:
void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); strip.begin(); strip.show(); }
تغییر رنگ LED با دستور Switch case
ساختار تصمیم Switch جهت تصمیم گیری های چندگانه بر اساس مقادیر مختلف یک عبارت استفاده میشود. به طور کلی برای تصمیم گیری هایی که بیش از سه انتخاب وجود داشته باشد، از ساختار Switch استفاده میکنیم.
Switch ( ( عبارت { Case < مقدار ۱ > : < دستورات ۱ > Break; Case < مقدار ۲ > : < دستورات ۲ > Break; . . .
سپس بر اساس دستور بالا، از دستور سوییچ کیس Switch case برای شرط گذاری استفاده میکنیم. به این صورت که با اجرای هر Case دستورات آن اجرا شده و سپس دستور بعدی اجرا میشود:
case0:
case 0: colorWipe(strip.Color( 0, 0, 0), 50); break;
case1:
case 1: colorWipe(strip.Color(175, 0, 42), 50); break;
case2:
case 2: colorWipe(strip.Color( 255, 191, 0), 50); break;
case3:
case 3: colorWipe(strip.Color( 59, 122, 87), 50); break;
به همین ترتیب سه وضعیت مختلف برای ال ای دی نئوپیکسل تعریف شده است. پس از کامپایل برنامه تمامی ال ای دی های نئوپیکسل خاموش است. با فشردن کلید در بار اول، ال ای دی ها به رنگ صورتی تغییر رنگ میدهد و به همین رنگ باقی میماند. با فشردن کلید برای بار دوم، ال ای دی ها به رنگ زرد – نارنجی تغییر رنگ میدهد و در نهایت با فشردن مجدد کلید ال ای دی ها به رنگ ارغوانی تغییر رنگ میدهد. حلقه بعدی مجدد تمامی پیکسل ها خاموش میشود. این چرخه به همین ترتیب ادامه دارد و میتوانید رنگ ها و سوییچ کیس های بیشتری در برنامه اضافه کرده و آن را تعمیم دهید.
وسایل مورد نیاز
نوار ال ای دی ۸X1 تراشه WS2812B RGB
برد آردوینو Arduino Uno R3 با تراشه R3 اورجینال
برد wemos D1 mini بر پایه ESP8266 با ۴ مگابایت حافظه فلش
۶۰رشته کابل مخصوص برد بورد جامپر breadboard
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام وقتتون بخیر خسته نباشید.. من یکسری ال ای دی تکی ws2813 دارم ک به دلیل شکستن ریسه ی ال ای دی و محل اتصال پایه روی پی سی بی مجبور به جدا سازی شدم.. ایا راه یا اموزشی هست ک من پی سی بی دستی برای تعمیر درست کنم؟؟ دیتا شیت مورد نیازم برای چینش مدار رو پیدا نکردم.. لطفا راهنماییم کنید
با سلام
کاربر گرامی این کار توسط بنده تست نشده است.
سلام و خسته نباشید
چطور میتوانم چندین نوار را به هم وصل کنم؟
با سلام
پایه DIN, DOUT جهت اتصال سری ال ای دی ها استفاده میشود. به عنوان مثال اگر بخواهید ۴ عدد ال ای دی نئوپیکسل ۸X1 را به یکدیگر متصل کنید، پایه DIN ال ای دی اول را به پایه DOUT ال ای دی دوم متصل میکنیم. به همین ترتیب روند اتصالات ادامه پیدا میکند.
سلام ببخشید برای اردوینو uon از چه تراشه های بلوتوث می توانم برای نوشتن متن یا هر پروژی استفاده کنم یا برای هر پروژی باید تراشه مخصوص انتخواب کرد ممنون میشم راهنمای کنید
با سلام
این لینک را بررسی کنید.
https://daneshjookit.com/139-%D8%A8%D9%84%D9%88%D8%AA%D9%88%D8%AB-bluetooth
سلام خسته نباشید .میخواستم ببینم که من میخواستم اینو به اردوینو نانو وصل کنم اما در اموزش نگفتید کهکدام سیم رو به کدام پایه متصل کنم و اینکه همین برنامه میشه روش اپلود کنم یا باید کد رو تغییر بدم
با سلام
کاربر گرامی تفاوتی بین پایه های آردوینو نانو و آردوینو uno وجود ندارد.
در کد این برنامه ال ای دی به پایه ی شماره ۶ متصل شده است .
نیاز به هیچ تغییری ندارد.
خیلی ممنونم از پاسختون فقط اینکه دایاگرامی هست برای این پروژه ؟ این اولین پروژه من با ال ای دی های ادرس پذیر است و خیلی آشنایی ندارم و ایا نیاز به باتری هست یا با میکرو یو اس بی هم کار میکند
؟
با سلام
فاقد دیاگرام است چون تنها سه پایه دارد.
پایه ۴ -۷ ولت DC را به پایه ۵ ولت اتصال دهید.
پایه GND را به پایه GND اتصال دهید.
پایه DIN را به پایه شماره ۶ که در برد آردوینو نانو با D6 مشخص شده است، اتصال دهید.
خیلی ممنونم
سپاس از همراهی شما
من این کد رو اپلود کردم و تا ال ای دی رو وصل کردم برد سوخت
با سلام
کد ارتباطی با سوختن قطعه ندارد. در صورت اعمال ولتاژ نامتعارف به برد و اتصال اشتباه به برد آسیب میرسد.
سلام
آیا این کد برای ال ای دی های حلقه ای هم قابل اجراست؟
با سلام
بله عملکرد ال ای دی های نئوپیکسل یکسان است.
سلام.میخواستم ببینم که مقاومتی نایز است وصل کنم یا رله ای ؟همونطور که من گفتم یکبار بردم سوخت من این رو با کابل خود اردوینو به کامپیوتر وصل میکنم مشکلی نداره ؟
با سلام
در ایم کد فقط پایه ورودی ال ای دی تعریف شده است و برای خروجی رله پایه ای تعریف نشده است. تنها کافیست پایه Din ال ای دی را به پایه ۶ دیجیتال آردوینو D6 ( طبق این کد ) وصل کنید. همچنین نیاز به هیج مقاومتی نیست. ولتاژ کاری ال ای دی بین ۴ تا ۷ ولت است و در این پروژه تغذیه VCC از پایه ۵ ولت آردوینو تامین شده است. در صورت استفاده از ولتاژی غیر از این ال ای دی آسیب خواهد دید.
با سلام میخواستم ببینم که ایا به مقاومت یا یک باتری یا اداپتوری نیاز نیست؟؟
با سلام
ولتاژی کاری ال ای دی ۴ الی ۷ ولت است و ولتاژ پیشنهادی ۵ ولت است. همچنین نیازی به مقاومت نیست.
در نظر داشته باشید جهت اتصال به میکرو پایه Din بایستی متصل باشد.
یعنی اگر مستقیم به اردوینو وصل شه و اردوینو به کامپیوتر مشکلی نیست؟و میشه از dout بجای din استفاده کرد؟
سلام میخواستم ببینم که اگه من بخوام ۲ تا از این ۸ در ۱ ها رو وصل کنم به هم فقط din و dout رو اتصال بدم یا vcc و gnd هم لازمه
با سلام
پایه های gnd را هم اتصال دهید.
خسته نباشیذ.من وقتی داشتم سیم لحیم می کردم پایه din سوخت
آیا این ال ای دی هنوز قابل استفاده است؟ از سوخت منظورم اینه که نمیشه بهش لحیم کرد و کلا کار نمی کند
با سلام
بنده متوجه منظور شما نشدم. منظور از سوختن چیست؟
به عنوان مثال اگر بخواهید ۴ عدد ال ای دی نئوپیکسل ۸X1 را به یکدیگر متصل کنید، پایه DIN ال ای دی اول را به پایه DOUT ال ای دی دوم متصل میکنیم. به همین ترتیب روند اتصالات ادامه پیدا میکند.
یک رویه فلزی داره هر پایه که در این مورد پایه din ال ای دی سوخته یعنی اصلا اون پایه کار نمیکنه
با سلام
در صورتیکه روکش جدا شده باشد ، ممکن است این مورد پیش آید.
سلام اگر بخواهیم از ال الی دی نوپیکسل حلقه ای تکی استفاده کنیم اتصالات به چه نحو است
با سلام
پایه Din به یکی از پایه های میکروکنترلر وصل کنید و پایه های تغذیه هم که مشخص است.
سلام
اگه جریان کاری led بالاتر از این میزان بود یا وات led ها بالا بود باید چه کار کرد؟
باید منبع تغذیه رو مستقیم به led متصل کنم؟
با سلام
در این آموزش حتما بایستی از ال ای دی نئوپیکسل استفاه کنید. ال ای دی های دیگر با مشخصات نیاز به بررسی دیتاشیت و استفاده از کاهنده در آردوینو دارد.
سلام و وقت بخیر
ممنون از آموزش های خوبتون
میخواستم بپرسم ما این محصول رو میتونیم با نوار ۲۸۱۳ البته با pcb کاغذی تعویض و جایگزین کنم ؟؟ یا ممکنه به هم نخورند؟؟
با سلام
متاسفانه این مورد توسط بنده تا به حال تست نشده است.
سلام خسته نباشید .اول از همه خیلی ممنونم که این سایت رو راه اندازی کردید ، معذرت میخوام من کد نویسی رو زیاد متوجه نمیشم امکانش هست که اموزش بدید اگر هم مبلغی باید پرداخت بشه هیچ مشکلی نداره .ممنون
با سلام
کاربر گرامی در این خصوص هر خط از برنامه را که متوجه نشده اید، بفرمایید تا توضیح داده شود.
سلام خانم پوربلورچیان
میشه پروژه ای بزارید که بشه به تایر های دوچرخه وصل کرد و با استفاده از وایفای یا بلوتوث بهش وصل شد و متن یا عکس که میخواهیم را روی تایر دوچرخه اجرا کند ؟؟
با سلام
ضمن تشکر از شما، مرحله ی اجرا با مرحله ی کدنویسی کاملا متفاوت است. بایستی برای اینکار یک سناریو بنویسید و سپس بر اساس آن کدنویسی را انجام دهید. مراحل پیاده سازی بر روی دوچرخه مجزا از کدنویسی است. این مورد هم امکان پذیر است. درخواست شما بررسی و در صورت امکان آموزش داده خواهد شد اما با بسیاری از آموزش هایی که در سایت منتشر شده است، به راحتی میتوانید این مورد را پیاده سازی کنید.
با سلام
خیلی ممنونم از اینکه علم و تجربتون رو به اشتراک گذاشتین
من با چندین کد و کتابخونه های مختلف امتحان کردم و کد شما هم امتحان کردم
من LED شماره ۰ رو میخوام روشن کنم مثلا رنگ زد اگه مقادیر RGB بالاتر باشن LED کناری یعنی شماره ۱ هم روشن میشه ولی اگه Brightness رو مثلا بزارم روی ۱۰ این مشکل حل میشه ولی شدت نو ضعیف هست
ممنون میشم اگه راهنمایی بفرمایین
سلام
سپاس از همراهی شما
متوجه منظور شما نشدم، لطفا کامل تر توضیح دهید.
فرض کنید برای LED شماره ۰ مقدار (۵۰,۵۰,۰) رو تنظیم میکنم تو این حالت LED شماره صفر رنگش زد میشه و بقیه LED ها خاموش هستن. ولی وقتی مقدار رو (۲۵۵,۲۵۵,۰) تنظیم میکنم هم LED شماره ۰ و هم شماره ۱ روشن میشن در صورتیکه من فقط LED شماره ۰ رو دستور روشن بودن داده بودم.
مشکل از چی میتونه باشه!؟
متوجه شدم. این مورد برای من تا به حال رخ نداده است. از چه کدی استفاده میکنید. دقت داشته باشید این ال ای دی ها به صورت ۳تایی هستند.
stray ‘\302’ in program
این ارور رو میدهstray ‘\302’ in program
چیکار کنم؟
با سلام
به نظر میرسد کتابخانه نصب نشده است. لطفا ارور کامل را ضمیمه کنید.
سلام میشه از طریق برنامه با گوشی رنگ های اونو عوض کرد
با سلام
بله اما بایستی کد را تغییر دهید.
سلام چطور میشه بدون وای فای به نئوپیکس وصل کرد از چه کدی باید استفاده کرد
با سلام
در این کد از وای فای استفاده نشده است.