• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
WS2812b im więcej tym wolniej
#4
To jest demo do migania led. Jak chcesz użyć tego w swoim programie, który ma coś wyświetlać, obsługiwać przyciski, czujniki, to wywalasz delay, a zamiany stanu led wywołujesz co określony czas wyznaczony przez millis lub timer.
Jeden komplet danych też oczywiście jest inny dla 10/100/600 led, dla jednej led to 3 bajty, 24 bity, wysyłane z prędkością 800kHz, to jak sobie policzysz od strony LEDdla 600 da się zrobić 55FPS, i przy tej prędkości to już będzie tylko i wyłączenie cały czas wysyłanie informacji do LED, chcesz coś jeszcze zrobić w LOOP to OK, ale już FPSów będzie mniej. A jak jeszcze piny Arduino nie są w stanie ogarnąć takiej prędkości to FPS spadają odpowiednio.
Jak zmieniasz barwę 150-siątej led to nie wysyłasz danych tylko dla tej led, ale nowy stan dla wszystkich.
Przesiadka na MEGA nic nie da, bo to ta sama prędkość. Jak braknie w loop czasu na obsługę to można dać szybszy uC np. ESP8266. Jak efekt ma być szybszy to szybszy uC nic nie da, bo i tak ledy nie będą działać szybciej, każda musi odebrać swoje dane od poprzedniej led. Można ewentualnie podzielić taki duży pasek na kilka kanałów.
Efekt który fajnie wygląda na biurku ze 100 ledami pewnie nie będzie tak samo dynamiczny jak na 600 rozłożonych na ścianie budynku. Trzeba go po prostu przeliczyć tak, że jak led ma mieć tę samą prędkość kątową, to nie może co 1s przesuwać się o 1 pixel, a o 6, lub żeby był jeszcze tak samo widoczny to po prostu przesuwaj grupę 6 led.
W bibliotece fastled masz tak podany parametr delay FastLED.delay(1000 / UPDATES_PER_SECOND);. Jak zmniejszysz FPS (UPDATES_PER_SECOND) to pewnie zauważysz przyspieszenie dla 600 led.
MEGA ma więcej RAM, to może mieć znaczenie gdyby go teraz brakowało. 600x3bajty to za każdym razem do wysłania 1800, żeby było szybko przeliczenia robi się na RAM, zmienia dany pixel, a potem to 1800B ma wylecieć na pasek w postaci 14400 bitów jako nowy stan wszystkich led z prędkością 800000b/s. 200B na resztę programu to może być problem. Brak ram objawiałby się jakimiś krzakami na efektach, gdy jedne zmienne są nadpisywane losowymi z innych części programu. Pod tym kątem na pewno warto użyć przynajmniej MEGA dla takiej ilości LED.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
  


Wiadomości w tym wątku
WS2812b im więcej tym wolniej - przez adrbub - 12-12-2020, 13:49
RE: WS2812b im więcej tym wolniej - przez adrbub - 12-12-2020, 21:46
RE: WS2812b im więcej tym wolniej - przez kaczakat - 13-12-2020, 02:02
RE: WS2812b im więcej tym wolniej - przez adrbub - 13-12-2020, 19:04
RE: WS2812b im więcej tym wolniej - przez kaczakat - 13-12-2020, 23:22

Skocz do:


Przeglądający: 1 gości