Hol találhatok egyszerű Arduino-ra lcd menüt? Az alapokkal kicsit gondba vagyok.
Egy projektemen dolgozom, de már lassan két hónapja egy helyben totyorgok, mivel egy menüt próbálok átírni. És nem igazán értem, hogy hogy tudom neki megadni, hogy ha lefelét nyomok, akkor az első menüben menjen lefele, ha pedig a másik menüben vagyok és ott nyomom a lefelét, akkor ott menjen lefele és ne lépjen vissza az elsőbe.
Válaszokat, tanácsokat előre is köszönöm!
Programkódom itt van:
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); //LCD kijelző pinjei
int upButton = 48; //Fel nyomógomb
int downButton = 44; //Le nyomógomb
int selectButton = 30; //Select nyomógomb
int backButton = 37; //Vissza nyomógomb
int menu = 1;
void setup() {
lcd.begin(16, 2);
pinMode(upButton, INPUT_PULLUP);
pinMode(downButton, INPUT_PULLUP);
pinMode(selectButton, INPUT_PULLUP);
}
void loop() //meghívó rész Összes if szerkezet ide kell!
{
if (!digitalRead(downButton)){ //ha megnyomom a Le gombot
menu++; //hozzáad egyet
Menu1(); //első menüben
delay(100); //vár 100ms-ot
}
if (!digitalRead(downButton)){ //ha megnyomom a Le gombot
menu++; //hozzáad egyet
Menu2(); //második menüben
delay(100); //vár 100ms-ot
}
if (!digitalRead(downButton)){ //ha megnyomom a Le gombot
menu++; //hozzáad egyet
Menu3(); //harmadik menüben
delay(100); //vár 100ms-ot
}
if (!digitalRead(upButton)){ //ha megnyomom a Fel gombot
menu--; //kivon egyet
Menu1(); //első menüből
delay(100); //vár 100ms-ot
}
if (!digitalRead(upButton)){ //ha megnyomom a Fel gombot
menu--; //kivon egyet
Menu2(); //második menüből
delay(100); //vár 100ms-ot
}
if (!digitalRead(upButton)){ //ha megnyomom a Fel gombot
menu--; //kivon egyet
Menu3(); //harmadik menüből
delay(100); //vár 100ms-ot
}
if (!digitalRead(selectButton)){ //ha megnyomom az Select gombot
Menu1(); //első menüből átlép
Menu2(); //a második menübe
delay(500); //vár 500ms-ot
}
if (!digitalRead(selectButton)){ //ha megnyomom az Select gombot
Menu2(); //második menüből átlép
Menu3(); //a második menübe
delay(500); //vár 500ms-ot
}
} //void loop rész lezárása
void Menu1() { //Első menü -> kijelző képek
switch (menu) {
case 0:
menu = 1; //alap érték = 1
break;
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(">MenuItem1");
lcd.setCursor(0, 1);
lcd.print(" MenuItem2");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" MenuItem1");
lcd.setCursor(0, 1);
lcd.print(">MenuItem2");
break;
case 3:
lcd.clear();
lcd.print(">MenuItem3");
lcd.setCursor(0, 1);
lcd.print(" MenuItem4");
break;
case 4:
lcd.clear();
lcd.print(" MenuItem3");
lcd.setCursor(0, 1);
lcd.print(">MenuItem4");
break;
case 5:
menu = 4;
break;
}
}
void Menu2() { //Második menü -> kijelző képek
switch (menu) {
case 0:
menu = ;
break;
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(">Terminus #1");
lcd.setCursor(0, 1);
lcd.print(" Terminus #2");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Terminus #1");
lcd.setCursor(0, 1);
lcd.print(">Terminus #2");
break;
case 3:
lcd.clear();
lcd.print(">Terminus #3");
lcd.setCursor(0, 1);
lcd.print(" Terminus #4");
break;
case 4:
lcd.clear();
lcd.print(" Terminus #3");
lcd.setCursor(0, 1);
lcd.print(">Terminus #4");
break;
case 5:
menu = 4;
break;
}
}
void Menu3() { //Harmadik menü -> kijelző képek
switch (menu) {
case 0:
menu = ;
break;
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(">Station #1");
lcd.setCursor(0, 1);
lcd.print(" Station #2");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Station #1");
lcd.setCursor(0, 1);
lcd.print(">Station #2");
break;
case 3:
lcd.clear();
lcd.print(">Station #3");
lcd.setCursor(0, 1);
lcd.print(" Station #4");
break;
case 4:
lcd.clear();
lcd.print(" Station #3");
lcd.setCursor(0, 1);
lcd.print(">Station #4");
break;
case 5:
menu = 4;
break;
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!