WS2812B: نوار جادویی LED RGB

نوار LED WS2812B RGB

مطمئناً باید به پروژه های DIY خود رنگی اضافه کنید. برای این ، بسیاری از سازندگان از معروف استفاده می کنند نوارهای LED WS2812B RGB، که با آن می توانید کنترل رنگی متنوعی و جلوه های نوری کاملاً جذاب برای پروژه های خود بدست آورید. البته آنها نوارهایی هستند که کاملاً با بردهای آردوینو سازگار هستند ، بنابراین هنگام تلاش برای ادغام آنها مشکلی نخواهید داشت.

شما میتونید اونها رو در ... پیدا کنید طول 1 متربه عنوان مثال ، اگرچه بسته به نوع تراکم LED ها برای هر متر آنها می توانند متفاوت باشند. به عنوان مثال ، از 30 LED تا 144 LED وجود دارد. با این حال ، اگر برای به دست آوردن سطح بزرگتر به طول های بیشتری احتیاج دارید ، گزینه های دیگری مانند پانل های RGB LED نیز در بازار دارید یا همیشه می توانید از چندین نوار استفاده کنید ...

این نوارها چیزی بیش نیستند مجموعه ای از LED های RGB مونتاژ شده و بر روی یک تکیه گاه مشترک سوار شده تا آنها را به صورت نوارها گروه بندی کند. اما عملکرد آن با LED های جداگانه RGB یکسان است.

WS2812B چیست؟

نوار LED روشن RGB WS2812B

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

اگر می خواهید ، می توانید دستگاه ها را پیدا کنید WS2812B جداگانه برای ایجاد اشکال مورد نیاز خودتان. به عنوان مثال ، قیمت حدود 100 واحد از آنها معمولاً کمی بیشتر از 10 یورو است.

rgb برش نوار led

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

Pinout و صفحه داده

WS2812B در یک سلول ساده

این یک سلول WS2812B مستقل با ورودی و خروجی است

برای کسب اطلاعات بیشتر در مورد نوار LED RGB WS2812B تو میتوانی بخوانی صفحه داده ارائه شده توسط هر سازنده ، در اینجا می توانید با جزئیات ابعاد و مشخصات فنی مشورت کنید تا علاوه بر دانستن همه دامنه ها و محدودیت های عملکرد ، از آنها به درستی استفاده کنید.

در Al cuanto پین اوتاین نیز یک مشکل اساسی نیست ، این نوارها یک اتصال ساده دارند که شما می توانید از ابتدا بدون دانش زیاد به آن تسلط پیدا کنید. فقط سه مورد در دسترس است ، اگرچه هر سلول WS2812B در واقع اتصالات بیشتری دارد ...

شما به سادگی باید اتصال روی هر نوار پین Vcc که نوار را از آردوینو به 5 ولت یا از منبع تغذیه متفاوت تغذیه می کند ، البته GND به زمین و در نهایت DI که دیگری است که برای فعال کردن میکروکنترلر به هر خروجی می رود. LED های RGB روی نوار.

اگر نگاه کنید یک سلول WS2812B خواهید دید که ورودی Data یا DI و منبع تغذیه Vcc و GND دارد. سپس سه خروجی دیگر خواهد داشت ، آن ها به سلول بعدی نوار وصل می شوند و سلول بعدی خروجی های خود را به ورودی بعدی متصل می کند و به همین ترتیب تا زمانی که کل نوار کامل شود ...

دقیقاً همین است DI یا ورودی داده موردی که برای پیکربندی LED های RGB جالب است و آن یکی به Data Out یا DO متصل می شود که همان اطلاعات را به پیوند بعدی در نوار منتقل می کند. و بنابراین در سراسر نوار پخش می شود.

نوارهای LED WS2812B RGB بخرید

رول نوار LED RGB

تو می توانی با قیمت نه چندان بالا خرید کنید در فروشگاه های تخصصی مختلف شما همچنین آنها را در آمازون با فرمت های مختلف دارید. برخی از نمونه ها عبارتند از:

تست با Arduino و WS2812B

Arduino UNO با طرح WS2812B

همانطور که می توانید تصور کنید ، تنها با سه پایه بسیار آسان است اتصال به arduino همانطور که در نمودار بالا مشاهده می کنید. شما فقط باید 5v و GND را به نوار WS2812B و DI را به خروجی مورد نظر در Arduino وصل کنید. به یاد داشته باشید که اگر پین خود را تغییر دهید ، باید کد منبع را نیز اصلاح کنید تا برنامه به درستی کار کند.

از کتابخانه استفاده شده است استاد FAST-LED برای سهولت کار و بدست آوردن توابع ساده برای هدایت LED های RGB. برای بارگیری و ادغام صحیح آن با Arduino IDE ، کافیست کتابخانه را از آن پیوند بارگیری کنید ، سپس ZIP را از حالت فشرده خارج کرده و نام پوشه یا پوشه باز نشده را به عنوان FastLED تغییر دهید و سپس آن پوشه را به جایی که کتابخانه های Arduino IDE در نصب شما نصب شده است ، منتقل کنید. . سپس Arduino IDE را دوباره باز کنید و آماده خواهد شد ...

در Al cuanto کد طرح، می تواند مانند کد زیر کاملاً ساده باشد. اگر نمی خواهید کپی و پیست کنید ، می توانید آن را در میان نمونه هایی که قبلاً آمده بیابید. بنابراین به File> Examples> FastLED> ColorPalette بروید.

به یاد داشته باشید که پایه 14 را از مثال به 5 تغییر دهید ، همان است که من در نمودار استفاده کردم. یا می توانید به پین ​​14 متصل شوید و از اصلاح کد خودداری کنید. همانطور که شما ترجیح می دهید.
#include <FastLED.h>

#define LED_PIN     5
#define NUM_LEDS    14
#define BRIGHTNESS  64
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];

#define UPDATES_PER_SECOND 100

// This example shows several ways to set up and use 'palettes' of colors
// with FastLED.
//
// These compact palettes provide an easy way to re-colorize your
// animation on the fly, quickly, easily, and with low overhead.
//
// USING palettes is MUCH simpler in practice than in theory, so first just
// run this sketch, and watch the pretty lights as you then read through
// the code.  Although this sketch has eight (or more) different color schemes,
// the entire sketch compiles down to about 6.5K on AVR.
//
// FastLED provides a few pre-configured color palettes, and makes it
// extremely easy to make up your own color schemes with palettes.
//
// Some notes on the more abstract 'theory and practice' of
// FastLED compact palettes are at the bottom of this file.



CRGBPalette16 currentPalette;
TBlendType    currentBlending;

extern CRGBPalette16 myRedWhiteBluePalette;
extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;


void setup() {
    delay( 3000 ); // power-up safety delay
    FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
    FastLED.setBrightness(  BRIGHTNESS );
    
    currentPalette = RainbowColors_p;
    currentBlending = LINEARBLEND;
}


void loop()
{
    ChangePalettePeriodically();
    
    static uint8_t startIndex = 0;
    startIndex = startIndex + 1; /* motion speed */
    
    FillLEDsFromPaletteColors( startIndex);
    
    FastLED.show();
    FastLED.delay(1000 / UPDATES_PER_SECOND);
}

void FillLEDsFromPaletteColors( uint8_t colorIndex)
{
    uint8_t brightness = 255;
    
    for( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending);
        colorIndex += 3;
    }
}


// There are several different palettes of colors demonstrated here.
//
// FastLED provides several 'preset' palettes: RainbowColors_p, RainbowStripeColors_p,
// OceanColors_p, CloudColors_p, LavaColors_p, ForestColors_p, and PartyColors_p.
//
// Additionally, you can manually define your own color palettes, or you can write
// code that creates color palettes on the fly.  All are shown here.

void ChangePalettePeriodically()
{
    uint8_t secondHand = (millis() / 1000) % 60;
    static uint8_t lastSecond = 99;
    
    if( lastSecond != secondHand) {
        lastSecond = secondHand;
        if( secondHand ==  0)  { currentPalette = RainbowColors_p;         currentBlending = LINEARBLEND; }
        if( secondHand == 10)  { currentPalette = RainbowStripeColors_p;   currentBlending = NOBLEND;  }
        if( secondHand == 15)  { currentPalette = RainbowStripeColors_p;   currentBlending = LINEARBLEND; }
        if( secondHand == 20)  { SetupPurpleAndGreenPalette();             currentBlending = LINEARBLEND; }
        if( secondHand == 25)  { SetupTotallyRandomPalette();              currentBlending = LINEARBLEND; }
        if( secondHand == 30)  { SetupBlackAndWhiteStripedPalette();       currentBlending = NOBLEND; }
        if( secondHand == 35)  { SetupBlackAndWhiteStripedPalette();       currentBlending = LINEARBLEND; }
        if( secondHand == 40)  { currentPalette = CloudColors_p;           currentBlending = LINEARBLEND; }
        if( secondHand == 45)  { currentPalette = PartyColors_p;           currentBlending = LINEARBLEND; }
        if( secondHand == 50)  { currentPalette = myRedWhiteBluePalette_p; currentBlending = NOBLEND;  }
        if( secondHand == 55)  { currentPalette = myRedWhiteBluePalette_p; currentBlending = LINEARBLEND; }
    }
}

// This function fills the palette with totally random colors.
void SetupTotallyRandomPalette()
{
    for( int i = 0; i < 16; i++) {
        currentPalette[i] = CHSV( random8(), 255, random8());
    }
}

// This function sets up a palette of black and white stripes,
// using code.  Since the palette is effectively an array of
// sixteen CRGB colors, the various fill_* functions can be used
// to set them up.
void SetupBlackAndWhiteStripedPalette()
{
    // 'black out' all 16 palette entries...
    fill_solid( currentPalette, 16, CRGB::Black);
    // and set every fourth one to white.
    currentPalette[0] = CRGB::White;
    currentPalette[4] = CRGB::White;
    currentPalette[8] = CRGB::White;
    currentPalette[12] = CRGB::White;
    
}

// This function sets up a palette of purple and green stripes.
void SetupPurpleAndGreenPalette()
{
    CRGB purple = CHSV( HUE_PURPLE, 255, 255);
    CRGB green  = CHSV( HUE_GREEN, 255, 255);
    CRGB black  = CRGB::Black;
    
    currentPalette = CRGBPalette16(
                                   green,  green,  black,  black,
                                   purple, purple, black,  black,
                                   green,  green,  black,  black,
                                   purple, purple, black,  black );
}


// This example shows how to set up a static color palette
// which is stored in PROGMEM (flash), which is almost always more
// plentiful than RAM.  A static PROGMEM palette like this
// takes up 64 bytes of flash.
const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM =
{
    CRGB::Red,
    CRGB::Gray, // 'white' is too bright compared to red and blue
    CRGB::Blue,
    CRGB::Black,
    
    CRGB::Red,
    CRGB::Gray,
    CRGB::Blue,
    CRGB::Black,
    
    CRGB::Red,
    CRGB::Red,
    CRGB::Gray,
    CRGB::Gray,
    CRGB::Blue,
    CRGB::Blue,
    CRGB::Black,
    CRGB::Black
};



// Additionl notes on FastLED compact palettes:
//
// Normally, in computer graphics, the palette (or "color lookup table")
// has 256 entries, each containing a specific 24-bit RGB color.  You can then
// index into the color palette using a simple 8-bit (one byte) value.
// A 256-entry color palette takes up 768 bytes of RAM, which on Arduino
// is quite possibly "too many" bytes.
//
// FastLED does offer traditional 256-element palettes, for setups that
// can afford the 768-byte cost in RAM.
//
// However, FastLED also offers a compact alternative.  FastLED offers
// palettes that store 16 distinct entries, but can be accessed AS IF
// they actually have 256 entries; this is accomplished by interpolating
// between the 16 explicit entries to create fifteen intermediate palette
// entries between each pair.
//
// So for example, if you set the first two explicit entries of a compact 
// palette to Green (0,255,0) and Blue (0,0,255), and then retrieved 
// the first sixteen entries from the virtual palette (of 256), you'd get
// Green, followed by a smooth gradient from green-to-blue, and then Blue.



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

اولین کسی باشید که نظر

نظر خود را بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند با *

*

*

  1. مسئول داده ها: میگل آنخل گاتون
  2. هدف از داده ها: کنترل هرزنامه ، مدیریت نظرات.
  3. مشروعیت: رضایت شما
  4. ارتباط داده ها: داده ها به اشخاص ثالث منتقل نمی شوند مگر با تعهد قانونی.
  5. ذخیره سازی داده ها: پایگاه داده به میزبانی شبکه های Occentus (EU)
  6. حقوق: در هر زمان می توانید اطلاعات خود را محدود ، بازیابی و حذف کنید.