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



Teraz jest 6 cze 2026, o 15:39


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 18 gru 2015, o 08:49 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Witam
Mam mały problem.

Próbuje zrobić defekt na dwóch tablicach, mam problem z wysłaniem tego do paska.

Funkcja P Mirka do wysylania:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I teraz pytanie:

Czy jak wywolam jedna funkcje zaraz za druga:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.




Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I oczywiście dwie struktury TWSRGB1 i TWSRGB2.

Czy wysłanie 2x ws281x_asm_send powoduje miedzy nimi jakaś przerwę (interpretowaną jako reset dla ws2812)?

Obrazek

Nie ma oscyloskopu, wiec nie mam zbytnio jak to sprawdzić.
Chyba ze ktoś ma inny sposób na przechowanie i wysyłanie dwóch lub więcej efektów na raz..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 09:06 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Jakoś dziwnie to robisz. Rysujesz i wysyłasz. I tak w kółko. Po co dwa identyczne bufory?
Chyba, że jakoś dzielisz tasiemkę z diodami na osobne sekcje. Na reset potrzeba aż 50us to powinno pójść jeden bufor po drugim.

Albo zamiast pętli "for" to zmienne statyczne i timerki?

Albo w jednej pętli rysujesz dwa efekty w jednym buforze.
tu taka funkcyjka dla mojej gwiazdy 51 diod:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 09:25 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Czyli jeden bufor wystarczy, by np narysować dwa gradienty w dwie strony?
Z przenikaniem (sumowaniem się) kolorów?

Próbowałem coś takiego zrobić ale coś nie wychodzi.
A nie będzie tak, ze drugi gradient będzie nadpisywać pierwszy, tam, gdzie dane będą na tych samych pozycjach?
Zakładam ze jeden leci od końca do początku, drugi w druga stronę.
W miejscu styku dane muszą się nałożyć.

Jak to jest rozwiązane w przykładzie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 09:58 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Nie robiłem takich efektów, ale te dwa gradienty rysujesz cały czas piksel po pikselu więc na mijance jakaś tam wypadkowa wyjdzie, albo ten drugi przesłoni pierwszy. Może spróbuj wysyłać dwa razy najpierw po odrysowaniu pierwszego w buforze, a potem drugiego.

Trzeba pokombinować, czasem usilnie próbuję zrobić jakiś efekt, a wyjdzie mi coś innego jeszcze lepszego :).

Na potrzeby niektórych efektów można też porobić sobie przeróbki funkcji narzędziowych i wkładać piksel do bufora operacją "OR" np.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 12:46 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Popróbuje trochę, na razie mam linie, przesuwanie ich i radianty, fajnie jakby te komety zrobić:)
Jeszcze jedno pytanie.
Funkcja rand().

Jak można regulować jasność w tej funkcji?
Wiem ze w bibliotece jest
#define RAND_MAX 0x7FFF - czyli maksymalna liczba jaka generuje, można ja zmienić na 0xff.
Zmiana na 0x96 (150 w dec), nie przynosi efektów.
Zapis rand() % 90, za ciemno, dopiero rand() % 150 widać ze lekko się ściemniły, % 200 nic nie zmienia.

Wyczytałem:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czyli zapis rand() % 150 powinien generować liczby od 0 do 150...jednak jakoś dziwnie to działa..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 15:32 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Do tych dalszych poradników nie dotarłem niestety.
Ale ogólną jasność można dostosować korekcją gamma.
Ja to robię na etapie funkcji ws_set_pixel().

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 15:41 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Rozumiem ze masz maksymalne liczby dużo mniejsze niż 255??

Zamiast np tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 gru 2015, o 18:23 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Można sobie ręcznie w ten sposób ograniczyć, oczywiście. No ale to jest rozwiązanie na stałe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2015, o 18:08 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Ok, jednak mam z tym problem.
Chce narysować dwa gradienty, jeden leci od końca linijki, drugi od początku.
jak będę wypełniał jeden bufor, to jeden nadpisze drugi, to normalne.
Jak będę wysyłał z dwóch buforów, tez jeden nadpisze drugi przy wysyłaniu już na taśmie.

Mogę zrobić tak, ze, działają dwa gradienty ale nie przenikają się kolorami...oczywisce ten drugi wysyla swoje dane z bufora na styku..

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak to ogryźć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2015, o 19:24 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Nie mam jak sprawdzić, ale spróbuj tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2015, o 19:34 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Tez rak probowalem,pierwszy gradiend bedzie migal,poniwaz zaraz po nim wysylasz drugi,gdzie "dosylasz" zera na miescu pierwszego..malujemy od konca przeciez;)

Trzeba by sprawdzac czy w tablicy przed zaladowaniem wartosci cos jest,jesli jest to nienadpisywac zerami... Ale to niesie dodatkowy problem,jak wyzerowac;)

Mysle dalej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2015, o 19:59 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Jak wkładasz do bufora wartość pod konkretny indeks, to nie zerujesz pozostałych pozycji.
Dopiero w poniedziałek-wtorek będę mógł sprawdzić w układzie, bo aż sam jestem ciekawy jak te komety latają.
Aaa. Mrygają na mijance?

No to może w funkcjii "gradient" dać takie coś:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 gru 2015, o 20:35 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Nie.
Zapisujesz pierwszy graduent,zaczynasz od 0 do 90
Leci tak do pozycji 90
Jesli w tym czasie zaczniesz rysowac drugi gradiend od 90 do 0, to ten drugi zapisuje na pozycjach od 0 do x zera,bo nic tam nie wyswietlasz.
Wiec chwile jest 1 gradiend,drugi go kasuje, wiec migniecie masz.
Drugi rysuje sie normalnie, bo na nim konczysz i wysylasz.

Przy zapisywaniu do tablicy trzeba by sprawdzac co jest na pozycjach gradiana1, przy ladowaniu 2 go i nie pozwalac na wpisanie mniejszych wartosci, i odwrotnie dla pierwszego gradiana.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 gru 2015, o 13:25 
Offline
Użytkownik

Dołączył(a): 05 kwi 2014
Posty: 339
Pomógł: 10

Mieszanie się kolorów zrobiłem tak:
Nie wiem czy poprawnie, ale działa:)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sprawdzam co jest na miejscu w tablicy, jeśli jest mniejsze od tego co chce zapisać, to zapisuje.






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: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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