Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

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.
Doniaczo
Posty: 6
Rejestracja: 16 gru 2015 15:52
Wersja środowiska: LabVIEW 2013

Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: Doniaczo »

Cześć wszystkim, postanowiłem trochę podłubać w LabVIEW i wykorzystać je do komunikacji z Arduino. Na youtube znalazłem pewien filmik, który stał się dla mnie inspiracją do stworzenia mojego projekciku. Oto filmik:

https://www.youtube.com/watch?v=Ec495vzNhO4

Postępuje zgodnie z filmikiem (niestety nic nie rozumiem, co ten gość gada) i instrukcjami w panelu LabVIEW. Wszystko mam odpowiednio podpięte, w Arduino odpalam LabVIEW Interface for Arduino i potem operuję już w LabVIEW. Wszystko elegancko świeci, tak jak na filmiku, mogę zapalać i gasić poszczególne diody po zrobieniu tego, co mam opisane w zakładce Initialization. Cała procedura jest jednak dość długa, a sama struktura programu jak dla mnie, nowicjusza, trochę zagmatwana i skomplikowana. Chciałbym jak na tę chwilę możliwie jak najbardziej uprościć strukturę programu. Widzę to w ten sposób, że chciałbym mieć jeden przycisk w LabVIEW, przy pomocy którego mógłbym gasić lub zapalać wszystkie diody na matrycy. Czy jest to możliwe w znacznie uproszczony sposób? Podsyłam w załączniku, co udało mi się wykombinować do tej pory, co moim zdaniem jest głównym trzonem całego programu. Jednak utknąłem w martwym punkcie, nie wiem co robić dalej, nie mam pomysłu i wiedzy. Czy byłby ktoś w stanie rozwiązać mój problem? Bardzo mi na tym zależy, zainteresował mnie ten temat i chciałbym zacząć robić coś na własną rękę poza suchym studiowaniem.
Załączniki
przyklad2.vi
(259.14 KiB) Pobrany 321 razy
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: aaddaas »

Przyglądnij się raz jeszcze filmikowi i zatrzymaj sobie np 21:10, przeczytaj co jest tam napisane. Otóż do funkcji przesyłasz tablicę dwuwierszową, w której pierwszy wiersz stanową adresy kolumny (pierwsze cztery cyfry adresu są ignorowane, więc mogą być zera lub jedynki), a drugi rząd stanowi dana, czyli stan poszczególnych ledów. Zobrazowanie masz w filmiku np 18:31, w pętli for. Osobiście uważam, że autor filmiku trochę przesadził w operacjach na tabelach, bo wystarczy zwykły index array (patrz załącznik), ale nie mam jak tego sprawdzić - może jego sposób faktycznie jest lepszy.

PS. Usuń w event Timeout - niepotrzebny Ci jest w ogóle.
PS2. Stwórz event stopujący program wrażliwy na zmianę przycisku stop
PS3. Główny event niech będzie wrażliwy na zmianę wartości tablicy Input

Sprawdź czy mam rację;)
Załączniki
arduino.png
Obrazek
Doniaczo
Posty: 6
Rejestracja: 16 gru 2015 15:52
Wersja środowiska: LabVIEW 2013

Re: Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: Doniaczo »

Okej zastosowałem się do Twoich rad, jednak nadal nic nie działa. Wyrzuciłem timeout, nie wiem jednak, jak stworzyć event "stop" stopujący program. W załączniku podsyłam, jak wygląda obecnie diagram i panel. Czy jest tam wszystko ok? Ogólnie chcę zrobić to w taki sposób, że mam przycisk w panelu. Pierwsze jego wciśnięcie powoduje zaświecenie wszystkich diód, natomiast drugie - ich zgaszenie, itd. I jeszcze jedna kwestia. W vi z tego filmiku, co podsyłałem, odpowiednie porty z matrycy są podpięte do odpowiednich pinów Arduino, tj. DIN do pinu 11, LOAD do 8 i CLK do 13. Czy jest to w jakiś sposób zadeklarowane w programie? Wydaje mi się, że najważniejszy jest port LOAD podpięty do pinu 8 i mam przeświadczenie, że jest to zdefiniowane przy funkcji Arduino SPI (constant 8). Czy pozostałe porty nie mają tu żadnego znaczenia i mogę podpiąć je gdzie chcę? I tylko definiować LOAD przy Arduino SPI?
Załączniki
prog2.jpg
prog2.jpg (55.48 KiB) Przejrzano 8427 razy
prog1.jpg
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: aaddaas »

Piny 13 oraz 11 wynikają z konstrukcji arduino. 11 odpowiada MOSI https://www.arduino.cc/en/Reference/SPI więc jeśli masz innego arduino niż uno lub Duemilanove, to może powinineś do innego się połączyć. Więcej też tutaj http://linksprite.com/wiki/index.php5?t ... Matrix_Kit

Event stop obsługuje gdy kontrolka zmieni wartość (value change). Ogólnie to rzuć okiem na program, który Ci machnąłem i sprawdź, czy wszystko rozumiesz i czy ogólnie działa w ogóle
Załączniki
przyklad2.vi
(255.29 KiB) Pobrany 313 razy
Obrazek
Doniaczo
Posty: 6
Rejestracja: 16 gru 2015 15:52
Wersja środowiska: LabVIEW 2013

Re: Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: Doniaczo »

Posiadam Arduino Uno, więc zostawiłem wszystko tak, jak miałem podłączone - LOAD na pin 8, DIN na 11 i CLK na 13. W miarę rozumiem jak to powinno działać w takiej formie, w jakiej mi to podesłałeś, za co oczywiście dziękuję. Mimo wszystko po stestowaniu nic się nie dzieje. Odpalam program, na panelu wciskam przycisk "All", jednak nic się nie dzieje, diody na matrycy nie gasną ani się nie zapalają. "Stop" funkcjonuje należycie. Nie mam pojęcia, co może być nie tak.
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: aaddaas »

A który model mikrokontrolera masz przy tej macierzy?
Działa Ci program z filmiku?
Ledy w ogóle się świecą?
Obrazek
Doniaczo
Posty: 6
Rejestracja: 16 gru 2015 15:52
Wersja środowiska: LabVIEW 2013

Re: Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: Doniaczo »

Ustawione mam tam Uno. Program z filmiku mi działa, po zrobieniu wszystkiego, co jest napisane w zakładce Initialization, zapalają się wszystkie Ledy i potem mogę gasić pojedyncze diody tam w panelu. Z mojej obserwacji wynika jeszcze, że sposób zapalenia diód opisany w Initialization nie jest jedyny. Udało mi się zaświecić całą matrycę, jeżeli w Shutdown miałem ustawione same 0, a w Display dałem 1 na końcu. Wtedy zaświeciły mi się wszystkie diody. Po zmianie wartości w Display na 0, wszystkie diody gasły. Właśnie w taki sposób chciałbym, żeby to się odbywało, jak na ten etap.
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Labview + Arduino + matryca LED 8x8 ze sterownikiem MAX7219

Post autor: aaddaas »

Ok, dodałem inicjalizację, oraz zmieniłem sposób zaświecania dla całej tablicy, spawdź czy jest jakaś reakcja
Załączniki
przyklad2.vi
(256.25 KiB) Pobrany 340 razy
Obrazek
ODPOWIEDZ