آردوینو آموزش آردوینو خانه هوشمند پروژه های آردوینو

راه اندازی LED RGB addressable نواری با برد آردوینو Arduino

راه اندازی LED RGB addressable نواری با برد آردوینو Arduino دیجی اسپارک
نوشته شده توسط پریسا پوربلورچیان

اخیرا مصرف ال ای دی های نواری برای طراحی و نورپردازی و … بسیار مورد توجه قرار گرفته است. این نوع ال ای دی ها مدل های مختلفی دارند. از جمله شلنگی، شاخه ای، نواری تک رنگ، نواری RGB و نواری برنامه پذیر یا همان addressable شناخته میشوند. در بین این ها مدل addressable ویژگی های منحصر به فردی دارد. از آنجایی که شیوه فرمان به این LED از طربق موج PWM ارسال میشود. به این معنی که در یک مسیر میتوان رنگ های مختلفی را برای هر ال ای دی تعریف کرد. این موضوع باعث کارایی بیشتر و جذابیت میشود. همچنین میتوان با در کنار هم قرار دادن چند نوار از این ال ای دی یک نویسنده یا تابلو روان بسازیم. همانطور که اشاره کردم ال ای دی RGB یک نوار رنگی برنامه پذیر دارای قابلیت انعطاف پذیری، زیبا و درخشنده هستند.

 

 

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

 


ال ای دی برنامه پذیر LED RGB Addressable


LEDهای RGB قابل برنامه‌ریزی و آدرس‌پذیر (Addressable RGB) یا به عبارت دیگر LEDهای آدرس‌پذیر، از نوعی LEDها هستند که به صورت جداگانه قابل کنترل رنگ هستند. به عبارت دیگر، هر LED در این نوع سیستم قابلیت کنترل رنگ مستقل را دارد.LEDهای آدرس‌پذیر RGB دارای تراشه‌ای هستند که قابلیت ذخیره کردن دستورات کنترل رنگ را دارند. با استفاده از پروتکل‌های مختلفی مانند WS2812 و WS2813، می‌توانید رنگ هر LED را به طور جداگانه تنظیم کنید.برای استفاده از LEDهای آدرس‌پذیر RGB، شما نیاز به یک کنترل‌کننده مربوطه دارید که یک ماژول یا کنترلر است که با آن می‌توانید الگوها و رنگ‌های مورد نظر را تنظیم کنید. همچنین، نیاز به یک منبع تغذیه قابل تنظیم برای تأمین برق مورد نیاز LEDها دارید.از LEDهای آدرس‌پذیر RGB برای ایجاد اثرهای نوری پیچیده، نمایش رشته‌های رنگی و الگوهای دینامیک در برنامه‌های نورپردازی و روشنایی استفاده می‌شود. همچنین، این نوع LEDها در برخی از محصولات الکترونیکی مانند کیبوردهای بازی، کیس‌های کامپیوتر و قطعات روشنایی داخلی کاربرد دارند.

 

 

در بسیاری از مدارات LED آدرس‌پذیر، هر LED دارای یک آدرس یکتا است که به طریقه‌ای برای کنترل آن استفاده می‌شود. این آدرس در قالب یک سری بیت بوده و می‌تواند به صورت مستقیم یا غیرمستقیم (از طریق یک کنترل‌کننده مرکزی) تنظیم شود.برای کنترل LEDهای آدرس‌پذیر RGB و تغییر رنگ آن‌ها، معمولاً از پروتکل‌هایی مانند WS2812 و WS2813 استفاده می‌شود. این پروتکل‌ها اطلاعات کنترلی را به صورت سریال به هر LED ارسال می‌کنند و LED مربوطه بر اساس اطلاعات دریافتی رنگ خود را تنظیم می‌کند. با استفاده از این پروتکل‌ها، می‌توانید الگوهای نوری پیچیده را ایجاد کرده و رنگ LEDها را به طور جداگانه کنترل کنید.برنامه‌ریزی LEDهای آدرس‌پذیر RGB از طریق نرم‌افزار‌های مربوطه صورت می‌گیرد. این نرم‌افزارها به شما امکان می‌دهند الگوها، ترتیب رنگ‌ها، سرعت تغییر رنگ و سایر تنظیمات را تعیین کنید. سپس اطلاعات کنترلی توسط کنترل‌کننده ارسال می‌شود و LEDها بر اساس آن تغییر رنگ می‌دهند.LEDهای آدرس‌پذیر RGB به عنوان یکی از روش‌های پرطرفدار برای نمایش رشته‌های رنگی و ایجاد اثرهای نوری استفاده می‌شوند. آن‌ها می‌توانند در رویدادها، تئاتر، کنسرت‌ها، معابر عمومی و مکان‌های دیگر برای ایجاد جلوه‌های نوری بکار روند. همچنین، در پروژه‌های الکترونیکی سفارشی می‌توانید از LEDهای آدرس‌پذیر RGB برای ایجاد نمایشگرهای رنگی، اثرات نوری در مدل‌ها و دیگر کاربردها استفاده کنید.

 


انواع ال ای دی RGB Addressable


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

  • WS2812: این نوع LED بسیار محبوب است و به عنوان یکی از اولین LEDهای آدرس‌پذیر RGB با پروتکل سریال WS2812 شناخته می‌شود. آنها شامل یک تراشه کنترلی و یک LED رنگی است و با قابلیت کنترل مستقیم رنگ هر LED، امکان ایجاد الگوها و اثرات نوری پیچیده را فراهم می‌کنند.

  • WS2813: این نوع LED در واقع یک نسخه بهبود یافته از WS2812 است. دارای قابلیت ادامه عملکرد در صورت خرابی یک LED است. به این معنی که اگر یک LED در زنجیره خراب شود، سایر LEDها همچنان به درستی کار خواهند کرد.

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

  • SK6812: این LEDها نیز با استفاده از پروتکل سریال نوعی کار می‌کنند و قابلیت کنترل رنگ LEDها را فراهم می‌کنند. آنها از نظر عملکرد و قابلیت‌ها بسیار شبیه به WS2812 هستند.

  • LPD8806: این نوع LED نیز با استفاده از پروتکل سریال کار می‌کند و از نظر عملکرد و قابلیت‌ها به WS2812 شبیه است. اما با فرکانس بالا تراشه کنترلی، می‌توانید سرعت بالاتری در تغییر رنگ و الگوها داشته باشید.

 


بررسی پایه های ال ای دی RGB Addressable


LEDهای RGB آدرس‌پذیر (Addressable) دارای چهار پایه هستند. در ادامه، پایه‌های استاندارد برای اکثر LEDهای RGB آدرس‌پذیر را شرح می‌دهم:

  • VCC یا +۵V: این پایه به منبع تغذیه مثبت ۵ ولت متصل می‌شود. آن را می‌توان از یک منبع تغذیه جداگانه تأمین کرد یا از یک ریل ۵ ولت برق مستقیم خارجی بهره برد.
  • GND یا Ground: این پایه به سطح زمین (منفی) متصل می‌شود و برای ایجاد یک مسیر برق بسته است.
  • Data-In (DI) یا Input: این پایه به پین ورودی داده‌ها متصل می‌شود. این پین دریافت دستورات کنترل رنگ و الگوها را برای LED ارسال می‌کند.
  • Data-Out (DO) یا Output: این پایه در برخی از LEDها وجود دارد و به پایه ورودی داده LED بعدی متصل می‌شود. این ویژگی به شما امکان می‌دهد LEDها را به صورت زنجیره‌ای (daisy chain) متصل کنید و دستورات را به صورت سریال از یک LED به دیگری ارسال کنید.

در برخی از LEDهای آدرس‌پذیر RGB، به جای پایه DO، ممکن است پایه‌های دیگری مانند پایه CLK (Clock) و پایه GND برای همزمان‌سازی و کنترل بیشتر دریافت کننده داده‌ها وجود داشته باشد. در این صورت، شمای پایه‌ها ممکن است بر اساس مدل و سازنده متفاوت باشد.

 


روش اتصال ال ای دی RGB Addressable به Arduino


برای اتصال LEDهای RGB آدرس‌پذیر (Addressable) به Arduino، شما نیاز به استفاده از یک کنترل‌کننده آدرس‌پذیر مانند WS2812 یا مشابه آن دارید. دستورات کنترلی رنگ و الگوها به این کنترل‌کننده ارسال می‌شود و LEDها به طور جداگانه تغییر رنگ می‌دهند. قبل از هر چیز، شما نیاز به یک منبع تغذیه مناسب برای LEDهای آدرس‌پذیر دارید. بررسی ولتاژ مورد نیاز LEDها را (معمولاً ۵ ولت) و یک منبع تغذیه ۵ ولت مطابق با توان مورد نیازتان تهیه کنید.اتصالات فیزیکی شامل اتصال پایه‌های LED به Arduino و منبع تغذیه است. معمولاً پایه VCC LED به پین ۵ ولت Arduino و پایه GND LED به پین GND Arduino متصل می‌شود. همچنین، پایه Data-In LED به یک پین دیجیتال Arduino متصل می‌شود.برای کنترل LEDهای آدرس‌پذیر در Arduino، شما نیاز به نصب کتابخانه مربوطه دارید. یکی از کتابخانه‌های معروف برای این منظور، FastLED است. به این صورت که در برنامه Arduino IDE خود، به قسمت “Library Manager” مراجعه کرده و کتابخانه FastLED را جستجو و نصب کنید. حالا می‌توانید کد برنامه را برای کنترل رنگ و الگوهای LEDهای آدرس‌پذیر نوشته و به Arduino بارگذاری کنید. برای مثال، با استفاده از کتابخانه FastLED، شما می‌توانید رنگ LEDها را به صورت جداگانه کنترل کنید. نمونه کدی که LEDها را به رنگ قرمز تنظیم می‌کند، به شکل زیر است:

#include <FastLED.h>

#define NUM_LEDS 10  // تعداد LEDها
#define DATA_PIN 6   // پین داده متصل به LEDها

CRGB leds[NUM_LEDS];  // آرایه رنگ LEDها

void setup() {
FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);  // اضافه کردن نوع LED و پایه‌ها
}

void loop() {
// تنظیم رنگ همه LEDها به قرمز
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CRGB::Red;
}
FastLED.show();  // نمایش رنگهای تنظیم شده
delay(1000);     // تاخیر ۱ ثانیه
}

 

این مثال یک آرایه از LEDها ایجاد می‌کند و رنگ آنها را به قرمز تنظیم می‌کند. با استفاده از تابع FastLED.show()، تغییرات رنگ به LEDها ارسال می‌شود.این روش‌ها مربوط به استفاده از کتابخانه FastLED است، اما شما می‌توانید از کتابخانه‌های دیگری نیز استفاده کنید که مطابق با نیازهایتان هستند. برای پروژه خاص خود، بهتر است به منابع آموزشی و مثال‌های مربوطه مراجعه کنید و با کتابخانه‌ها و روش‌های مختلف کنترل LEDهای آدرس‌پذیر در Arduino آشنا شوید

 


 LED RGB نواری


LED های RGB درخشان ، انعطاف پذیر و آدرس پذیر بوده و کار با آن ها هیجان خاصی دارد. در هر متر این نوار، ۳۲ ال ای دی RGB وجود دارد که شما میتوانید هر LED را به طورجداگانه کنترل کنید !!! درست متوجه شدید ، این یک ال ای دی نواری دیجیتال و آدرس پذیر می باشد. با این نوار میتوانید رنگ های متنوعی از جمله قرمز ،سبز و آبی را با ۷ پایه PWM برد میکروکنترلر تنظیم نمایید. LED ها با شیفت رجیستر کنترل شده و برای راه اندازی تنها به ۲ پین PWM برای ارسال اطلاعات رنگ ها نیاز خواهند داشت. حال به بررسی تراشه LPD8806 میپردازیم.  LPD8806 با فرکانس ۱٫۲ مگاهرتز با سرعت ۷bit – PWM برای هر کانال تعریف شده و به این معنی می باشد که میتواند ۲۱ بیت رنگ در هر LED را به راحتی تشخیص دهد. هنگامیکه سطح brightnes را برای LED تنطیم کردید ، میکروکنترلر می تواند به حالت OFF رفته و دیگر کارها را انجام دهد که بدون نیاز به آپدیت مداوم و تنظیم کلاک خواهد بود.

 


وسایل مورد نیاز


آردوینو UNO R3

ال ای دی نواری برنامه پذیر

کابل مخصوص

اتصال سیم به ال ای دی نواری RGB Strip - دیجی اسپارک


اتصال نوار led rgb به آردوینو


در ابتدا ۴ سیم سوزنی را به پایه ی GND ، پایه ی دیتا (DI)، پایه ی کلاک (CI) و در اخر به پایه تغذیه ۵+ ولت لحیم و اتصال میدهیم. قبل از شروع به کار ولتاژ LED RGB را دقیقا بررسی کنید.نمونه ی استفاده شده در این آموزش از نوع ۱۲ ولت می باشد. از این رو شیوه ی اتصال کمی متفاوت است. تصویری که در زیر مشاهده میکنید برای اتصال LED نواری ۵ ولت به برد آردوینو Arduino طراحی شده است. در ادامه شیوه ی اتصال LED 12 ولت به برد آردوینو Arduino را توضیح خواهم داد.

اتصال ال ای دی نواری به آردوینو Arduino digispark

 

سیم GND را به یکی از پایه های GND آردوینو وصل میکنیم.

سیم کلاک (CI) را به پایه ی ۳ Digital PWM آردوینو وصل میکنیم.

سیم دیتا (DI) را به پایه ی ۲ Digital PWM آردوینو وصل میکنیم.

 سیم ۵+ ولت را به تغذیه ۵ ولت آردوینو وصل میکنیم. ولی در این مثال ما از ال ای دی نواری با ولتاژ ۱۲ ولت استفاده کردیم. برای جلوگیری از آسیب به برد آردوینو اتصال به زمین را به این صورت اتصال دهید. بدنه ال ای دی نواری را به همراه ولتاژ آن به آداپتور ۱۲ ولت وصل کنید. سپس از منفی آن یک خروجی به یکی از پین‌های GND آردوینو بگیرید.

اتصال پین ها به برد آردوینو Arduino - digispark

 

به دو روش می‌توانید کدها را راه اندازی کنید. اول دانلود کتابخانه است. از طریق لینک کتابخانه آردوینو  LPD8806 را دانلود کنید. این فایل باید شامل LPD8806.cpp  و LPD8806.h باشد. حال این فایل را در کتابخانه آردوینو طبق این مسیر My Documents\Arduino\libraries ذخیره نمایید. فایل را به اسم LPD8806 تغییر نام دهید. بعد از نصب کتابخانه، آردوینو خود را restart کنید. حال باید از طریق مسیر زیر به کتابخانه خود دسترسی داشته باشید : File\sketchbook\libraries\LPD8806\standtest

دوم این که کدهای زیر را کپی کنید و در نرم افزار آردوینو خودتان وارد کنید. سپس کامپایل کنید. در این مرحله طبق کد زیر میتوانید تعداد LED ها را تغییر داده و اجرا نمایید ( تعداد LED ها را مشخص کرده در این قسمت تغییر دهید )

 

محدودیت در دسترسی کامل به این مجموعه آموزش

 

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

 

 


تغییر رنگ ای دی نواری برنامه پذیر


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

colorChase(strip.Color(127, 127, 127), 50);

با تغیر هر کدام از کدها رنگ جدیدی میتوانید تولید کنید. از ویژگی ال ای دی RGB همین نکته است.

 


به روز رسانی آمورش در سال ۹۹


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

 

کتابخانه LPD6803

کتابخانه LPD6803 مناسب راها اندازی ال ای دی آدرس پذیر ۳ تایی است و لینک دانلود آن در صفحه محصول کالا در بخش دانلود قرار گرفته شده است.

نوار LED RGB آدرس پذیر ال ای دی نواری RGB با روکش ضد آب

 


کد آردوینو جدید


کد جدید بر پایه کتابخانه LPD6803 در ادامه قرار گرفته شده است. آن را کپی و به نرم افزار آردوینو Arduino انتقال دهید.

#include <TimerOne.h>
#include "LPD6803.h"


int dataPin = 2;       
int clockPin = 3;     

LPD6803 strip = LPD6803(20, dataPin, clockPin);


void setup() {
  

  
  strip.setCPUmax(50);  
  
  // Start up the LED counter
  strip.begin();

  strip.show();
}


void loop() {
 
  
  colorWipe(Color(63, 0, 0), 50);
  colorWipe(Color(0, 63, 0), 50);
  colorWipe(Color(0, 0, 63), 50);

  rainbow(50);

  rainbowCycle(50);
}

void rainbow(uint8_t wait) {
  int i, j;
   
  for (j=0; j < 96 * 3; j++) {     // 3 cycles of all 96 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel( (i + j) % 96));
    }  
    strip.show();   // write all the pixels out
    delay(wait);
  }
}


void rainbowCycle(uint8_t wait) {
  int i, j;
  
  for (j=0; j < 96 * 5; j++) {     // 5 cycles of all 96 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
     
      strip.setPixelColor(i, Wheel( ((i * 96 / strip.numPixels()) + j) % 96) );
    }  
    strip.show();   // write all the pixels out
    delay(wait);
  }
}


void colorWipe(uint16_t c, uint8_t wait) {
  int i;
  
  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}



// Create a 15 bit color value from R,G,B
unsigned int Color(byte r, byte g, byte b)
{
  
  return( ((unsigned int)g & 0x1F )<<10 | ((unsigned int)b & 0x1F)<<5 | (unsigned int)r & 0x1F);
}


unsigned int Wheel(byte WheelPos)
{
  byte r,g,b;
  switch(WheelPos >> 5)
  {
    case 0:
      r=31- WheelPos % 32;   //Red down
      g=WheelPos % 32;      // Green up
      b=0;                  //blue off
      break; 
    case 1:
      g=31- WheelPos % 32;  //green down
      b=WheelPos % 32;      //blue up
      r=0;                  //red off
      break; 
    case 2:
      b=31- WheelPos % 32;  //blue down 
      r=WheelPos % 32;      //red up
      g=0;                  //green off
      break; 
  }
  return(Color(r,g,b));
}

اتصالات همانند قبل است:

  • پایه دیتا ال ای دی به پایه شماره ۲ آردوینو متصل شده است.
  • پایه کلاک ال ای دی به پایه شماره ۳ آردوینو متصل شده است.

در صورتیکه با برد آردوینو راه اندازی می‌کنید، در نظر داشته باشید ولتاژ ورودی ال ای دی LED RGB برابر با ۱۲ ولت است و ولتاژ ورودی پایه های آردوینو ۵ ولت است و عملا امکان اتصال مستقیم به آردوینو وجود ندارد. در این صورت میتوانید از مبدل های کاهنده ولتاژ مانند LM2596 استفاده کنید.

ماژول مبدل تغذیه LM2596 کاهنده ۳ آمپری با تراشه Lm2596

 

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

 

درباره نویسنده

پریسا پوربلورچیان

تولید کننده محتوا / کارشناس IOT

زندگی یعنی پژوهش و فهمیدن چیزی جدید

تلاشم بر این است تجربیاتم در زمینه IOT‌ را به بهترین شکل با شما در میان بگذارم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۱۵۳ دیدگاه