Sterowanie przez IR problem z case - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Sterowanie przez IR problem z case (/watek-sterowanie-przez-ir-problem-z-case) |
Sterowanie przez IR problem z case - kataklysm - 31-08-2019 Witam, napisałem program oparty o pętle case, działa bez zarzutu ale teraz chciałbym dołożyć sterowanie menu przez ir. Problem w tym, że wszystkie przykłady z ir także posiadają case. Nie wiem jak to połączyć, próbowałem już różnych możliwości ale bez skutku. Czy da się jakoś odczytywać przesłane kody ir za pomocą if? Tak abym mógł w case który aktualnie działa wyzwolić if jeśli odbiornik odczyta jakiś sygnał ? Np if (sygnał przejdź w prawo) {digitalWrite(LED, HIGH);} RE: Sterowanie przez IR problem z case - kaczakat - 01-09-2019 Case można zagnieżdżać, a by było bardziej czytelnie można wywołać funkcję, w której jest wywoływana funkcja, w której... itd., a w każdej może być case. Ifami można zrobić dokładnie to samo, case ma węższe zastosowanie. RE: Sterowanie przez IR problem z case - kataklysm - 01-09-2019 (01-09-2019, 06:16)kaczakat napisał(a): Case można zagnieżdżać, a by było bardziej czytelnie można wywołać funkcję, w której jest wywoływana funkcja, w której... itd., a w każdej może być case. Ifami można zrobić dokładnie to samo, case ma węższe zastosowanie. Kod: switch (control) { Chodzi mi o taki fragment kodu: Kod: if (irrecv.decode(&results)) { kiedy wstawię go do pętli void loop bezpośrednio to ten kod działa zuepłnie poprawnie. Natomiast kiedy jest w case tak jak wyżej to już nie działa. Proszę o pomoc RE: Sterowanie przez IR problem z case - kaczakat - 01-09-2019 Zagnieżdżenie nie wpływa na logikę działania, ale czytelność jest taka sobie i łatwo o pomyłkę. Jak już to lepiej wrzucić kolejny switch case w procedurę i tylko ją wkleić do wyższego poziomu. Żeby to digitalWrite(AUX, HIGH) zostało wykonane muszą równocześnie zaistnieć po kolei wszystkie warunki: control=1, musi być jakiś result i results.vaule=0xC1A2FA05. Może po prostu opisz szerzej co zamierzasz w tym programie i czego oczekujesz. Może po prostu sterowanie powinno być równoległe, jeden case działa niezależnie używając przycisków, drugi niezależnie sterowanie IR. W obu przypadkach powinieneś też obsługiwać drgania styków, tak by jedno naciśnięcie przycisku czy to na pilocie IR czy na klawiaturze wywoływało dokładnie jedną akcję + ewentualnie serię powtórzeń po określonym czasie. RE: Sterowanie przez IR problem z case - kataklysm - 01-09-2019 (01-09-2019, 20:30)kaczakat napisał(a): Zagnieżdżenie nie wpływa na logikę działania, ale czytelność jest taka sobie i łatwo o pomyłkę. Jak już to lepiej wrzucić kolejny switch case w procedurę i tylko ją wkleić do wyższego poziomu.Dzięki za pomoc wszystko już działa. Sterowanie enkoderem w menu na osobnym switch case i sterowanie ir na osobnym. Dodałem jeszcze wygaszenie ekranu po 60s bezczynności oraz powrót podświetlenie po uruchomieniu enkoder bądź naciśnięciu przycisku na pilocie. Mimo, że zrobiłem to wcześniej to i tak dzięki za pomoc bo nie wiedziałem, że switch case można umieszczać jeden w drugim. |