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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.