ВС2812Б: магична РГБ ЛЕД трака

ВС2812Б РГБ ЛЕД трака

Сигурно требате додати дашак боје својим самосталним пројектима. За ово многи творци користе чувене ВС2812Б РГБ ЛЕД траке, помоћу којих ћете постићи разнолику контролу боја и прилично атрактивне светлосне ефекте за своје пројекте. То су, наравно, траке у потпуности компатибилне са Ардуино плочама, тако да нећете имати проблема када их покушате интегрисати.

Можете их наћи у дужине од 1 метрана пример, иако могу да варирају у зависности од врсте густине ЛЕД диода за сваки метар који имају. На пример, постоји од 30 ЛЕД до 144 ЛЕД. Међутим, ако су вам потребне веће дужине да бисте добили већу површину, на тржишту имате и друге опције као што су РГБ ЛЕД панели или увек можете користити неколико трака ...

Ове траке нису ништа више од низ састављених РГБ ЛЕД диода и постављени на заједничку потпору како би се групирали у траке. Али његов рад је идентичан засебним РГБ ЛЕД-има.

Шта је ВС2812Б?

РГБ ВС2812Б осветљена ЛЕД трака

Заправо ВС2812Б није сама трака, већ свака од њих ћелије или мале РГБ ЛЕД плоче које укључују. Могу се груписати у облику траке или панела, тако да можете да направите различите конфигурације у погледу њиховог броја и облика. Траке које чине су флексибилне траке, али ВС2812Б можете пронаћи и на ПЦБ плочама које то нису.

Ако желите, можете пронаћи уређаје ВС2812Б одвојено да бисте сами креирали облике који су вам потребни. На пример, око 100 јединица обично коштају нешто више од 10 евра.

ргб лед сечење траке

Такође бисте требали знати да их бацате можете их исећи маказама где год вам треба, то не значи да престају да раде. Тако можете имати само РГБ ЛЕД диоде које су вам потребне. У ствари, има неке ознаке (три бакарне плочице) које можете прорезати. Ако прорежете ове јастучиће, на једној страни траке имаћете три трака, а на другој, у случају да желите да поново користите остале делове, у њих можете залемити клинове ради лакшег повезивања.

Пиноут и датасхеет

ВС2812Б у једноставној ћелији

То је независна ВС2812Б ћелија са својим улазима и излазима

За више информација о вашем РГБ ЛЕД трака ВС2812Б Можете прочитати датасхеет које нуди сваки произвођач, тамо можете консултовати све детаље о димензијама и техничким карактеристикама да бисте знали како их правилно користити, поред тога што знате све радне домете и ограничења.

Као пиноутНи то није главни проблем, ове траке имају једноставну везу коју можете савладати од почетка без превише знања. На располагању су само три, мада свака ВС2812Б ћелија заправо има више веза ...

Једноставно мораш повежите се на свакој траци Вцц пин који напаја траку на 5В од Ардуина или од другог напајања, ГНД до земље, наравно, и на крају ДИ који је други који ће ићи на било који излаз микроконтролера да би активирао РГБ ЛЕД на траци.

Ако погледате ћелија ВС2812Б Видећете да има улаз података или улаз ДИ и напајање Вцц и ГНД. Тада ће имати још три излаза, они ће бити повезани са следећом ћелијом траке, а следећа ћелија ће имати излазе повезане са улазом следеће и тако даље све док цела трака не буде завршена ...

Управо је то ДИ или унос података онај који је занимљив за конфигурисање РГБ ЛЕД диода, и тај исти ће бити повезан на Дата Оут или ДО који ће те исте информације одвести на следећу везу у траци. И тако се шири кроз траку.

Купите ВС2812Б РГБ ЛЕД траке

РГБ трака са ЛЕД траком

Можете купујте по не превисокој цени у разним специјализованим продавницама. Имате их и на Амазону у различитим форматима. Неки примери су:

Тестирање са Ардуином и ВС2812Б

Arduino UNO са шемом ВС2812Б

Као што можете да замислите, са само три пина је врло лако повежите се са ардуином као што видите на дијаграму изнад. Само треба да повежете 5в и ГНД на траку ВС2812Б, а ДИ на излаз који желите на Ардуину. Имајте на уму да ако промените пин, морате изменити и изворни код како би програм исправно функционисао.

Библиотека је коришћена ФАСТ-ЛЕД Мастер да бисте олакшали ствари и добили једноставне функције за управљање РГБ ЛЕД диодама. Да бисте га преузели и правилно интегрисали у Ардуино ИДЕ, само преузмите библиотеку са те везе, затим распакујте ЗИП и преименујте распаковани директоријум или фасциклу у ФастЛЕД, а затим преместите ту фасциклу тамо где су инсталиране Ардуино ИДЕ библиотеке у вашој инсталацији . Затим поново отворите Ардуино ИДЕ и биће спреман ...

Као скица код, може бити прилично једноставно попут следећег кода. Ако не желите да копирате и налепите, можете га пронаћи међу примерима који већ долазе. Дакле, идите на Датотека> Примери> ФастЛЕД> ЦолорПалетте.

Не заборавите да промените пин 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. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.