• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Obsługa i wyświetlanie prostego MENU na LCD
#3
To ja się będę czepiał na początek.

1) W niektórych miejscach kodu piszesz:
Kod:
if(!digitalRead(downButton))
w innych:
Kod:
if(digitalRead(backButton) == HIGH)
zdecyduj się na jedną wersję i tego się trzymaj - nie rób burdelu tylko dlatego, że coś skejasz z kilku gotowców. Jak będziesz chciał robić bardziej skomplikowane projektu to po prostu zginiesz z takim czymś.

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));
czyli program zapętla się w czasie trzymania przycisku i nic nie może zrobić innego

4) Tutaj jest dla mnie niejasne:
Kod:
    if(!digitalRead(selectButton))
      {
        selectAction();
        updateMenu();
        delay(100);
        while(!digitalRead(selectButton));
      }
skoro funkcja selectAction() nie zmienia wartości zmiennej menu to po kiego grzyba po niej jest updateMenu()?

5) I dalej w kodzie (moje komentarze):

Kod:
void action1()

  {           

    przejazdy = 1;

    if(digitalRead(backButton) == HIGH) // po co Ci ten if skoro dalej masz while sprawdzający ten sam warunek?

      {

        while((digitalRead(backButton)== HIGH))

        {

          sygnalizacja();

         
          if(przejazdy == wybrana_ilosc)

              {

                digitalWrite(przekaznik1,LOW);

              } 

          else if(przejazdy == wybrana_ilosc + 1)

              {

                przejazdy = 1;

              }

          else if(przejazdy <= 0)

              {

                przejazdy = 1;

              }

          else

              {

                digitalWrite(przekaznik1,HIGH);

              }       

              wyswietlanie(); // czy to miało omijać wszystkie ify i else?

        }

        while(digitalRead(backButton)== HIGH); // drugi raz ten sam while?         

      } 


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ś.
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Obsługa i wyświetlanie prostego MENU na LCD - przez MadMrQ - 14-02-2023, 20:56

Skocz do:


Przeglądający: 1 gości