Linijka swietlna

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Add1sko
Posty: 4
Rejestracja: 31 mar 2015 17:05
Wersja środowiska: LabVIEW 2013

Linijka swietlna

Post autor: Add1sko »

Witam,
Jak zwykle raczkujacy maja wiele "glupich pytan" tak wiec poprosze o wyrozumialosc "wyjadaczy"...
Mam to szczescie, ze moge sie "pobawic"LabView 2012" bez spianania i jakichs wiekszych zobowiazan.
Postawilem sobie na razie poprzeczke na zadaniu wykonania prostej, kilku LEDowej linijki, ktora bede pozniej rozwijal w bardziej skomplikowany schemat.
Jak na obecna chwile ma to dzialac:
Zadaje wartosci kontrolka Nr_1 (dowolne "calkowite")
1) w zakresie x<=0 - kontrolka B_0 ma mrugac na czerwono, pozostale maja pozostac "martwe"
2) zmina x=1 - kontrolka B_0 ma zmienic kolor na "constant" zielony, kontrolka B_1 ma mrugac na zielono, pozostale maja pozostac "martwe"
3) zmiana x=2 - kontrolka B_0, B_1 - "constant" zielone, B_2 mruga na zielono, reszta "martwa"
4) zmiana x=3 - kontrolka B_0, B_1, B_2 - "constant" zielone, B_3 - mruga na zielono, reszta "martwa"
5) zmiana x=4 - kontrolka B_0, B_1, B_2, B_3 - "constant" zielone, B_4 - mruga na zielono, B_5 "martwa"
6) zmiana x=5 - kontrolka B_0, B_1, B_2, B_3, B_4 - "constant" zielone, B_5 - mruga na zielono,
7) zmiana x=6 - wszystkie kontrolki swieca zielono
8) opcja x=7 - dodatkowa kontrolka czerwona z napisem "zwariowales?"

Takie sobie niby banalne (niestety nie dla mnie :-( ) zadanie a kilka prob jakie zrobilem daja mi dziwne zachowanie (na schemacie zalaczylem 2 rozwiazania jakie probowalem - kontrolki B_0 - B_3 w ukladzie petli i drugie - reszta z "systemowym rozwiazaniem "blinking".
Czy ktos moglby laika (mnie) troche naprowadzic gdzie robie blad w moim schemacie ze jakos nie chce mi dzialac i ewentualnie naprostowac na co mam zwrocic uwage?
Załączniki
mrugajaca_linia.vi
Schemat_linijki
(10.03 KiB) Pobrany 316 razy
Add1sko
Posty: 4
Rejestracja: 31 mar 2015 17:05
Wersja środowiska: LabVIEW 2013

Linijka swietlna

Post autor: Add1sko »

Jako, ze wciaz dzialam znalazlem kilka swoich bledow, ale wciaz nie uzyskalem efektu koncowego ;(
Zalaczam nowa wersje moich wypocin.

Niestety juz widze ze w tej wersji kolejnosc wykonania petli nie do konca jest prawidlowa
Załączniki
mrugajaca_linia_ver_2.vi
(26.19 KiB) Pobrany 313 razy
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

Linijka swietlna

Post autor: koofaya »

Czy jesteś pewien, że do tego potrzeba 6 pętli?! Musi dać się w jednej. I te diody bym zebrał w jakiś Cluster.
Chyba, że chcesz potem rozwinąć jakieś inne funkcjonalności w każdej z nich, wtedy konieczny jest jakiś sposób zatrzymywania całego programu (notifier, jakaś zmienna).
robertmmarek
Posty: 20
Rejestracja: 03 sty 2015 11:06
Wersja środowiska: LabVIEW 2013

Re: Linijka swietlna

Post autor: robertmmarek »

Wydaje mi się, że dobrałeś nieco złą architekturę do rozwiązania. Lepszym rozwiązaniem byłoby wykorzystanie maszyny stanów dla całości (jedna pętla obsługuje wszystkie diody) lub osobnej pętli dla każdej diody (tak jak obecnie) z tym, że w każdej z tych pętli znajduje się maszyna stanów.
Add1sko
Posty: 4
Rejestracja: 31 mar 2015 17:05
Wersja środowiska: LabVIEW 2013

Linijka swietlna

Post autor: Add1sko »

wcześniej myślałem, ze da się bez pętli (pierwsza próba tak wyglądała jak część kodu w pierwszym programie) ale w zamyśle docelowo każda dioda ma pełnić "niezależne" funkcje i dlatego umieściłem je w niezależnych pętlach (które będę jeszcze rozwijał o dodatkowe funkcje).

Niestety nie mam doświadczenia w tworzeniu maszyny stanów więc nie za bardzo wiem o czym mowa ;(
Co do umieszczania wszystkich diod w jednym clustrze to tak jak pisałem muszę je mieć "dostępne niezależnie" a z tego co wiem to cluster narzuca podobne zachowanie dla wszystkich diod... (chyba, że jako laik jestem w błędzie - wtedy chętnie bym usłyszał jakąś konstruktywną podpowiedź)

Na razie walczę dalej... (sam jestem ciekaw co mi wyjdzie :-\ :-\ )
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Linijka swietlna

Post autor: PiDi »

To może garść linków na początek na zachętę:
NI Getting Started
LabVIEW Introduction Course - Three Hours
LabVIEW Introduction Course - Six Hours
Self-Paced Video Training for Students

I parę porad z rękawa:
1) Nie szalej z tymi pętlami. Jedna pętla naprawdę Ci wystarczy. Poskładaj te sześć pętli w jedną. Przy okazji pozbędziesz się local variables.
2) Nigdy, przenigdy nie używaj Abort Execution (czerwonej kropy na pasku), żeby zatrzymywać VIja. Dodaj jakiś przycisk Stop zamiast stałej False w warunku pętli. To przy okazji spowoduje, że sam szybko porzucisz użycie tylu pętli (aż nie nauczysz się sposobów komunikacji między nimi).
3) Analogicznie - nigdy, przenigdy nie używaj Run Continously.
ObrazekObrazekObrazekObrazek
robertmmarek
Posty: 20
Rejestracja: 03 sty 2015 11:06
Wersja środowiska: LabVIEW 2013

Re: Linijka swietlna

Post autor: robertmmarek »

Na szybko zrobiłem coś takiego. Myślę, że mniej więcej obrazuje ideę wykorzystania maszyny stanów w tym przypadku.
Załączniki
main.vi
(11.64 KiB) Pobrany 309 razy
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

Linijka swietlna

Post autor: koofaya »

@robertmmarek Ja uważam, że znacznie lepiej wziąć te diody w Cluster. Nie trzeba się wtedy do nich odwoływać przez referencję, a już na pewno nie trzeba wpisywać wartości przez Property Node (co jest uważane za złą praktykę programistyczną i stosuje się w ostateczności).

Odnosząc się do wątpliwości autora wątku: Cluster, w przeciwieństwie do tablicy, nie narzuca takie samego zachowania kontrolek/indykatorów, za to pozwala znacznie uporządkować schemat i ułatwić operacje na tych diodach.
robertmmarek
Posty: 20
Rejestracja: 03 sty 2015 11:06
Wersja środowiska: LabVIEW 2013

Linijka swietlna

Post autor: robertmmarek »

Property node raczej muszą być wykorzystywane z powodu wymogu zmiany koloru kontrolki. Oczywiście do zmiany wartości kontrolki property node już takie konieczne nie jest :)
Add1sko
Posty: 4
Rejestracja: 31 mar 2015 17:05
Wersja środowiska: LabVIEW 2013

Linijka swietlna

Post autor: Add1sko »

Uff, trochę się tu nazbierało informacji. #:-s
Wielkie Dzięki za podpowiedzi i za linki. Muszę teraz to przetrawić - a jest tego sporo :)
Jeszcze raz dziękuję i poproszę o trochę czasu na poprawki zanim będę mógł się pochwalić postępami
;)
ODPOWIEDZ