LED WS2812B

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LED WS2812B

Post autor: niveasoft » 19 sty 2017, 22:59

pimowo pisze:Jak to zrobić aby po kliknięciu w przycisk wszystkie LEDy mrugnęły ze dwa razy na czerwono?
Ten kod aż prosi się o jakieś uproszczenie funkcjami bo tam się prawie wszystko powtarza :D
Na dodatek co 10ms sprawdzając przyciski wysyłasz potem kolejno do każdej niby diody jej kolor. To błąd.
Te diody działają tak że kiedy wysyłasz dane do, na przykład, ostatniej to wszystkie dane muszą i tak przejść przez pierwszą i druga i następną diodę.
To zmieniłoby ich kolory. Dlatego procesor trzyma kolory dla wszystkich diod i potem wysyła dane dla wszystkich diod.

Tak wiec błędem jest używanie wszędzie Send(). Wystarczy najpierw wszędzie użyć tylko Setcolor() i dane zostaną zapamiętane. Na samym końcu tylko raz użyć Send()
Dodatkowo, przyciski możesz a nawet powinieneś sprawdzać z dużą częstotliwością, ale już tak jak w przypadku wyświetlacza nie musisz tych kolorów wysyłać w kółko co 10ms.

Program zmieniłem tylko tak żebyś zrozumiał zasadę działania. Teraz działa jak odliczanie dla pików buzzera :D
Kiedy zmienia się stan przez Toggle to przy okazji ustawiana jest zmienna Change.
Kiedy ona jest większa od zera to jest pojedynczo obniżana aż do zera i przy okazji wszystkie przyciski migają co 100ms :D
Kiedy przestanie migać to zacznie normalnie sprawdzać stany co 500ms.
pimowo pisze:Kod w załączniku bo na forum nie ma zwijania kodu
Co do tego zawijania to próbuję znaleźć czas, ale z tym ostatnio krucho. Nie da się znać na wszystkim i nawet żeby zamieścić to Bascomowe kolorowanie musiałem siedzieć i się uczyć jak to zrobić. Te zawijanie to pewnie inny moduł który musiałbym dodać. Nie znam żadnego szpeca i muszę to robić sam :D
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: LED WS2812B

Post autor: pimowo » 20 sty 2017, 0:26

@niveasoft co ja bym bez Ciebie zrobił? Dzięki wielkie, jutro będę testował ;)
Awatar użytkownika
pimowo
Posty: 392
Rejestracja: 28 maja 2016, 10:07

Re: LED WS2812B

Post autor: pimowo » 20 sty 2017, 14:34

Ha! To działa ;)
Zobaczcie jeszcze na kod, czy tam nie ma za dużo skakania po programie?

Mam jeszcze jedno pytanie...
Moduł będzie miał osiem wejść i osiem wyjść, ale też będzie dziewiąty przekaźnik do sterowania kotłem gazowym.
Do czego zmierzam... Jak dodam dziewiątą diodę to jak zrobić dla niej jakiś efekt "przejścia kolorów" czy tam "przełączania kolorów"?
Chodzi mi o to, że jak będzie załączony dziewiąty przekaźnik (jak przekaźnik będzie wyłączony to ta dziewiąta dioda nie świeci wcale) to dziewiąta dioda miałaby się mienić kolorami, a to będzie znaczyło, że kocioł grzeje-bajer taki ;)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Sabre
Posty: 7
Rejestracja: 10 mar 2017, 20:10

Re: LED WS2812B

Post autor: Sabre » 10 mar 2017, 20:22

To się się z Waszego forum dowiaduję, że jest nowa wersja Bascoma i WS2812B jest w niej obsłużone biblioteką! Ja moje diody sterowałem jakąś wstawką asemblerową napisaną przez kogoś z niemieckiego forum. Ja zrobiłem lampki na choinkę z diod APA106 w mlecznej 8mm bańce, lutowałem je przez 2 tygodnie, poszło 40 metrów przewodu na nie, ale efekt końcowy powala wszystkich na kolana. Mam napisane do tego 12 czy 13 różnych podprogramów z przeróżnymi efektami typu losowe zapalanie i płynne gaszenie czy płynnie przesuwająca się tęcza po całości.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LED WS2812B

Post autor: niveasoft » 10 mar 2017, 20:44

No i bardzo fajnie jak się komuś coś chce :D Można pogratulować cierpliwości.
Obsługa w Bascom powstała własnie na podstawie tej biblioteki. Bazuje na opóźnieniach czasowych.
W wolnej chwili planuję dodać sobie wysyłanie przez UART albo SPI czy nawet wspomóc to DMA. Nie jestem jednak fanem lampek i świecidełek :D
Mam tylko 30 ledów na taśmie które ktoś mi przysłał :D Mam też małą choinke.. i detektor dźwieku... i na filmie widac co z tego wyszło :D Hahahaha

Ze względu na prawa autorskie piosenki nie było sensu umieszczać tego na YT LINK DO VIDEO



Cały układ ma "wygaszacz ekranu" czyli jak nic nie gra to mieni się jakby płatkami śniegu, ale fajnie wygląda jak szczeka pies albo trzasną jakieś drzwi :D
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: LED WS2812B

Post autor: niveasoft » 13 mar 2017, 15:06

pimowo pisze:Kod w załączniku bo na forum nie ma zwijania kodu :(
Siedziałem wczoraj do trzeciej nad ranem, ale wyświetlanie kolorowanego i zwijanego kodu zrobiłem :D

Przykład :P
  1. Sub Przygotuj_pomiar()
  2.  1wreset
  3.   1wwrite &HCC
  4.   1wwrite &H44
  5. End Sub
  6.  
  7. Sub Odczytaj_temp()
  8.  1wreset
  9.   1wwrite &HCC
  10.   1wwrite &HBE
  11.    Db(1) = 1wread(2)
  12.    T = Makeint(db(1) , Db(2))
  13.    T = T * 10
  14.    T = T / 16
  15.  
  16.    Text = Str(t)
  17.    Text = Format(text , "0.0")
  18.    Call Start_all()
  19.    Call Make_array(for_fall , Center , Scroll)
  20.  
  21. End Sub
ODPOWIEDZ