Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 15 lip 2025, o 12:45


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 23 cze 2014, o 19:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sie 2012
    Posty: 245
    Lokalizacja: Kielce
    Pomógł: 6

    Mam pytanie na temat generartora tablic do pwm'a wbudowanego w program mkavrcalcultor.

    Algorytm wbudowany w ten program liczy dane ze wzoru podanego przez maxima:
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Na powyższym wzorze widać że wynik są zawsze zaookrąglane w dół (INT).
    Natomiast to co jest w mkavrcalculator zaokrągla zgodnie ze zwykłymi zasadami zaookrąglania przez co w istocie współczynnik gamma jest przeszunięty w dół (względem tego co jest wyświetlone w oknie programu :gamma=2.5 schodzi do ok 2.35) - jest zauważalnie niżej niż to co używa maxim.

    maxim podaje też przykładową tablice (ja też taką wygenerowałem w konsoli dla poniżyszch danych i okazuje się że mamy tu jednak zaookrąglanie w dół):
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I teraz mój problem: 1) Czy jest lepiej jeśli używa się takiego zaookrąglania jak Mirek? Jeśli tak to dlaczego (nie wiem, może było to celowe)?
    Pytam bo nie wiem jak to liczyć.
    2) Jaki jest sens wymuszania żeby 0 było tylko na pierwszej pozycji?

    _________________
    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 20:35 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    Wojtek001 napisał(a):
    Na powyższym wzorze widać że wynik są zawsze zaookrąglane w dół (INT).
    Natomiast to co jest w mkavrcalculator zaokrągla zgodnie ze zwykłymi zasadami zaookrąglania przez co w istocie współczynnik gamma jest przeszunięty w dół (gamma=2.5 schodzi do ok 2.35) - jest zauważalnie niżej niż to co używa maxim.


    Masz rację ;) .... i sokole oko w tym sensie, że chciało ci się to sprawdzić

    Wojtek001 napisał(a):
    I teraz mój problem: Czy jest lepiej jeśli używa się takiego zaookrąglania jak Mirek? Jeśli tak to dlaczego (nie wiem, może było to celowe)?


    celowe nie było - ot po prostu zwykłe rąbnięcie i użycie właśnie funkcji zaokrąglającej tradycyjnie zamiast obcinającej to co po przecinku


    Wojtek001 napisał(a):
    Pytam bo nie wiem jak to liczyć.


    zastanów się - jakie to ma tak na prawdę znaczenie .... ?

    tzn najlepiej weź sobie diodę albo diody LED (na pojedynczej przy rozjaśnianiu i ściemnianiu musiałbyś chyba być matrixem albo jeszcze lepszym niż on, żeby wychwycić różnicę tzn TAKĄ MAŁĄ różnicę w pochyleniu krzywej gamma ;)

    Jest to praktycznie kompletnie niezauważalne dla oka ...

    oczywiście jeśli sam chcesz to liczyć to co za problem zrobić to wg wzoru maxima ;) ? albo co za problem dodać jakieś własne modyfikacje ? ... nie ma że to ZAWSZE BĘDZIE NAJLEPSZE

    zamiast teoretyzować zrób próby na żywym organizmie - przypatrz się sam, poobserwuj, zobacz jaki to ma wpływ.... Ja różnice w krzywej gamma byłem w stanie zauważyć dopiero przy długim pasku gęsto usianych diod LED gdzie jasność jednego koloru zmniejszamy liniowo gradientem .... z tym, że różnice dawało się zaobserwować gdy współczynnik gamma zmieniał się o dość ogromną wartość czyli np o 1 albo więcej niż jeden ....

    a tu mówisz o różnicy 2,5 do 2,35 ;) .... konia z rzędem stawiam temu kto szczególnie przy pojedynczej diodzie LED zauważy taką różnicę własnym okiem :lol:

    Poza tym jeśli chodzi o MkAvrCaluclator i to wbudowane narzędzie to masz tam suwak, którym możesz w pełni płynnie zmieniać krzywą wg totalnie własnego upodobania a co za tym idzie możesz sobie wręcz obserwować zmiany ON LINE jeśli wyniki będziesz od razu wgrywał do procka (tablice) ... i dopasowywał do własnych potrzeb wg własnego uznania

    bo i tak GAMMA jak wiesz - o ile widziałeś na blogu ten mój poradnik nie jest akurat na dzisiaj NAJLEPSZYM sposobem do korekcji kolorów - są lepsze algorytmy - chociażby CIELAB .... ale praktycznie nie do zaimplementowania na 8-bitowcu i ciężkie do stablicowania ... a i tak gdyby je zastosować nawet na ARM to sens byłby tylko wtedy gdybyś miał robić kalibrację jakiegoś np monitora/wyświetlacza a nie tam pojedynczych diod LED czy nawet w jakimś prostym matrycowym wyświetlaczu bo do tego wystarczy nawet byle kulawa GAMMA ;) .... nawet ręcznie rozpisana tablica bez obliczeń wg tego wzoru ...


    Reasumując - tak jak pisałem na początku - oczywiście masz rację - że powinienem był tam obcinać a nie zaokrąglać i oczywiście dla porządku w aktualizacji programu już będzie tak jak we wzorze maxima ;) więc zachowaj sobie starszą wersję programu i później porównaj na żywych LED'ach że tak powiem na ile się to zmieniło w praktyce .... bo w teorii widać różnicę ale patrząc wręcz na liczby w tablicy - dobrze się przyglądając - a oko nawet nie wyłapie różnicy w krzywej ;)

    ------------------------ [ Dodano po: 8 minutach ]

    Wojtek001 napisał(a):
    2) Jaki jest sens wymuszania żeby 0 było tylko na pierwszej pozycji?


    widzę że edytowałeś post i doszło pytanie więc podpowiadam

    tzn znowu podpowiedziałbym - że lepiej sprawdź w praktyce jaki to ma sens niż teoretyzuj - bo to chyba nie problem podłączyć jedną diodę LED do procka i zrobić jej ściemnianie i rozjaśnianie byle sprzętowym PWM'em - zgodzisz się ? ;)

    a skoro tak - to OD RAZU SAM ODPOWIEDZIAŁBYŚ SOBIE NA TO PYTANIE ;)

    ale ok zakładam że nie masz procka pod ręką i diody LED to ci podpowiem ... sens jest taki, że przy niskich wartościach PWM np 8-bitów ... te zera na początku - a bywa ich sporo w zależności od pochylenia krzywej - dają czasem przykry efekt dłuższego wygaszenia diody niezgodnego ze stałą czasową jaką przyjąłeś sobie do czasu jej ściemniania i rozjaśniania. Prościej mówiąc efekt jest taki że wydaje się że dioda gaśnie na dużo dłużej, tak jakbyś tam dał specjalnie dłuższy czas. Ale też da się to zauważyć w efekcie komety (czy tam węża) z poradników. Przy tych zerach będzie on po prostu bezczelnie krótszy panie kolego ;) i to jego długość będzie się zmieniać wraz ze zmianą współczynnika gamma. A gdy uzupełnisz jedynkami to długość będzie dla oka taka sama ;)

    za to gdy uzupełnimy te zera jedynkami przy zwykłym ściemnianiu i rozjaśnianiu pojedynczej diody LED .... a tylko pierwsza wartość pozostanie zerem - zaczyna to być przyjemne dla oka i równomierne przejścia pomiędzy MAX i MIN. Dlatego dałem taką możliwość w programie a skorzysta z niej ten kto chce po prostu mieć więcej możliwości lepszego dopasowania efektów na diodach do swoich potrzeb. To są właśnie takie moje proste modyfikacje i propozycje usprawnienia sobie pracy z diodami na co dzień ;)

    ------------------------ [ Dodano po: 11 minutach ]

    O, właśnie skompilowałem z obcinaniem wartości po przecinku i już w kolejnej wersji będą ci się zgadzać wyniki podane z MkAvrCalculatora z tablicą podaną przez ciebie z Maxima ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 20:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sie 2012
    Posty: 245
    Lokalizacja: Kielce
    Pomógł: 6

    Dzięki ;)

    _________________
    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 21:02 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    aaa zebrało się już kilka poprawek łącznie z tą gamma - więc już można zassać build 65 ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 22:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sie 2012
    Posty: 245
    Lokalizacja: Kielce
    Pomógł: 6

    Co do profilów barw to ja na razie tylko z konwersją HSV->RGB się bawiłem ,bo chciałem płynnie przelecieć po wszystkich barwach (składowa hue o 360).

    Model CIElab miałby służyć do generowania jak najbardziej płynnego przejścia pomiędzy dwoma dowolnymi brawami?
    (np korekcja GAMMA pozwala na ładne przejście pomiędzy jasnym zielonym a ciemnym zielonym ale jeśli chcemy mieć ładne przejście między pomarańczem a fioletem(używając wszystkich kanałów RGB) to musimy jeszcze użyć CIElab)

    Tylko jak przeprowadzimy transformacje CIElab -> RGB to i tak chyba na to RGB musimy nałożyć korekcje gamma?
    czyli tak by to można ująć?
    CIElab -> RGB -> GAMMA(R)+GAMMA(G)+GAMMA(b)


    Więc CIElab nie zastąpi korekcji GAMMA ? Dobrze to rozumiem?

    _________________
    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 23:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sie 2013
    Posty: 1154
    Lokalizacja: Lublin / Kraków
    Pomógł: 72

    Wojtek001 napisał(a):
    Więc CIElab nie zastąpi korekcji GAMMA ? Dobrze to rozumiem?

    Korekcja gamma koryguje nieliniową charakterystykę świecenia diod.
    HSV w połączeniu z tablicowaniem wartości PWM przez korekcję gamma daje bardzo dobre rezultaty.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 23:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sie 2012
    Posty: 245
    Lokalizacja: Kielce
    Pomógł: 6

    Tak jak pisze, używałem już HSV(+gamma na to) ale z użyciem HSV nie dało się uzyskać płynnego przejścia pomiędzy złożonymi barwami np. pomarańcz -> fiolet

    CIElab (+ gamma na to) zdaje się daje taką możliwość ,bo wyczytałem:
    Transformację tę wprowadzono w wyniku badań nad spostrzeganiem
    przez oko ludzkie różnic między barwami. Różnica pomiędzy dwiema barwami
    w przestrzeni Lab ma postać:
    DE = sqrt((DL)2 + (Da)2 + (Db)2)
    i jest odległością euklidesową pomiędzy dwoma punktami w przestrzeni trójwymiarowej.


    teraz kwestia czy jest to rzeczywiście zauważalne dla diody RGB. Oczywiście nie zamierzałbym tego liczyć w mikro kontrolerze ale stablicować gradienty.

    _________________
    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 cze 2014, o 23:51 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sie 2013
    Posty: 1154
    Lokalizacja: Lublin / Kraków
    Pomógł: 72

    HSV jest modelem opartym o stożek. Wszystkie normalne przejścia będą w jakimś stopniu krzywymi stożkowymi.
    Zagadnie które poruszasz jest bardzo ciekawe. W sumie to może wystarczy tu model RGB. (CIE będzie lepszy bo uwzględnia kwestie psychopercepyjne). W RGB mamy sześcian i w tym sześcianie (traktowanym jako przestrzeń wektorowa) można określić wektory,(przebiegające w dowolnych kierunkach wewnątrz sześcianu) które będą przejściami płynnymi między jednym a drugim kolorem.
    Nie jestem mistrzem algebry niestety, trzeba by sobie kilka rzeczy przypomnieć... ;)
    Niestety czuję, że może to wymagać trochę RAMu, być może trzeba by taki sześcian jakoś w pamięci reprezentować. 24 bitowy kolor raczej odpada bo to jest 256^3 punktów.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 cze 2014, o 00:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 01 sie 2012
    Posty: 245
    Lokalizacja: Kielce
    Pomógł: 6

    CIELab też jest opisany w trzech prostopadłych wymiarach (ale jest to nieregularna bryła).

    Chodzi o to że posługując się modelem CIElab i wędrując w przestrzeni trójwymiarowej CIElab(po tym wektorze) ze stałą prędkością płynnie zmieniamy barwy.

    Nie można tego powiedzieć o poruszaniu się w przestrzeni RGB.
    Innymi słowy każdy wektor w przestrzeni RGB charakteryzuje różna i nielinowa zależność pomiędzy szybkoscią poruszania na wektorze a szybkością subiektywnego odczucia zmiany barwy.

    W tym poście używałem już zdań twierdzących ale nie jestem specjalistą więc może ktoś inny to wyjaśni lub potwierdzi ;)


    Jeżeli jesteśmy w modelu RGB to nie trzeba być mistrzem algebry ;)
    np przechodząc z 0x0016FF do 0x0026DF

    wystarczy niezależnie liniowo zmieniać każdy kanał czyli (oczywiście częstotliwości zmiany każdego kanału mogą i zapewne będą się róźnić)
    00 -> 00
    16 -> 26
    FF -> DF
    wtedy mamy ten wektor

    Albo jeszcze prościej, szukamy sobie wzoru na prostą w układzie (x,y,z) przechodząca przez 2 dane punkty x1,y1,z1 i x2,y2,z2 i jedziemy po tej linii.
    Najprościej było by posłużyć się przedstawieniem prostej opartej na rzutach na płaszczyzny 0xy i 0xz czyli
    (x,ax+b,cx+d)
    Równania liniowe ax+b i cx+d mamy ze wzoru:
    (y-y1)*(x2-x1)=(y2-y1)*(x-x1)

    Przy CIElab trzeba by w między czasie zrobić 2 konwersje pomiędzy RGB a CIElab tak żeby poruszać się po tym wektorze w przestrzeni CIElab(na tym nam zależy) i żeby móc to wyświetlać na diodzie z kanałami RGB.

    _________________
    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO