Skocz do zawartości
MrRadian

Arduino i pasek LED z diodami WS2812B

Pomocna odpowiedź

Witam

 

Mam problem z paskiem led z diodami WS2812B i arduino uno. Pasek wyświetla błędne kolory, da przykładu kiedy chcę aby trzy diody zapaliły się na kolor czerwony to uzyskuję kolor czerwony niebieski oraz zielony. Dałem już rezystor na sygnał sterowania, ale nic to nie pomogło. Diody zasilałem zewnętrznym zasilaczem 5V i oczywiście GND spięte z GND arduino. Próbowałem też zmian w kodzie i dwóch różnych bibliotek ale cały czas mam ten sam problem.

Udostępnij ten post


Link to post
Share on other sites

Opornik (jaka wartość?) to nie panaceum na wszystko, jeśli podłączysz go w złym miejscu to w niczym nie pomoże. Może być wiele powodów takich problemów:

  • Zbyt długie kable - pokaż zdjęcie tego wszystkiego albo zrób schemat z zaznaczonymi odległościami i rzeczywistymi miejscami podłączenia zasilaczy, diodek, procesora, opornika itp.
  • Słaby zasilacz - mierzyłeś chociaż napięcie podczas pracy czy tylko czytasz napis na obudowie?
  • Brak pojemności blokujących zasilanie diodek - one wymagają kondensatorów 100nF podłączonych blisko paska.
  • I oczywiście zły kod, bibliotek albo Twój.

 

Udostępnij ten post


Link to post
Share on other sites

@marek1707 Testowałem różne oporniki od 220Ohm do 470Ohm

Kable długości 50 cm, ale na pasku podłączonym w odległości 10 cm mam to samo. Robiłem też testy na pasku z 30 ledami mam ten sam objaw, zasilanymi i z zasilacza i z ładowarki podpiętej pod USB. To samo.

Nie mam tych kondensatorów, zaraz je zorganizuję.

Kod jest poprawny, testuję go na ringu LED z 24 ledami o wszystko działa.

 

Udostępnij ten post


Link to post
Share on other sites

A ten ring to przypadkiem nie RGBW? Pokaż kod, bo na to że jest poprawny mamy tylko Twoje słowo.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Jeżeli mówimy o oporniku szeregowym dopasowującym impedancję nadajnika (pinu procesora) do impedancji linii przesyłowej (kabelka) to wartości powyżej 200Ω to jakiś absurd. Eksperymenty zacznij od 33R i nie wychodź powyżej 200Ω. Wszystko co dalej już tylko pogarsza sprawę, bo tworzy filtr dolnoprzepustowy a przecież potrzebujesz impulsów o szerokościach pojedynczych mikrosekund. Typowe kable typu skrętka (której powinieneś tu użyć) mają impedancje w okolicach 120Ω. Oczywiście opornik taki musi być podłączony bezpośrednio do pinu procesora, ew. do złącza Arduino tam gdzie normalnie podpinasz kabelek. Każde inne miejsce jest bez sensu. Drugą możliwością (alternatywną do szeregowego przy procku - nigdy razem) jest terminacja równoległa, czyli opornik od linii sygnałowej do masy (np. 100-150Ω) ale wtedy po stronie odbiornika czyli tuż przy wejściu pierwszej diodki.

EDIT Choć szczerze mówiąc po tym co piszesz to skłaniał bym się do podejrzeń @ethanak czyli jakieś dziwne/inne diodki. Albo inna organizacja albo inny protokół albo kondensatory.

Edytowano przez marek1707

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@ethanak @marek1707 

Używam przykładowego kodu z biblioteki NEOPIXEL

#include <Adafruit_NeoPixel.h>

#define PIN      6
#define N_LEDS 30

Adafruit_NeoPixel strip = Adafruit_NeoPixel(N_LEDS, PIN, NEO_RGB + NEO_KHZ800);

void setup() {
	strip.begin();
}

void loop() {
	chase(strip.Color(255, 0, 0)); // Red
	chase(strip.Color(0, 255, 0)); // Green
	chase(strip.Color(0, 0, 255)); // Blue
}

static void chase(uint32_t c) {
	for (uint16_t i = 0; i < strip.numPixels() + 4; i++) {
		strip.setPixelColor(i, c); // Draw new pixel
		strip.setPixelColor(i - 4, 0); // Erase pixel a few steps back
		strip.show();
		delay(25);
	}
}

Tutaj mam taki efekt że zamiast tylko np. czerwonych kolorów mam kolory czerwony, niebieski oraz zielony. Wydaje mi się że to problem z kodowaniem kolorów, bo np przejścia działają ok.

Edytowano przez MrRadian

Udostępnij ten post


Link to post
Share on other sites

Przede wszystkim dla WS2812B powinno być NEO_GRB a nie NEO_RGB (ja tak mam przynajmniej wszędzie w swoich programach), zmień i napisz jaki jest efekt.

Udostępnij ten post


Link to post
Share on other sites

Raczej nie aż tak. To na pewno RGB a nie jakiś RGBW? Ja bym spróbował NEO_RGBW albo NEO_GRBW.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Napisz odpowiedź...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...