WS2812B: чароўная RGB-святлодыёдная стужка

WS2812B RGB святлодыёдная стужка

Безумоўна, вам трэба дадаць колеру ў свае праекты "зрабі сам". Для гэтага многія вытворцы выкарыстоўваюць знакамітае WS2812B RGB святлодыёдныя стужкі, з дапамогай якога можна дасягнуць разнастайнага кантролю колеру і даволі прывабных светлавых эфектаў для вашых праектаў. Зразумела, гэта палоскі, цалкам сумяшчальныя з платамі Arduino, таму ў вас не будзе праблем пры іх інтэграцыі.

Вы можаце знайсці іх у даўжыня 1 метрнапрыклад, хаця яны могуць вар'іравацца ў залежнасці ад тыпу шчыльнасці святлодыёдаў для кожнага лічыльніка, які ў іх ёсць. Напрыклад, ёсць ад 30 святлодыёдаў да 144 святлодыёдаў. Аднак, калі вам патрэбна большая даўжыня для атрымання большай паверхні, на рынку ёсць таксама іншыя варыянты, такія як святлодыёдныя панэлі RGB, альбо вы заўсёды можаце выкарыстоўваць некалькі палос ...

Гэтыя палоскі - не што іншае, як серыя сабраных RGB-святлодыёдаў і ўсталяваны на агульнай апоры, каб згрупаваць іх у палоскі. Але яго праца ідэнтычная асобным RGB-святлодыёдам.

Што такое WS2812B?

Святлодыёдная стужка з падсветкай RGB WS2812B

На самай справе WS2812B - гэта не сама паласа, а кожная клеткі альбо невялікія RGB-святлодыёдныя пласціны, якія ўключаюць. Іх можна згрупаваць у выглядзе паласы або панэлі, так што вы можаце зрабіць розныя канфігурацыі з пункту гледжання іх колькасці і формы. Палоскі, якія ўваходзяць у склад, з'яўляюцца гнуткімі палоскамі, але вы таксама можаце знайсці WS2812B на панэлях друкаваных плат, якія не з'яўляюцца.

Калі вы хочаце, вы можаце знайсці прылады WS2812B асобна каб стварыць патрэбныя вам формы самі. Напрыклад, каля 100 адзінак з іх звычайна каштуюць крыху больш за 10 еўра.

рэзанне палоскі пры дапамозе rgb

Вы таксама павінны ведаць, што кідаеце іх іх можна парэзаць нажніцамі, дзе вам трэба, гэта не азначае, што яны перастаюць працаваць. Такім чынам, вы можаце мець толькі патрэбныя RGB-святлодыёды. На самай справе на ім ёсць некаторыя маркіроўкі (тры медныя калодкі), якія можна прарэзаць. Калі вы прарэжаце гэтыя калодкі, у вас будзе тры дарожкі з аднаго боку паласы, а з іншага - у выпадку, калі вы хочаце паўторна выкарыстоўваць астатнія часткі, у іх вы можаце ўпаяць штыфты для зручнасці падлучэння.

Распінаванне і табліца дадзеных

WS2812B у простай клетцы

Гэта незалежная ячэйка WS2812B са сваімі ўваходамі і выхадамі

Для атрымання дадатковай інфармацыі пра ваш RGB святлодыёдная стужка WS2812B Вы можаце чытаць табліца дадзеных прапануецца кожным вытворцам, там вы можаце пракансультавацца з усімі дэталямі памераў і тэхнічных характарыстык, каб ведаць, як правільна імі карыстацца, акрамя таго, каб ведаць усе працоўныя дыяпазоны і абмежаванні.

Адносна цоколевкаГэта таксама не асноўная праблема, гэтыя палоскі маюць простае злучэнне, якое можна авалодаць з самага пачатку без лішніх ведаў. Даступна толькі тры, хаця ў кожнай ячэйцы WS2812B больш сувязяў ...

Вы проста павінны падключыце на кожнай паласе штыфт Vcc, які падае паласу на 5 В ад Arduino альбо іншы крыніца харчавання, GND да зямлі, вядома, і, нарэшце, DI, які з'яўляецца іншым, які будзе ісці на любы выхад мікракантролера для актывацыі RGB Святлодыёды на паласе.

Калі паглядзець ячэйка WS2812B Вы ўбачыце, што ў яго ёсць уваход Data In або DI, а таксама крыніца харчавання Vcc і GND. Тады ў яго будуць тры іншыя выхады, тыя будуць падлучаны да наступнай ячэйкі паласы, а наступныя ячэйкі будуць мець выхады, падлучаныя да ўваходу наступнай і гэтак далей, пакуль не будзе завершана ўся паласа ...

Якраз гэта DI або ўвод дадзеных той, які цікавы для наладжвання RGB-святлодыёдаў, і той самы будзе падлучаны да Data Out альбо DO, які будзе весці тую самую інфармацыю да наступнай спасылкі ў паласе. І таму ён распаўсюджваецца па ўсёй паласе.

Купіце святлодыёдныя стужкі WS2812B RGB

RGB святлодыёдны рулон

Ты можаш купляйце па не занадта высокай цане у розных спецыялізаваных крамах. Яны таксама ёсць у Amazon у розных фарматах. Некалькі прыкладаў:

Тэставанне з Arduino і WS2812B

Arduino UNO са схемай WS2812B

Як вы можаце сабе ўявіць, толькі з трыма шпількамі гэта вельмі проста падключыцца да arduino як вы можаце бачыць на схеме вышэй. Вам проста трэба падключыць 5v і GND да паласы WS2812B, а DI да выхаду, які вы хочаце на Arduino. Памятаеце, што калі вы мяняеце пін, вы таксама павінны змяніць зыходны код, каб праграма працавала належным чынам.

Бібліятэка была выкарыстана FAST-LED Майстар каб зрабіць усё прасцей і атрымаць простыя функцыі для кіравання RGB-святлодыёдамі. Каб загрузіць яго і правільна інтэграваць у IDE Arduino, проста загрузіце бібліятэку па гэтай спасылцы, потым распакуйце ZIP і перайменавайце разархіваваны каталог ці тэчку ў FastLED, а затым перанясіце гэтую тэчку туды, дзе ў вашай інсталяцыі ўстаноўлены бібліятэкі Arduino IDE. . Затым зноў адкрыйце IDE Arduino, і ён будзе гатовы ...

Адносна код эскіза, гэта можа быць вельмі проста, як наступны код. Калі вы не хочаце капіяваць і ўстаўляць, вы можаце знайсці яго сярод прыкладаў, якія ўжо ёсць. Такім чынам, перайдзіце ў меню Файл> Прыклады> 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 Networks (ЕС)
  6. Правы: у любы час вы можаце абмежаваць, аднавіць і выдаліць сваю інфармацыю.