Obsługa i wyświetlanie prostego MENU na LCD - 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: Obsługa i wyświetlanie prostego MENU na LCD (/watek-obs%C5%82uga-i-wy%C5%9Bwietlanie-prostego-menu-na-lcd) |
Obsługa i wyświetlanie prostego MENU na LCD - dyjokovsky - 12-02-2023 Dzień Dobry, posiadam pewien kod który dostępny był w internecie, chodzi o proste i intuicyjne menu, gdzie posiadam dwie opcje do wyboru. Steruje góra dół za pomocą dwóch przycisków a trzeci przycisk służy jako "enter". Menu zostało napisane za pomocą switch (zmienna) case : Nie umiem sobie poradzić z "akcją" która będzie się działa po wyborze jednej z dwóch opcji. W funkcji void action1() chcę abym na LCD widział moje interkacje z programem, tzn w innej częsci kod, program zlicza "ilość przejazdów" (kliknięcie w przycisk) aż do 5, za 5-tym kliknieciem urchomiony zostaje przekaznik a za 6-tym znowu wracamy do punktu wyjscia czyli 1. i znowu klikam 1-2-3-4-5>przekaznik. To działanie ma trwać aż do momentu kiedy wcisnę przycisk czwarty: ESC. który wróci do menu. Nie potrafię napisać kodu który po wejsciu w dany tryb dostępny w menu, będzie w niej tak długo aż wcisnę klawisz ESC(czwarty przycisk). W funkcji action coś tam napisałem, w miarę to działa ale na wyświetlaczu lcd widzę migotające napisy.. interakcja działa (tzn widzę jak zliczają się impulsy ale całość migota na lcd), nie wiem gdzie w tym kodzie umiejscowić funkcje wyświetlanie();. Aby na LCD nie migotała cała ta funkcja. Byłbym wdzięczny za każdą pomoc. Tworzę projekt który w krótce chciałbym tu przedstawić. Pozdrawiam Cały kod poniżej: Kod: ///////////////////////////////////////////////////////////////////////// RE: Obsługa i wyświetlanie prostego MENU na LCD - kaczakat - 12-02-2023 Tu masz przykład menu: https://starter-kit.nettigo.pl/2017/04/menu-wyswietlaczu-16x2/. Wywal delay z kodu, jak nie ogarniasz jak pisać kod bez stosowania delay, obsługiwać bez delay przycisków to porywasz się z motyką na słońce, bez uzupełnienia podstaw będzie tylko frustracja. RE: Obsługa i wyświetlanie prostego MENU na LCD - MadMrQ - 14-02-2023 To ja się będę czepiał na początek. 1) W niektórych miejscach kodu piszesz: Kod: if(!digitalRead(downButton)) Kod: if(digitalRead(backButton) == HIGH) 2) Nie stosuj delay! To najgorsze, co można zrobić swojemu mikrokontrolerowi 3) Kolejny twór, którego osobiście bym nie zastosował: Kod: while(!digitalRead(downButton)); 4) Tutaj jest dla mnie niejasne: Kod: if(!digitalRead(selectButton)) 5) I dalej w kodzie (moje komentarze): Kod: void action1() Przeanalizuj przykłady dostępne w Arduino IDE: Przykłady > Digital > Debounce albo skorzystaj z gotowej biblioteki. W przypadku przycisków masz do czynienia z drganiami styków, które musisz wziąć pod uwagę. Dobrym pomysłem jest to, co pisze kolega kaczakat - zamiast wyważać otwarte drzwi zobacz jak to jest rozwiązane u innych. Przede wszystkim postaraj się zrozumieć co robi kod, który napisałeś. |