Strona 1 z 1

Automat sprzedający napoje

: 28 paź 2014 17:56
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 536 razy

Automat sprzedający napoje

: 28 paź 2014 19:34
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.

Automat sprzedający napoje

: 28 paź 2014 21:47
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

Re: Automat sprzedający napoje

: 28 paź 2014 22:18
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:)

Re: Automat sprzedający napoje

: 28 paź 2014 22:58
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

Automat sprzedający napoje

: 29 paź 2014 11:19
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?

Automat sprzedający napoje

: 29 paź 2014 18:57
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.

Re: Automat sprzedający napoje

: 29 paź 2014 19:18
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