Belferek Luty 10, 2018 Udostępnij Luty 10, 2018 Nie rozumiem Waszego toku rozumowania więc dalej będę tylko czytał by ... zrozumieć obsługę czterech przycisków 🙁 Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Luty 10, 2018 Udostępnij Luty 10, 2018 Belferek, mamy dużo nieporozumień, bo chyba każdy z nas inaczej rozumie treść tego zadania. Ja widzę co najmniej trzy: 1) czysto kombinacyjne zadanie, czyli mamy 4 przyciski, jeśli naciśniemy dokładnie jeden z pierwszej pary i jeden z drugiej uzyskujemy stan na wyjściu - po ich zwolnieniu wyjście jest wyłączane 2) układ o którym chyba pisał Marek: jeśli naciśniemy dokładnie jeden przycisk z pierwszej pary i jeden z drugiej, ustawiany jest stan wyjścia i jest utrzymywany do momentu gdy oba przyciski zostaną ponownie przyciśnięte 3) moja wersja - użykownik naciska jeden przycisk i to zostaje zapamiętane, gdy przyciśnie drugi układ daje na wyjściu określony stan. Stan jest pamięany, od tego momentu jedno naciśnięcie zmienia wyjście Jeśli są inne propozycje zrozumienia tego zadania, zapraszam do podzielenia się 🙂 Niesamowite jak proste rzeczy można skomplikować. Cytuj Link do komentarza Share on other sites More sharing options...
bear Luty 10, 2018 Autor tematu Udostępnij Luty 10, 2018 Dziękuje za tak obszerne wypowiedzi. Przechodząc do tematu to czas włączania obu wyjść może być być różny w czasie milisekund i tutaj prędkość pętli jest wystarczająca. Kolega Elvis przetłumaczył to dość czytelnie czyli: 1) użytkownik wybiera powiedzmy dla pary AB wyjście aktywne B naciskając S2 2) po jakimś czasie naciska S3 i wybiera aktywne wyjście C z pary CD Dopiero teraz następuje wysterowanie wyjść, czyli ABCD powinno mieć stan 0110 Dodam tylko że oby dwa wyjścia z pary AB nie mogą być na raz wysterowane czyli albo A albo B i dalej albo C albo D. Po wysterowaniu wyjść układ się resetuje. P Co do przycisków to będą to dokładnie przełączniki kołyskowe stałe o połączeniu 0-1 czyli albo włączone albo wyłączone. Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 10, 2018 Udostępnij Luty 10, 2018 przełączniki kołyskowe no i kolejny rodzaj przycisków - przełączniki kołyskowe 🙁 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Elvis Luty 10, 2018 Udostępnij Luty 10, 2018 Ok - to kolejne pytanie. Na wejściu jest stan 0110, wtedy na wyjściu jest 0110. Co się stanie jeśli użytkownik załączy S1, czyli na wejściu będzie: 1110 - ma być poprzeni stan (0110), czyli wyłączenie (0000). To samo jeśli wyłączy S2 - na wejściu 0010 - wracamy do 0000, czy zostaje 0110? Cytuj Link do komentarza Share on other sites More sharing options...
bear Luty 10, 2018 Autor tematu Udostępnij Luty 10, 2018 Stan wejść to 0110, użytkownik do momentu wysterowania wyjść może je dowolnie modyfikować czyli z 0110 może zmienić stan wejścia z S2 na S1 co przełoży się na stan 1010. W momencie wysterowania wyjść nie może już nic zmienić. Powiedzmy że pomiędzy wysterowaniem wejść a wysterowaniem wyjść mamy czas X zwłoki do ewentualnego "zastanowienia się". Tak może będzie to czytelniejsze. Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Luty 10, 2018 Udostępnij Luty 10, 2018 O nie, dodanie zwłoki to kolejny poziom trudności 🙂 Może zostańmy przy wersji, że stan wyjścia ustala się natychmiast. Mamy więc taki scenariusz: 1. zaczynamy od wszystkich przełączników wyłączonych S1S2S3S4 = 0000, na wyjściach są zera ABCD = 0000 2. użytkownik włącza S2, na wyjściu nic się nie zmienia, czyli wejście 0100, wyjście 0000 3. użytkownik włącza S3, ustawiane są wyjścia B i C, czyli wejście 0110, wyjście 0110 Co będzie jeśli teraz użytkownik coś przestawi? Cytuj Link do komentarza Share on other sites More sharing options...
bear Luty 10, 2018 Autor tematu Udostępnij Luty 10, 2018 Nic się nie stanie bo układ już wysteruje wyjścia i się zresetuje czekając na ponowne wysterowanie wyjść. Jeśli będziemy zmieniać stan wejść z 0110 na 1010 PRZED wysterowaniem wyjść to układ zapamiętuje ostatnią kombinację. Po wysterowaniu wyjść już nic nie można zrobić. Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Luty 10, 2018 Udostępnij Luty 10, 2018 Brzmi jak układ do dopalania rakiet blistycznych, na pewno nie pracujesz dla Kima? Ale na to chyba nie wpadliśmy, że układ raz ustawiony ma już w tym stanie zostać na zawsze... Chociaż wiadomo co trzeba zrobić 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
bear Luty 10, 2018 Autor tematu Udostępnij Luty 10, 2018 Dokładnie do rakiet ziemia-zmienia 🤣 Widzę że w programowaniu bardziej ogranicza człowieka wyobraźnia bo osobiście nie potrafię tego przełożyć na kod. Sam zamysł rozumiem i z wysterowaniem nie powinno być aż takich problemów bo wystarczy czekać na spełnienie dwóch warunków ale za piernika nie mogę dojść jak rozgryźć temat z odczytywaniem stanów wejść i sprawdzać który był "ostatni". Będę walczył Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Luty 10, 2018 Udostępnij Luty 10, 2018 Stany wejść? To chyba zwykłe piny na arduino, więc coś jak digitalRead(). Odczytujesz 4 piny i już masz stan wejść. Musisz po pierwsze pamiętać, czy już odpaliłeś rakiety - jeśli tak, to nawet nie ma co pinów odczytywać. Więc jedna zmianne bool - czy już odpalone, do tego odczyt 4 pinów i ułożenie warunków dla układu czysto kombinacyjnego. Prosta sprawa. [ Dodano: 10-02-2018, 14:27 ] Możesz na kartce rozpisać wszystkie przypadki, kiedy chcesz dopalać rakiety. Tabelka to dobre rozwiązanie, ale ja jestem leniwy, więc napiszę w skrócie: S1S2S3S4 ABCD 1 0 1 0 1010 0 1 1 0 0110 1 0 0 1 1001 0 1 0 1 0101 Możesz z tego zrobić 4 if-y, lub jednego if-a i wyrażenie dla każdego wyjścia - jak chcesz. Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 10, 2018 Udostępnij Luty 10, 2018 sprawdzać który był "ostatni" A po co to sprawdzać skoro wyjścia według tego co piszesz mają się uaktywaniać po ustaleniu stanu dwóch przycisków? Moim zdaniem tu sekwencja S1S2==S2S1 Tabelka to dobre rozwiązanie, ale ja jestem leniwy, więc napiszę w skrócie:S1S2S3S4 ABCD Czyżbym widział tabelę stanów, która była taka zła? Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Luty 10, 2018 Udostępnij Luty 10, 2018 Belferek, tabelka którą proponowałeś nie uwzględniała pamiętania że po "odpaleniu" układu jego stan jest stały i niezmienny. Dlatego była "zła". Ale to oczywiście bardzo dobre narzędzie, chociaż nie zawsze idealne - tutaj ma sens dla fragmentu kombinacyjnego, ale opisywanie nią całego układu byłoby skompliowane. Cytuj Link do komentarza Share on other sites More sharing options...
bear Luty 10, 2018 Autor tematu Udostępnij Luty 10, 2018 Skleciłem takie coś i o dziwo działa, po wysterowaniu dwóch wejść na raz nic się nie dzieje i można by to wstępnie przyjąć. Bardzo słabo to wygląda? if(przycisk1 == LOW && przycisk2 == HIGH) { Stan1 = true; Serial.println(F("Stan1")); } else if(przycisk2 == LOW && przycisk1 == HIGH) { Stan2 = true; Serial.println(F("Stan2")); } if(przycisk3 == LOW && przycisk4 == HIGH) { Stan3 = true; Serial.println(F("Stan3")); } else if(przycisk4 == LOW && przycisk3 == HIGH) { Stan4 = true; Serial.println(F("Stan4")); } Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 10, 2018 Udostępnij Luty 10, 2018 bear może ja nie jestem programistą guru ale kilka programów już popełniłem i muszę powiedzieć, że mimo chęci zrozumienia Twoich myśli nie jestem w stanie. Już dwukrotnie Ci proponowano byś przedstawił w postaci tabeli zależności jakie ma spełnić Twój program w odniesieniu do stanów S1-S4, a ty po swojemu. Piszesz, że "popełniłeś" program , który działa i chcesz odpowiedzi czy jest OK czy SŁABO lecz pokazujesz jakiś fragment i każesz zgadywać co się kryje np. pod F("Stan1") - tylko Ty wiesz. Jeśli program działa i spełnia Twoje oczekiwania to chyba o to Ci chodziło więc program jest OK. Oczywiście masz idealne przyciski, które "nie drgają" i nie spodziewasz się przypadkowych ich stanów tak jak to często bywa w rzeczywistości,. Przy ich naciskaniu użytkownik się nigdy nie pomyli i nie ma potrzeby anulowania wyboru bądź jego zatwierdzania itd. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!