Automat sprzedający napoje

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
paw39
Posty: 3
Rejestracja: 28 paź 2014 17:53
Wersja środowiska: LabVIEW 2012

Automat sprzedający napoje

Post autor: paw39 »

Cześć wszystkim!
Chcę zrobić mini projekt automatu sprzedającego. Nigdy nie miałem do czynienia z LabView. Spróbowałem swoich sił i skleiłem jeszcze nie w pełni działającą aplikację, jednak chciałbym to zrobić lepiej stąd piszę na tym forum i proszę o jakieś podpowiedzi jak to zrobić lepiej/optymalniej.

Załączam plik mojego projektu.
Untitled 1 (1) - Kopia.vi
labview 2012
(28.95 KiB) Pobrany 510 razy
Awatar użytkownika
J.Sz
Posty: 34
Rejestracja: 09 sty 2014 11:31
Wersja środowiska: LabVIEW 2014
Lokalizacja: Gliwice

Automat sprzedający napoje

Post autor: J.Sz »

Cześć,
Na początek sugeruje zapoznać się z tutorialem State Machine http://www.ni.com/white-paper/7595/en/
lub filmikiem https://www.youtube.com/watch?v=vtw6HMwaTIQ
Przydatna też będzie Event structure.
Ja tu tylko wklejam linki ale i tak możesz kliknąć pochwal ;)
paw39
Posty: 3
Rejestracja: 28 paź 2014 17:53
Wersja środowiska: LabVIEW 2012

Automat sprzedający napoje

Post autor: paw39 »

Hmm dzięki za linki ale jakoś mi ten sposób nie odpowiada. To znaczy nie pasuje do mojego założenia albo mi się tak wydaje.

To co chcę uzyskać to:
1. Wrzucanie monet symulowane przyciskami(10,20,50gr itp)
2. Następnie użytkownik wybiera produkt. Jeśli cena wrzucona kwota jest większa bądź równa cenie produktu to następuje zakup i dekrementacja ilości zakupionego produktu.

Chociaż samo wrzucanie monet, żeby mi ktoś doradził jak zrobić i zerknął jak to jest zrobione obecnie w moim pliku, będę wdzięczny. Dzięki
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Automat sprzedający napoje

Post autor: aaddaas »

To od początku:
Program wrzucamy w pętlę while, tworzymy przycisk stop do zatrzymania tej pętli. W pętli wrzucamy "wait ms" i ustalamy np 100 ms, by pętla nie kręciła się w kółko i nie zjadała wszystkich zasobów komputera. To jest właściwie podstawa wszystkich programów, w których zachodzi interakcja z użytkownikiem.

By każdorazowo zbierać dane o wrzuconych pieniądzach, przydałaby się struktura event, reagująca na każdorazowe wciśnięcie poszczególnego przycisku. Tworzymy event dla każdego przycisku i w evencie dodajemy wrzucone pieniądze, przekazywane dalej do rejestru przesuwnego (shift register). Po każdym takim evencie sprawdzamy, czy wrzucona kwota jest wystarczająca do wydania napoju.

Jest to najbardziej toporny, ale działający sposób na załatwienie początków. Jednak powinieneś się podszkolić, by móc operować na podstawach programowania w LabView, którą jest niewątpliwie State Machine, jak to kolega(koleżanka?) J.Sz polecił(a).

Polecam jednak przerobić kursy w labview, (3, 6 godzinny), bo to na prawdę przyjemne środowisko:)
Obrazek
Awatar użytkownika
J.Sz
Posty: 34
Rejestracja: 09 sty 2014 11:31
Wersja środowiska: LabVIEW 2014
Lokalizacja: Gliwice

Re: Automat sprzedający napoje

Post autor: J.Sz »

Ubiegłeś mnie, a już zacząłem się rozpisywać ;)
Zdecydowanie kolega.
Skoro kolega aaddaas wyjaśnił jak program powinien wyglądać dodam tylko mały przykład. Który możesz sobie zaadaptować.
Projekt nad którym pracujesz to typowa maszyna stanów.
Powodzenia :)
LV2012
Załączniki
automat LV2012.vi
(13.05 KiB) Pobrany 585 razy
Ja tu tylko wklejam linki ale i tak możesz kliknąć pochwal ;)
paw39
Posty: 3
Rejestracja: 28 paź 2014 17:53
Wersja środowiska: LabVIEW 2012

Automat sprzedający napoje

Post autor: paw39 »

Dzięki Wam wielkie! Bardzo mi pomogliście, zwłaszcza ten plik bo powoli zaczynam kumać ten rejestr przesuwny i eventy.

Dołożyłem Tank który pokazuje ilość herbat w automacie. Zrobiłem tak, że przy każdym zakupie ilość się dekrementuje i jest ok. Ale chcę jeszcze coś takiego zrobić, że gdy ilość w tanku = 0 to zapala się dioda obok przycisku i nie jest możliwe kupno, ewentualnie jakiś komunikat o braku herbaty. Dorobiłem proste porównanie zbiornika do 0 i nie zapala mi diody. Umieściełem to w pętli while, nie działa. W Timeout też nie działa. Czemu?
Awatar użytkownika
J.Sz
Posty: 34
Rejestracja: 09 sty 2014 11:31
Wersja środowiska: LabVIEW 2014
Lokalizacja: Gliwice

Automat sprzedający napoje

Post autor: J.Sz »

Wrzuć kod.
W timeout dioda Ci się nie zapala, bo w moim przykładzie wynosi on nieskończoność.
U góry struktury jest taka niebieska klepsydra tam sobie możesz dodać jakaś wartość timeoutu.

Żeby nie dało się kupić możesz wyłączyć możliwość kliknięcia przycisku, w tym celu użyj property node.
Kliknij na kontrolkę prawym przyciskiem myszy wybierz create-> property node -> disabled

Jeśli pomogliśmy to czujemy się zaproszeni na piwo ;) ewentualnie możesz kliknąć przycisk pochwal.
Ja tu tylko wklejam linki ale i tak możesz kliknąć pochwal ;)
Awatar użytkownika
aaddaas
Posty: 202
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Re: Automat sprzedający napoje

Post autor: aaddaas »

J.Sz pisze:Jeśli pomogliśmy to czujemy się zaproszeni na piwo ;)
Jeśli Kraków, to się można zgadać:P
Obrazek
ODPOWIEDZ