WS2812B: büyülü RGB LED şerit

WS2812B RGB LED şerit

Elbette DIY projelerinize bir renk dokunuşu eklemeniz gerekir. Bunun için birçok yapımcı ünlü WS2812B RGB LED Şeritler, projeleriniz için çeşitli renk kontrolü ve oldukça çekici aydınlatma efektleri elde edebileceğiniz. Elbette Arduino kartları ile tam uyumlu şeritler olduğundan, onları entegre etmeye çalışırken herhangi bir sorun yaşamazsınız.

Onları içeride bulabilirsin 1 metrelik uzunluklarörneğin, sahip oldukları her metre için LED'lerin yoğunluğuna bağlı olarak değişebilseler de. Örneğin, 30 LED'den 144 LED'e kadar var. Ancak daha geniş bir yüzey elde etmek için daha uzun uzunluklara ihtiyacınız varsa, piyasada RGB LED paneller gibi başka seçenekleriniz de var ya da her zaman birkaç şerit kullanabilirsiniz ...

Bu şeritler başka bir şey değil bir dizi monte edilmiş RGB LED ve bunları şeritler halinde gruplandırmak için ortak bir destek üzerine monte edilmiştir. Ancak çalışması, ayrı RGB LED'lerle aynıdır.

WS2812B nedir?

RGB WS2812B ışıklı LED şerit

Aslında WS2812B, şeridin kendisi değil, her biri hücreler veya içeren küçük RGB LED plakalar. Şerit veya panel şeklinde gruplanabilirler, böylelikle sayıları ve şekilleri açısından çeşitli konfigürasyonlar yapabilirsiniz. Oluşturan şeritler esnek şeritlerdir, ancak WS2812B'yi olmayan PCB panellerinde de bulabilirsiniz.

İstersen cihazları bulabilirsin WS2812B ayrı olarak İhtiyacınız olan şekilleri kendiniz yaratmak için. Örneğin, bunların yaklaşık 100 birimi genellikle 10 € 'dan biraz daha pahalıdır.

rgb led şerit kesme

Ayrıca onları attığını da bilmelisin onları kesebilirsin ihtiyaç duyduğunuz her yerde bir makasla, bu onların çalışmayı bıraktığı anlamına gelmez. Böylece yalnızca ihtiyacınız olan RGB LED'lere sahip olabilirsiniz. Aslında, kesebileceğiniz bazı işaretler (üç bakır ped) vardır. Bu pedleri keserseniz, şeridin bir tarafında üç iz olur, diğerinde diğer parçaları tekrar kullanmak isterseniz, içlerinde kolay bağlantı için pimleri lehimleyebilirsiniz.

Pin çıkışı ve veri sayfası

Basit bir hücrede WS2812B

Giriş ve çıkışları ile bağımsız bir WS2812B hücresidir

Hakkında daha fazla bilgi için RGB LED şerit WS2812B Okuyabilirsin veri sayfası Her üretici tarafından sunulan, tüm çalışma aralıklarını ve sınırlarını bilmenin yanı sıra, bunları nasıl doğru şekilde kullanacağınızı öğrenmek için tüm boyut ve teknik özellik ayrıntılarına başvurabilirsiniz.

Gelince Elektriksel bağlantıBu da büyük bir sorun değil, bu şeritlerin çok fazla bilgi olmadan baştan hakim olabileceğiniz basit bir bağlantısı var. Her bir WS2812B hücresinin aslında daha fazla bağlantısı olmasına rağmen, yalnızca üç tane var ...

Sadece yapmalısın bağlamak her şeritte şeridi Arduino'dan veya farklı bir güç kaynağından 5V'ye besleyen Vcc pini, tabii ki GND'yi toprağa ve son olarak diğeri olan DI, mikrodenetleyicinin herhangi bir çıkışına giderek Şerit üzerindeki RGB LED'ler.

Bakarsan bir WS2812B hücresi Data In veya DI girişine ve Vcc ve GND güç kaynağına sahip olduğunu göreceksiniz. Daha sonra diğer üç çıkışa sahip olacak, bunlar şeridin bir sonraki hücresine bağlanacak ve bir sonraki hücrenin çıkışları bir sonraki hücrenin girişine bağlanacak ve böylece tüm şerit tamamlanana kadar devam edecek ...

Kesinlikle bu DI veya veri girişi RGB LED'lerini yapılandırmak için ilginç olan ve aynı olan, aynı bilgiyi şeritteki bir sonraki bağlantıya götüren Veri Çıkışı veya DO'ya bağlanacaktır. Ve böylece şerit boyunca yayılır.

WS2812B RGB LED Şeritleri Satın Alın

RGB LED şerit rulosu

Yapabilirsin çok yüksek olmayan bir fiyata satın al çeşitli özel mağazalarda. Bunları farklı formatlarda Amazon'da da bulabilirsiniz. Bazı örnekler:

Arduino ve WS2812B ile test etme

Arduino UNO WS2812B şeması ile

Tahmin edebileceğiniz gibi, yalnızca üç pim ile bunu yapmak çok kolaydır. arduino'ya bağlan Yukarıdaki şemada görebileceğiniz gibi. Sadece 5v ve GND'yi WS2812B şeridine ve DI'yi Arduino'da istediğiniz bir çıkışa bağlamanız gerekir. Pini değiştirirseniz, programın düzgün çalışması için kaynak kodunu da değiştirmeniz gerektiğini unutmayın.

Kütüphane kullanıldı HIZLI LED Usta işleri kolaylaştırmak ve RGB LED'leri sürmek için basit işlevler elde etmek. Arduino IDE'ye düzgün bir şekilde indirmek ve entegre etmek için, kütüphaneyi bu bağlantıdan indirin, ardından ZIP'i açın ve sıkıştırılmamış dizini veya klasörü FastLED olarak yeniden adlandırın ve ardından bu klasörü Arduino IDE kitaplıklarının kurulumunuzda kurulu olduğu yere taşıyın. Ardından Arduino IDE'yi tekrar açın ve hazır olacaktır ...

Gelince taslak koduaşağıdaki kod gibi oldukça basit olabilir. Kopyalayıp yapıştırmak istemiyorsanız zaten gelen örnekler arasında bulabilirsiniz. Bu yüzden Dosya> Örnekler> FastLED> ColorPalette'e gidin.

Pimi 14'ü örnekten diyagramda kullandığım 5'e değiştirmeyi unutmayın. Veya pin 14'e bağlanabilir ve kodu değiştirmekten kaçınabilirsiniz. Tercih ettiğiniz gibi.
#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.



İlk yorumu siz

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.