Jednokrotne wykonanie poleceń - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino) +--- Wątek: Jednokrotne wykonanie poleceń (/watek-jednokrotne-wykonanie-polece%C5%84) |
Jednokrotne wykonanie poleceń - JurasM_PL - 20-11-2019 Witam. Dopiero zaczynam przygodę z Arduino i jeszcze wiele muszę się nauczyć ale stworzyłem program do sterowania solarnym podgrzewaczem wody. Pokrótce program działa w następujący sposób: - w sposób ciągły dokonywany jest pomiar temperatury wody i wyświetlany na wyświetlaczu LCD - program może pracować w dwóch trybach: 1. Tryb auto gdzie w momencie przekroczenia zadanej temperatury (np. 85 st) automatycznie włącza się pompa chłodząca podgrzewacz a w momencie zbyt niskiej temperatury (np. 35 st) włącza się grzałka podgrzewająca wodę 2. Tryb manual w tym trybie nie włącza się nic automatycznie ale za pomocą przycisków można uruchomić zarówno pompę jak i grzałkę Przełączanie pomiędzy trybami zrobiłem za pomocą przełącznika bistabilnego - nie przycisku (stale włączony jest tryb auto lub manual w zależności od pozycji przełącznika), Takie rozwiązanie pozwala uruchomić ostatnio używany tryb pracy np. po zaniku prądu, ponownym włączeniu urządzenia. Problem w tym że po przełączeniu z trybu auto na manual program nadal trzyma wartości z trybu auto a chcę żeby zostały one jak gdyby "wyzerowane" np. jeśli w tym momencie jesteśmy w trybie auto Auto i grzałka jest załączona to po przełączeniu w tryb Manual powinna ona zostać automatyczny wyłączona i program powinien "czekać" na ewentualne uruchomienie grzałki za pomocą przycisku. Potrzebuje jakąś komendę, funkcję lub pętlę która "wyzeruje" wszystkie ustawienia, czyli taka która zadziała (wykona się) tylko jeden raz i nie będzie się wykonywać za każdym kolejnym razem pomimo tego że zagnieżdżona jest w pętli. Czyli krótko - potrzebuję aby np. komenda: digitalWrite(pin, LOW); wykonała się tylko raz pomimo tego że znajduje się w pętli. Nie mam pojęcia jak to zrobić. Bardzo proszę o pomoc. RE: Jednokrotne wykonanie poleceń - semi - 20-11-2019 Użyj flagi. przed pętla ustaw ją np na true, w pętli Kod: if( flaga ){ RE: Jednokrotne wykonanie poleceń - JurasM_PL - 20-11-2019 (20-11-2019, 14:10)semi napisał(a): Użyj flagi. przed pętla ustaw ją np na true, w pętliOk - tak spróbuję i dam znać jak poszło Dzięki za odpowiedź RE: Jednokrotne wykonanie poleceń - JurasM_PL - 21-11-2019 Zrobiłem tak jak radziłeś: Zadeklarowałem zmienną jako boolean, z wartością true; a w pętli "Manual" po jej uruchomieniu następuje zmiana stanu na false. Dodatkowo w pętli obsługującej tryb "AUTO" dopisałem komendę ponownie zmieniającą wartość tej zmiennej na true aby przy kolejnej zmianie trybu pracy na MANUAL nastąpiło ponownie jednorazowe zadziałanie tej funkcji "zerującej". Wszystko działa jak należy. Bardzo dziękuję za pomoc RE: Jednokrotne wykonanie poleceń - semi - 21-11-2019 (21-11-2019, 08:55)JurasM_PL napisał(a): Zrobiłem tak jak radziłeś:Zadeklaruj zmienną lokalną przed pętlą (pewnie deklarujesz globalnie) ustawiając jednocześnie na false. RE: Jednokrotne wykonanie poleceń - Robson Kerman - 21-11-2019 Panie JurasM_PL, jeśli kolega semi pomógł, to wypadało by kliknąć tego kciuka w górę i przyznać punkt reputacji. Takie działanie sporo pomoże naszej społeczności. RE: Jednokrotne wykonanie poleceń - semi - 21-11-2019 (21-11-2019, 20:22)Robson Kerman napisał(a): Panie JurasM_PL, jeśli kolega semi pomógł, to wypadało by kliknąć tego kciuka w górę i przyznać punkt reputacji.Nie ma sensu! Jestem banitą! RE: Jednokrotne wykonanie poleceń - JurasM_PL - 22-11-2019 (21-11-2019, 23:30)semi napisał(a):Sorry - już naprawiłem swój błąd. Nie doczytałem zasad forum bo jestem tutaj nowy ale to mnie nie tłumaczy.(21-11-2019, 20:22)Robson Kerman napisał(a): Panie JurasM_PL, jeśli kolega semi pomógł, to wypadało by kliknąć tego kciuka w górę i przyznać punkt reputacji.Nie ma sensu! Jeszcze raz sorry |