Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Arduino WS2811 sterowanie

21 Oct 2020 20:04 642 12
  • Level 3  
    Witam posiadam Arduino Uno oraz pasek LED WS2811. Chciałbym zrobić efekt włączających się diod( jednej po drugiej). Aktualnie ogarnąłem coś takiego lecz efekt nie jest zadawalający. Za wszystkie odpowiedzi z góry dziękuje.

    #include <Adafruit_NeoPixel.h>

    #define PIN 6
    #define LICZBADIOD 16

    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LICZBADIOD, PIN, NEO_GRB + NEO_KHZ800);

    void setup()
    {
    pixels.begin(); // Inicjalizacja biblioteki
    }

    void loop()
    {
    for(int i=0; i<LICZBADIOD; i++)
    {
    pixels.setPixelColor(i, 255, 255, 255); // Dioda "i" oraz skladowe R=255 G=0 B=0
    pixels.show(); // Wysylamy dane do lancucha
    delay(500); // Opoznienie 500ms przed zaswieceniem kolejnej diody
    }
    }
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Level 3  
    Po włączeniu zasilania pierwsze 9 diod się świeci a po 500ms włączają się po kolei lecz nie pojedynczo tylko potrójnie.
  • Level 38  
    Lolheadshootpl wrote:
    Po włączeniu zasilania pierwsze 9 diod się świeci a po 500ms włączają się po kolei lecz nie pojedynczo tylko potrójnie.


    To wygląda na: częściowo brak dostatecznej ilości prądu (Amperów, lub Voltów)
    Jakim zasilaczem to zasilasz?
    Pasek WS2811 potrzebuje na ogół 12V zasilana, chociaż sa wersje 5-voltowe co nie zmienia wielkości obciążenia prądowego.
    Arduino WS2811 sterowanie
    Obciążenie prądowe przy wszystkich wygaszonych diodach dla tego typu diod już na wstępie wynosi ponad 100 mA (wg. dokumentacji). Podczas świecenia każda dioda w pixlu pobiera ok.20mA, czyli masz 60mA na jeden pixel. Może być nieco mniej przy ciemniejszym lub pojedynczym kolorze wysterowania.

    Twoje wysterowanie opiewa na ‘pełny blast’ wszystkich diod w łańcuchu, mimo że zamiar w objaśnieniach mówi inaczej(!)
    pixels.setPixelColor(i, 255, 255, 255); // Dioda "i" oraz skladowe R=255 G=0 B=0
    Zatem potrzebowałbyś zasilacz 12 Voltowy o dostatecznej wydajności (zawsze wymagane jest trochę ‘nadwyżki’ mocy źródła zasilania.
    Czy takie masz zasilanie tego obwodu?
    Warte oglądnąć:
    https://www.youtube.com/watch?v=Qc2_RHYZ2T4
    https://www.youtube.com/watch?v=QnvircC22hU
    i ten tez nie zaszkodzi…
    https://www.youtube.com/watch?v=WS6FI_NyRzs

    e marcus
  • Level 3  
    Używam zasilacza laboratoryjnego 12V/5A.

    Mam pytanie co oznacza to NEO_GRB w tej linijce?

    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LICZBADIOD, PIN, NEO_GRB + NEO_KHZ800);
  • Level 38  
    Lolheadshootpl wrote:
    Używam zasilacza laboratoryjnego 12V/5A.

    Mam pytanie co oznacza to NEO_GRB w tej linijce?

    Adafruit_NeoPixel pixels = Adafruit_NeoPixel(LICZBADIOD, PIN, NEO_GRB + NEO_KHZ800);


    Dwa pierwsze argumenty są oczywiste, natomist trzeci odnosi się do typu użytego paska diod jak niżej:
    // Argument 3 = Pixel type flags, add together as needed:
    // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
    // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
    // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
    // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
    // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

    e marcus
  • Level 3  
    Czyli jak mam typ diód 5050 SMD to co powinienem wpisać?
  • Level 38  
    Lolheadshootpl wrote:
    Czyli jak mam typ diód 5050 SMD to co powinienem wpisać?

    '5050 SMD' mwi tylko o wymiarach samej LED; może to być jednego koloru na przykład białe, lub wielo kolorowe nie adresowalne diody na pasku, albo adresowalne na pasku etc.
    Na podobnym pasku możesz mieć diody 3528 (3.5mm x2.8 mm), które są bardziej energo-oszczędne lecz dają 3-krotnie mniej światła niż 5050 (5.0mm x 5.0 mm).
    Spotkasz też diody 2835 (w odróżnieniu od 3528) co nie stanowi pomyłki w druku lecz inny rodzaj konfiguracji wymiarowej diod.
    W konkretnym kontekscie zdaje się chodziło raczej o typ/rodzaj samego drivera, który może wymagać inny 'timing' w jego wysterowaniu.
    Wytestuj ten wytłuszczony parametr z listy dla WS2811....

    Każdego dnia ukazują sie nowe modele i ich kombinacje że potrzebujesz dokładnie przeanalizować oferty, zaczym zamówisz/zakupisz produkt abyś otrzymał dokładnie to co było w zamiarze projektu.

    e marcus
  • Level 3  
    Wpisywałem już NEO_KHZ400 lecz nie pomogło.
  • Level 38  
    Lolheadshootpl wrote:
    Wpisywałem już NEO_KHZ400 lecz nie pomogło.


    Powróć więc do samego początku, albo do postu gdzie zamieściłem obrazek z nie zupełnie alternatywnymi wersjami tego typu pasków WS2811.

    Zauważ że wersja 12-Voltowa (pasek) ma jeden chip IC na trzy diody RGB. Wersje ‘łańcuchowe podobne do lampek choinkowych mają indywidualny chjp dla każdej diody RGB. Jeżeli modyfikujesz swojej długości własny pasek to musisz zwrócić uwagę gdzie to przeciąć. Z tego też powodu adresujesz trzy diody w grupie zamiast spodziewanych indywidualnych adresów jak to ma miejsce dla wersji 5-voltowej lub 2812 i nowszych z indywidualnym IC dla każdej diody RGB. W zasadzie kolejnym numerem adresujesz chip IC a nie diodę.
    Więcej info znajdziesz tu:
    https://www.sdiplight.com/what-is-ws2811-and-how-to-use/

    e marcus
  • Level 3  
    A mógłbym Cię prosić o jakiś program który będzię włączał po kolei te pixele i na końcu się zatrzyma ?
  • Level 38  
    Lolheadshootpl wrote:
    A mógłbym Cię prosić o jakiś program który będzię włączał po kolei te pixele i na końcu się zatrzyma ?

    Zdaje się że nie w pełni zrozumiałeś co napisałem wyżej..
    Może troche jaśniej;
    Arduino WS2811 sterowanie
    Jeżeli ten twój pasek LED wygląda jak któryś z tych na foto, to nie ma możliwości indywidualnego adresowania pojedynczej diody!
    Możesz tylko adresować cały 3-diodowy segment z należacym do niego driverem. Zatem poprawna ilość diod w całym pasku winna być podzielna przez 3. Podział (linia cięcia) jest oznaczony w połowie styków. Twoje 16 diod w żaden sposób nie pasuje do poprawnej konfiguracji.
    W najlepszym układzie możesz mieć pięć sekcji po trzy diody z driverem, który jest adresowany w tymsamym stylu co masz w programie adresowanie diod . Sam program nie bedzie inny niż ten co masz. Zmień tylko ilość diod z 16 na 5.
    Najlepiej jednak pokaż czym dysponujesz...

    e marcus
  • Level 3  
    Ok włącza się po kolei lecz przed włączeniem białego koloru pojawiają się na diodach losowe kolory i dopiero po 1s zmienia się na właściwy. Czy tak ma być?