Skocz do zawartości

Arduino menu klawiatura i LCD


Mati2004

Pomocna odpowiedź

 Chciałem zrobić proste menu do zgrzewarki jednak jak się okazuje nie jest to takie proste. Niby wszystko zaczęło działać poprawnie, ale gdy chciałbym, żeby było funkcjonalne i za pomocą potencjometru chciałem przypisywać zmiennym jakieś wartości okazuję się, że nie działa to tak jak powinno. Ogólnie potencjometr dodany tam tylko dlatego, że nie wiedziałem jak mógłbym przypisywać wartości zmiennym za pomocą 'keypada'. Chodzi o to ze jak w case 3 ustawiam wartość zmiennej, następnie chciałbym przejść do kolejnego, case'a w którym wyświetli mi się wartość, którą przed chwilą ustawiałem, i wartość którą będę właśnie ustawiał (case 5). Mam nadzieję, że w miarę jasno to opisałem.  Zajrzyjcie do tego co już zdążyłem napisać, mam nadzieję, że da się z tego zrobić coś fajnego z waszą pomocą. Z góry dzięki. @SOYER @ethanak

#include <LiquidCrystal_I2C.h>
#include <Keypad.h>

LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display

const byte ROWS = 4; // ile wierszy
const byte COLS = 4; //ile kolumn
 
byte colPins[COLS] = {5, 4, 3, 2}; //piny wierszy
byte rowPins[ROWS] = {9, 8, 7, 6}; //piny kolum
 
char keys[ROWS][COLS] = { //mapowanie klawiatury
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

Keypad klawiatura = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initializacja klawiatury

int A = 0;
bool lock = 0;



void setup() {
  pinMode(A0, INPUT);
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  lcd.setCursor(3,0);
  lcd.print("Zgrzewara");
  lcd.setCursor(1,1);
  lcd.print("Mateusz Czarny");
  delay(2000);
        

}

void loop() {
  menuGlowne();
}
void menuGlowne(){
    char klawisz = klawiatura.getKey();
    int odczyt;
    int d = 0;
    int c = 0;
    int g = 0;
        
  switch (A)
  {
    case 0:
        lcd.clear();
        lcd.print("Wybierz tryb  <> ");
        lcd.setCursor(3,1);
        lcd.print(">A <B");
        delay(150);
        if(klawisz == 'A'){
        A++;
        }
        break;
    case 1:
      
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print(">Tryb 1");
        lcd.setCursor(0,1);
        lcd.print("Tryb 2");
        delay(150);
        if(klawisz == '#'){
          A = 3;
        }
        if(klawisz == 'A'){
        A++;
        }
        break;
    case 2:
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Tryb 1");
        lcd.setCursor(0,1);
        lcd.print(">Tryb 2");  
        delay(150);    
        if(klawisz == '#'){
          A = 4;
        }
        if(klawisz == 'B'){
        A--;
        }
        break;
    case 3:
        odczyt = analogRead(A0);
        d = map(odczyt, 0, 1023, 0, 200);
        c = d;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("1.");
        lcd.setCursor(0,1);
        lcd.print("Czas:"); 
        lcd.setCursor(5,1);
        lcd.print(c);
        delay(150);
        
        if(klawisz == 'B'){
        A=1;
        }
        if(klawisz == '#'){
          A = 5;
        }
        break;
    case 4:
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("2.");
        lcd.setCursor(0,1);
        lcd.print("Czas:"); 
        lcd.setCursor(0,6);
        lcd.print(klawisz);
        delay(150);
        if(klawisz == 'B'){
        A=2;
        }
        break;
    case 5:
        odczyt = analogRead(A0);
        g = map(odczyt, 0, 1023, 0, 50);
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("1.");
        lcd.setCursor(0,1);
        lcd.print("Czas:"); 
        lcd.setCursor(5,1);
        lcd.print(c);
        lcd.setCursor(9,1);
        lcd.print("Czas:"); 
        lcd.print(g);
        delay(150);
        
        if(klawisz == 'B'){
        A=1;
        }
        break;
      }   
}

 

Link do komentarza
Share on other sites

Do ustawiania wartości lepiej używać enkodera niż potencjometru, mógłbyś go wtedy też używać do poruszania się po menu. Enkoder z clickiem i nie potrzebujesz klawiatury, wystarcza jedno pokrętło.

  • Lubię! 2
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.