Przyczyna złego działania kodu. - 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: Przyczyna złego działania kodu. (/watek-przyczyna-z%C5%82ego-dzia%C5%82ania-kodu) |
Przyczyna złego działania kodu. - H4X - 07-03-2017 Witam forumowiczów, męczę się z tym już 3 dzień i dalej nie wiem o co chodzi. Dodatkowo napiszę że kod wcześniej, (jakieś 5 dni temu) działał poprawnie. Jednak stale go modyfikuję i mogłem coś poknocić. Chodzi o to, że mam taką akcję wywoływaną przez bibliotekę Timers.h: Kod: void Otrzymany_Znak() { Następnie po wysłaniu znaku "f", aktywuje się ten kod: Kod: void Garaz_Otworz() { Oraz funkcja: Kod: void Funkcja_Swiatlo() { Problem polega na tym, że nie wykonuje się procedura "else" w funkcji "Funkcja_Swiatlo()". Co może być przyczyną złego działania kodu ? RE: Przyczyna złego działania kodu. - namok - 07-03-2017 (07-03-2017, 12:46)H4X napisał(a): Problem polega na tym, że nie wykonuje się procedura "else" w funkcji "Funkcja_Swiatlo()". Co może być przyczyną złego działania kodu ?Przed wywołaniem funkcji "Funkcja_Swiatlo()" ustawiasz zmienną "Zmienna_Swiatlo=true" więc w funcji wykona się zawsze część zawarta po "if(Zmienna_Swiatlo==true) ". RE: Przyczyna złego działania kodu. - H4X - 07-03-2017 No tak ale później w kodzie ustawiam zmienną na "false", więc powinna wykonać się druga część warunku "if-else". Czyli typy zmiennych mam w złych miejscach ? RE: Przyczyna złego działania kodu. - H4X - 07-03-2017 Wydaje mi się że dobrze ustawiłem wartości zmiennej, gdyż na początku ustawiam ją na "true", wtedy zmienna światło zmienia stan na LOW, czyli wykonuje się "if" w części "Funkcja_Swiatlo", co aktywuje przekaźnik i zapisywany jest czas, następnie gdy krańcówka zmieni stan na niski, zmienna przybiera wartość "false" i powinna wykonać się druga część warunku "if-else" w funkcji światła. Dobrze rozumuję ? RE: Przyczyna złego działania kodu. - namok - 07-03-2017 Wydaje mi się że Ci się źle wydaje!!! Funkcja Funkcja_Swiatlo() wywoływana jest tylko raz w funkcji Otrzymany_Znak() i tylko wartość zmiennej Zmienna_Swiatlo z tej funkcji się liczy!!! RE: Przyczyna złego działania kodu. - H4X - 07-03-2017 Teraz rozumiem, czy dobrze będzie wstawić tę funkcję do pętli Loop ? Czy może lepiej będzie zrobić osobny timer aby wywoływać ją tylko wtedy kiedy jest potrzebna ? RE: Przyczyna złego działania kodu. - H4X - 07-03-2017 Problem rozwiązany, przez moje złe myślenie o tym jak działa program, funkcja Funkcja_Swiatlo wykonywała się raz, tak jak pisał "namok", po wstawieniu funkcji do pętli Loop, kod działa dokładnie tak jak powinien. |