WS2812B. Կախարդական RGB LED շերտն է

WS2812B RGB LED ժապավեն

Անշուշտ, ձեր DIY նախագծերին անհրաժեշտ է գույն հաղորդել: Դրա համար շատ արտադրողներ օգտագործում են հայտնիը WS2812B RGB LED շերտեր, որի միջոցով պետք է հասնել բազմազան գույնի վերահսկողության և բավականին գրավիչ լուսային էֆեկտների ձեր նախագծերի համար: Իհարկե, դրանք շերտեր են, որոնք լիովին համատեղելի են Arduino տախտակների հետ, ուստի դրանք ինտեգրելու փորձ կատարելիս խնդիր չեք ունենա:

Դուք կարող եք գտնել դրանք այստեղից 1 մետր երկարություն, օրինակ, չնայած դրանք կարող են տարբեր լինել `կախված իրենց ունեցած յուրաքանչյուր մետրի համար LED- ների խտության տեսակից: Օրինակ, կա 30 LED- ից 144 LED: Այնուամենայնիվ, եթե ավելի մեծ մակերես ստանալու համար ձեզ ավելի երկարություններ են պետք, շուկայում ունեք նաև այլ տարբերակներ, ինչպիսիք են RGB LED վահանակները կամ միշտ կարող եք օգտագործել մի քանի ժապավեններ ...

Այս շերտերը ոչ այլ ինչ են, քան միայն հավաքված RGB LED- ների շարք և տեղադրվեց ընդհանուր հենակետի վրա, որպեսզի դրանք խմբավորվեն շերտերով: Բայց դրա գործողությունը նույնական է առանձին RGB LED- ների հետ:

Ի՞նչ է WS2812B- ը:

RGB WS2812B լուսավորված լուսադիոդային ժապավեն

Իրականում WS2812B- ն ինքը ժապավենը չէ, այլ յուրաքանչյուրը բջիջները կամ փոքր RGB LED ափսեներ, որոնք ներառում են. Դրանք կարող են խմբավորվել ժապավենի կամ վահանակի տեսքով, այնպես որ կարող եք տարբեր կազմաձևեր կատարել դրանց քանակի և ձևի տեսանկյունից: Շերտերը, որոնք կազմում են, ճկուն ժապավեններ են, բայց այդպիսի PCB վահանակների վրա կարող եք գտնել նաև WS2812B:

Եթե ​​ցանկանում եք, կարող եք գտնել սարքերը WS2812B առանձին ինքներդ ձեզ համար անհրաժեշտ ձևերը ստեղծելու համար: Օրինակ, դրանցից մոտ 100 միավորի արժեքը սովորաբար 10 եվրոյից մի փոքր ավելին է:

rgb led շերտի կտրում

Դուք նույնպես պետք է իմանաք, որ դրանք գցում եք կարող եք կտրել դրանք մկրատով, որտեղ որ պետք է, դա չի նշանակում, որ նրանք դադարում են աշխատել: Այսպիսով, դուք կարող եք ունենալ միայն անհրաժեշտ RGB LED- ները: Փաստորեն, այն ունի որոշ գծանշումներ (երեք պղնձե բարձիկներ), որոնք կարող եք կտրել: Եթե ​​դուք այս բարձիկներն եք կտրում, ապա ժապավենի մի կողմում կունենաք երեք հետք, իսկ մյուս կողմից, եթե ցանկանում եք նորից օգտագործել մյուս կտորները, դրանցում կարող եք զոդել քորոցները հեշտ կապի համար:

Pinout և տվյալների թերթ

WS2812B պարզ խցում

Դա անկախ WS2812B բջիջ է ՝ իր մուտքերով և ելքերով

Ձեր մասին լրացուցիչ տեղեկությունների համար RGB LED շերտի WS2812B Կարող եք կարդալ տվյալների թերթը Յուրաքանչյուր արտադրողի կողմից առաջարկված, այնտեղ կարող եք խորհրդակցել չափերի և տեխնիկական բնութագրերի բոլոր մանրամասների մասին ՝ իմանալու, թե ինչպես դրանք ճիշտ օգտագործել, բացի գործառնական բոլոր սահմաններն ու սահմանները իմանալուց:

Ինչ վերաբերում է pinoutԴա նույնպես մեծ խնդիր չէ, այս շերտերն ունեն մի պարզ կապ, որին կարող եք տիրապետել ի սկզբանե ՝ առանց չափազանց մեծ գիտելիքների: Առկա են միայն երեքը, չնայած յուրաքանչյուր WS2812B բջիջ իրականում ավելի շատ կապեր ունի ...

Դուք պարզապես պետք է կապել Յուրաքանչյուր շերտի վրա Vcc քորոցը, որը ժապավենը սնուցում է 5V- ին Arduino- ից կամ այլ էլեկտրասնուցումից, իհարկե GND- ից գետնին, և վերջապես DI- ն, որն այն մյուսն է, որը կուղղվի միկրոկոնտորի ցանկացած ելքին `ակտիվացնելու համար RGB LED- ները շերտի վրա:

Եթե ​​նայեք WS2812B բջիջ Դուք կտեսնեք, որ այն ունի Data In կամ DI մուտք, և Vcc և GND էլեկտրասնուցումը: Այնուհետև այն կունենա երեք այլ ելք, դրանք միացված կլինեն շերտի հաջորդ բջիջին, իսկ հաջորդ բջիջը կունենա իր ելքերը միացված հաջորդի մուտքին և այլն, մինչև ամբողջ շերտի ավարտը:

Դա հենց դա է DI կամ տվյալների մուտքագրում մեկը, որը հետաքրքիր է RGB LED- ները կազմաձևելու համար, և այդ նույնը միացված կլինի Data Out- ին կամ DO- ին, որն այդ նույն տեղեկատվությունը կտանի շերտի հաջորդ հղմանը: Եվ այսպես, այն տարածվում է ամբողջ ժապավենով:

Գնեք WS2812B RGB LED շերտեր

RGB LED շերտի գլան

Դու կարող ես գնել ոչ շատ բարձր գնով տարբեր մասնագիտացված խանութներում: Ամազոնում դրանք նույնպես ունեք տարբեր ձևաչափերով: Որոշ օրինակներ են.

Փորձարկում Arduino- ի և WS2812B- ի հետ

Arduino UNO WS2812B սխեմայով

Ինչպես պատկերացնում եք, միայն երեք քորոցով դա շատ հեշտ է միանալ arduino- ին ինչպես տեսնում եք վերը նշված գծապատկերում: Դուք պարզապես պետք է 5v և GND միացնեք WS2812B ժապավենին, իսկ DI- ն `Arduino- ի ձեր ուզած ելքին: Հիշեք, որ եթե քորոցը փոխեք, ապա պետք է նաև փոփոխեք աղբյուրի կոդը, որպեսզի ծրագիրը ճիշտ աշխատի:

Գրադարանն օգտագործվել է FAST-LED վարպետ հեշտացնել գործերը և ստանալ պարզ գործառույթներ RGB LED- ները վարելու համար: Այն ներբեռնելու և այն պատշաճ կերպով ինտեգրելու համար Arduino IDE- ին, պարզապես ներբեռնեք գրադարանը այդ հղումից, այնուհետև բացեք ZIP կոճակը և վերանվանեք չստացված գրացուցակը կամ պանակը որպես FastLED, ապա տեղափոխեք այդ թղթապանակը այնտեղ, որտեղ տեղադրված են Arduino IDE գրադարանները: , Դրանից հետո նորից բացեք Arduino IDE- ն և այն պատրաստ կլինի ...

Ինչ վերաբերում է էսքիզային ծածկագիր, դա կարող է լինել բավականին պարզ, ինչպես հետևյալ ծածկագիրը: Եթե ​​չեք ցանկանում պատճենել և տեղադրել, կարող եք գտնել այն արդեն բերված օրինակների շարքում: Այսպիսով, գնացեք Ֆայլ> Օրինակներ> FastLED> ColorPalette:

Հիշեք, որ 14-րդ քորակը փոխեք օրինակից 5-ով, որն այն է, ինչ ես օգտագործել եմ դիագրամում: Կամ կարող եք միանալ pin 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. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը: