Hey,
ich arbeite gerade an einem relativ aufwenigem projekt.
Da wie ihr seht der Code sehr sehr lang ist und nur für das menu.
Gibt es eine möglichkeit mehrere klassen für z. B. das Display eine für den Stepper 1, 2, 3 eine und so weiter.
Wenn ja wie?
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 21);
const int PinX = A7;
const int PinY = A6;
int StateX;
int StateY;
int menu = 1;
int mainmenu = 0;
int costumermenu = 0;
int ueberwachungmenu = 0;
int setttingsmenu = 0;
int statusmenu = 0;
unsigned long Vorherige;
unsigned long VorherigeX;
unsigned long VorherigeY;
unsigned long VorherigeZ;
unsigned long intervall = 500;
unsigned long intervallX = 500;
void setup() {
Serial.begin(9600);
Serial.println("Startet..");
pinMode(PinX, INPUT);
pinMode(PinY, INPUT);
lcd.begin();
updateMenu();
mainmenu = 0;
costumermenu = 0;
ueberwachungmenu = 0;
setttingsmenu = 0;
statusmenu = 0;
}
void loop() {
Serial.println(StateX);
Serial.println(menu);
unsigned long aktuellY = millis();
if (aktuellY - VorherigeY >= intervallX) {
StateX = analogRead(PinX);
StateY = analogRead(PinY);
VorherigeY = aktuellY;
}
unsigned long aktuellZ = millis();
if (aktuellZ - VorherigeZ >= intervall) {
if (mainmenu == 0) {
if (StateY < 50) {
executeAction();
}
}
}
if (aktuellZ - VorherigeZ >= intervall) {
if (mainmenu == 1) {
if (StateY > 600) {
updateMenu();
mainmenu = 0;
}
}
}
unsigned long aktuell = millis();
if (aktuell - Vorherige >= intervall) {
if (mainmenu == 0) {
if (StateX > 800) {
Vorherige = aktuell;
menu++;
updateMenu();
}
} else if (mainmenu == 1) {
}
}
unsigned long aktuellX = millis();
if (aktuellX - VorherigeX >= intervall) {
if (mainmenu == 0) {
if (StateX < 50) {
VorherigeX = aktuellX;
menu--;
updateMenu();
}
}
}
}
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
mainmenu = 0;
break;
case 1:
Serial.println("Update Menu 1");
lcd.clear();
lcd.print(">Costumer IDS");
lcd.setCursor(0, 1);
lcd.print(" Ueberwachung");
lcd.setCursor(0, 2);
lcd.print(" Settings");
lcd.setCursor(0, 3);
lcd.print(" Status");
break;
case 2:
Serial.println("Update Menu 2");
lcd.clear();
lcd.print(" Costumer IDS");
lcd.setCursor(0, 1);
lcd.print(">Ueberwachung");
lcd.setCursor(0, 2);
lcd.print(" Settings");
lcd.setCursor(0, 3);
lcd.print(" Status");
break;
case 3:
Serial.println("Update Menu 3");
lcd.clear();
lcd.print(" Costumer IDS");
lcd.setCursor(0, 1);
lcd.print(" Ueberwachung");
lcd.setCursor(0, 2);
lcd.print(">Settings");
lcd.setCursor(0, 3);
lcd.print(" Status");
break;
case 4:
Serial.println("Update Menu 4");
lcd.clear();
lcd.print(" Costumer IDS");
lcd.setCursor(0, 1);
lcd.print(" Ueberwachung");
lcd.setCursor(0, 2);
lcd.print(" Settings");
lcd.setCursor(0, 3);
lcd.print(">Status");
break;
case 5:
Serial.println("Update Menu 5");
lcd.clear();
lcd.print(">MenuItem5");
lcd.setCursor(0, 1);
lcd.print(" MenuItem6");
lcd.setCursor(0, 2);
lcd.print(" MenuItem7");
lcd.setCursor(0, 3);
lcd.print(" MenuItem8");
break;
case 6:
Serial.println("Update Menu 6");
lcd.clear();
lcd.print(" MenuItem5");
lcd.setCursor(0, 1);
lcd.print(">MenuItem6");
lcd.setCursor(0, 2);
lcd.print(" MenuItem7");
lcd.setCursor(0, 3);
lcd.print(" MenuItem8");
break;
case 7:
Serial.println("Update Menu 7");
lcd.clear();
lcd.print(" MenuItem5");
lcd.setCursor(0, 1);
lcd.print(" MenuItem6");
lcd.setCursor(0, 2);
lcd.print(">MenuItem7");
lcd.setCursor(0, 3);
lcd.print(" MenuItem8");
break;
case 8:
Serial.println("Update Menu 8");
lcd.clear();
lcd.print(" MenuItem5");
lcd.setCursor(0, 1);
lcd.print(" MenuItem6");
lcd.setCursor(0, 2);
lcd.print(" MenuItem7");
lcd.setCursor(0, 3);
lcd.print(">MenuItem8");
break;
case 9:
menu = 1;
break;
}
}
void executeAction() {
switch (menu) {
case 1:
action1();
break;
case 2:
action2();
break;
case 3:
action3();
break;
case 4:
action4();
break;
}
}
void action1() {
mainmenu = 1;
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Customer IDS");
lcd.setCursor(0, 1);
lcd.print(">CostumerID1");
lcd.setCursor(0, 2);
lcd.print(" CostumerID2");
}
void action2() {
mainmenu = 1;
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Ueberwachung");
lcd.setCursor(0, 1);
lcd.print(">Stepper 1");
lcd.setCursor(0, 2);
lcd.print(" Laufband 1");
lcd.setCursor(0, 3);
lcd.print(" Laufband 2");
//Weiter einfügen
}
void action3() {
mainmenu = 1;
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("Settings");
lcd.setCursor(0, 1);
lcd.print(">Fehler Speicher");
lcd.setCursor(0, 2);
lcd.print(" Wartungs arbeiten");
lcd.setCursor(0, 3);
lcd.print(" S/N");
}
void action4() {
mainmenu = 1;
lcd.clear();
lcd.setCursor(7, 0);
lcd.print("Status");
lcd.setCursor(0, 1);
lcd.print(" Systeme = OK"/*Systeme State*/);
lcd.setCursor(0, 2);
lcd.print(" Maschine = OK"/*Maschinen State*/);
}