Skocz do zawartości

Korekcja gamma dla taśm LED


Pomocna odpowiedź

Napisano

Cześć, problem jak w temacie. Organoleptycznie sprawdzając zwykłe ++ dla taśm led od 0 do 255 powoduje, że widzimy gwałtowne zmiany przy niskich wartościach, a niezauważalne przy wyższych.

Jak to programowo ogarnąć by zrozumieć problem i oszukać oko. Nie chcę używać biblioteki, chcę to zrozumieć i posmakować.

  • Lubię! 1
(edytowany)

Dla małych mikrokontrolerów(tj: z małą ilością pamięci) generuje się tablice korekcyjne, taka tablica ma z góry określony rozmiar przez co diody steruje się krokami na przykład tablica ma zapisane 64 wartości PWM i wtedy nie generujesz sygnału 0...255 a wybierasz jedną z wartości w tablicy. Dla układów o większej pojemności zapewne są dostępne algorytmy które przeliczają wybraną barwę na bieżąco. 

Tu przykład takiego generatora https://victornpb.github.io/gamma-table-generator/

Edytowano przez _LM_
  • Lubię! 2

No dobra ale jak to zrobić, tak jak pisze @_LM_ wywoływać tablicę, czy no. od 0 do 30 skok o 1 potem do 90 skok o 2, do 128 skok o 3, a później do 255 skok o 6. 
Jak to napisać?

Ok, będę kombinował.

Inne pytanie, tutaj rośniemy do 255, a i w generatorze i w przykładach różnych bibliotek widzę dużo wyższe wartości maksymalne zależne od rozdzielczości (?) pwm, 8bit, 12bit(?).

O co chodzi? Jak to ustawić w esp32? Wtedy fading jest płynniejszy?

10 minut temu, SOYER napisał:

maksymalne zależne od rozdzielczości (?) pwm, 8bit, 12bit(?)

Dokładnie tak jest, przecież jeśli masz PWM 8 bit to nie uda Ci się załadować tam większej wartości, tak samo dla popularnych diod ws2812 - ich max to właśnie 255 czyli 8bitów. 

12 minut temu, SOYER napisał:

O co chodzi? Jak to ustawić w esp32?

tu musisz doprecyzować pytanie bo nie bardzo wiem jak się odnieść 

(edytowany)
3 godziny temu, SOYER napisał:

Jak to napisać?

To nie jest tak że "skok co ileś" tylko każdy stopień jest X razy jaśniejszy od poprzedniego. Np. różnica między 1 a dwa jest taka sama jak między 128 a 255 (no, prawie).

Spróbuj zapuścić taki programik w pythonie:

#!/usr/bin/env python3

n=63    # ilość kroków ogólnie minus 1
q=8     # ilość kroków na podwojenie jasności
for i in range(n):
    p=255 * (2**(i/q) /(2**((n-1)/q)))
    print ("%02d: %3.2f" % (i+1,p))

Dostaniesz w wyniku współczynniki wypełnienia 8-bitowego PWM... niestety, jako floaty które przynajmniej w początkowym zakresie niespecjalnie dadzą się przełożyć na inty.  Ale przynajmniej będziesz wiedział, jakie wartości powinny znaleźć się w tablicy. Poeksperymentuj jeszcze z wartością q (nie musi być całkowita)...

I dopiero do tego można zastosować korekcję gamma.

A jakbyś płakał że osiem bitów to mało... spójrz przed siebie: Twój monitor ma właśnie 8 bitów na kolor...

Edytowano przez ethanak
  • Lubię! 1
8 godzin temu, ethanak napisał:

Twój monitor ma właśnie 8 bitów na kolor...

Żeby jeszcze miał 8 bitów, to dobrze. Pewnie będzie miał 6 i przełączał między wyższym a niższym kolorem, żeby uzyskać ten pośredni nieobsługiwany.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...