Hilfe benötigt Button / TouchScreen

Hallo,

ich bin gerade dabei mir eine kleine Steuerung zu programmieren und habe dabei ein Problem.

Im void manuelle_Steuerung (ganz am Ende) habe ich Buttons auf meinen TFT Display programmiert und möchte damit Ausgänge schalten. Soweit noch kein Problem, aber…
Wenn ich das Button-Menu öffne, möchte ich vorher die Ausgänge abfragen und die Buttons in grün bzw rot darstellen.
Beim betätigen des Button (1) soll der Ausgang gesetzt und bei dem Button (0) wieder rückgesetzt werden. Dabei soll sich je nach Zustand die Buttonfarbe von (1) und (0) auf rot bzw grün ändern.

Beim betätigen der Zurücktaste soll dann ein Menu zurückgesprungen werden (funktioniert bereits) und die Buttons in ihrer “alten blauen Farbe” dargestellt werden.

Habe hier mal den Code, der aktuell auf dem Rechner ist. Er ist nicht unbedingt aufgeräumt und fertig schon gar nicht. Mir ging es in erster Linie erstmal um die Menuführung.

#include <UTFT.h>        // TFT Lib
#include <URTouch.h>        // Touch Lib
#include <UTFT_Buttons.h>     // Button Lib
extern uint8_t BigFont[];    // Zeichengroeße fuer Buttons und Text
extern uint8_t SmallFont[];    // Zeichengroeße fuer Buttons und Text
extern uint8_t Dingbats1_XL[];

UTFT          myGLCD(ILI9341_16, 38, 39, 40, 41);
URTouch        myTouch(6, 5, 4, 3, 2);
UTFT_Buttons  myButtons(&myGLCD, &myTouch);

unsigned int main_but1, main_but2, main_but3, main_but4, main_but5, main_but6, main_but7, main_but8, main_but9, main_but10, main_but99, zur_button;;

int m_press;
int val8 = 0;
int val9 = 0;
int val10 = 0;
int val11 = 0;
int val12 = 0;

// Footertext Hauptmenu
const char footertext[] = "Hauptmenue";
void setup() {
  // LCD starten
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myGLCD.setFont(BigFont);
  myButtons.setSymbolFont(Dingbats1_XL);
  // Touch starten
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_HI);
  myButtons.setTextFont(BigFont);
  // Standardfarben entspr. Vorgaben in den Libs benutzen
  const boolean default_colors = true;

  pinMode(8, OUTPUT); //Becken befüllen
  pinMode(9, OUTPUT); //Becken Zulauf
  pinMode(10, OUTPUT); //Becken IN/OUT
  pinMode(11, OUTPUT); //Filter QUT
  pinMode(12, OUTPUT); //Becken entleeren

  //Ventile beim Start
  digitalWrite(8, HIGH);//Becken befüllen
  digitalWrite(9, HIGH);//Becken Zulauf
  digitalWrite(10, LOW);//Becken IN/OUT
  digitalWrite(11, HIGH);//Filter OUT
  digitalWrite(12, LOW);//Becken entleeren
}

void loop() {
  // Buttons des Hauptmenu setzen
  myGLCD.setFont(BigFont);
  myGLCD.print("Temperatur", 10, 13, 0);
  main_but1 = myButtons.addButton (280, 5, 30, 30, "1");
  myGLCD.print("PH-Wert", 10, 48, 0);
  main_but2 = myButtons.addButton (280, 40, 30, 30, "2");
  myGLCD.print("Filterleistung", 10, 83, 0);
  main_but3 = myButtons.addButton (280, 75, 30, 30, "3");
  myGLCD.print("Fuellstand", 10, 118, 0);
  main_but4 = myButtons.addButton (280, 110, 30, 30, "4");
  main_but6 = myButtons.addButton (10, 180, 300, 30, "Funktionen");
  // Buttons anzeigen
  myButtons.drawButtons();
  // Einen Text schreiben
  myGLCD.setFont(SmallFont);
  myGLCD.print(footertext, 5, 220);
  myGLCD.setColor(VGA_WHITE);
  // Hier beginnt die Abfrage der geklickten Buttons
  while (!myTouch.dataAvailable()) {}
  m_press = myButtons.checkButtons();
  // Je nach ausgewahltem Button wird Funktion mit Parameter aufgerufen
  if (m_press == main_but1) Temperatur();
  if (m_press == main_but2) PH_Wert();
  if (m_press == main_but3) Filterleistung();
  if (m_press == main_but4) Fuellstand();
  if (m_press == main_but6) Funktionen(1);
}
void Temperatur(){
}
void PH_Wert(){
}
void Filterleistung(){
}
void Fuellstand(){
}

void Funktionen(unsigned int Funktionen) {
  // Footertext Submenu
  const char sfootertext[] = "Funktionen: ";
  // Zusatzbutton fuer Ruecksprung ins Hauptmenu und aktuell geklickter Button
  unsigned int main_but99, m_press_2;
  do {
    // Buttons des Hauptmenu loeschen
    myButtons.deleteAllButtons();
    myGLCD.clrScr(); // LCD leeren
    switch (Funktionen) {
      case 1:
        main_but1 = myButtons.addButton(10, 5, 300, 30, "Normalbetrieb");
        main_but3 = myButtons.addButton(10, 65, 300, 30, "Befuellen");
        main_but4 = myButtons.addButton(10, 100, 300, 30, "Entleeren");
        main_but6 = myButtons.addButton(10, 160, 300, 30, "manuelle Steuerung");
        break;
    }
    // Zurueck-Button setzen um ins Hauptmenu zu kommen
    main_but99 = myButtons.addButton (190, 210, 120, 30, "Zurueck");

    myButtons.drawButtons();
    myGLCD.setFont(SmallFont);
    myGLCD.print(sfootertext, 5, 220);
    // Text welches Submenu
    myGLCD.printNumI(Funktionen, 130, 220);
    myGLCD.setColor(VGA_WHITE);
    while (!myTouch.dataAvailable()) {}
    m_press_2 = myButtons.checkButtons();

    switch (Funktionen) {
      case 1:
        if (m_press_2 == main_but1) Normalbetrieb();
        if (m_press_2 == main_but3) Befuellen();
        if (m_press_2 == main_but4) Entleeren();
        if (m_press_2 == main_but6) manuelle_Steuerung(1);
        break;
    }
  } while (m_press_2 != main_but99);
  // Buttons des Submenu loeschen
  myButtons.deleteAllButtons();
  myGLCD.clrScr(); // LCD leeren
  return; // raus aus Funktion
}
void Normalbetrieb(){
}
void Befuellen(){
}
void Entleeren(){
}

void manuelle_Steuerung(unsigned int manuelle_Steuerung) {
  // Footertext Submenu
  const char sfootertext[] = "manuelle_Steuerung: ";
  // Zusatzbutton fuer Ruecksprung ins Hauptmenu und aktuell geklickter Button
  unsigned int main_but99, m_press_3;
  // Buttons des Hauptmenu loeschen
  myButtons.deleteAllButtons();
  myGLCD.clrScr(); // LCD leeren

  switch (manuelle_Steuerung) {
    case 1:
      //Zustand der Ventile Abfragen
      val8 = digitalRead(8);
      val9 = digitalRead(9);
      val10 = digitalRead(10);
      val11 = digitalRead(11);
      val12 = digitalRead(12);

      if (val8 == LOW) {
        myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
      }
      else {
        myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
      }
      main_but1 = myButtons.addButton(5, 5, 30, 30, "1");

      if (val8 == HIGH) {
        myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
      }
      else {
        myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
      }
      main_but2 = myButtons.addButton(285, 5, 30, 30, "0");
      myGLCD.print("Becken befuellen", CENTER, 13, 0);

      main_but3 = myButtons.addButton(5, 40, 30, 30, "1");
      myGLCD.print("Becken Zulauf", CENTER, 48, 0);
      main_but4 = myButtons.addButton(285, 40, 30, 30, "0");

      main_but5 = myButtons.addButton(5, 75, 30, 30, "1");
      myGLCD.print("Becken IN/OUT", CENTER, 83, 0);
      main_but6 = myButtons.addButton(285, 75, 30, 30, "0");

      main_but7 = myButtons.addButton(5, 110, 30, 30, "1");
      myGLCD.print("Filter OUT", CENTER, 118, 0);
      main_but8 = myButtons.addButton(285, 110, 30, 30, "0");

      main_but9 = myButtons.addButton(5, 145, 30, 30, "1");
      myGLCD.print("Becken entleeren", CENTER, 153, 0);
      main_but10 = myButtons.addButton(285, 145, 30, 30, "0");

      // Zurueck-Button setzen um ins Hauptmenu zu kommen
      main_but99 = myButtons.addButton (190, 200, 120, 30, "Zurueck");
  }
  do {
    myButtons.drawButtons();
    myGLCD.setFont(SmallFont);
    myGLCD.print(sfootertext, 5, 220);
    // Text welches Submenu
    myGLCD.printNumI(manuelle_Steuerung, 150, 220);
    myGLCD.setColor(VGA_WHITE);

    // Aufruf der Funktionen zu den Submenubuttons
    while (!myTouch.dataAvailable()) {}
    m_press_3 = myButtons.checkButtons();
    switch (manuelle_Steuerung) {
      case 1:
        if (m_press_3 == main_but1) digitalWrite(8, HIGH);//Becken befüllen
        if (m_press_3 == main_but2) digitalWrite(8, LOW);//Becken befüllen
        if (m_press_3 == main_but3) digitalWrite(9, HIGH);//Becken Zulauf
        if (m_press_3 == main_but4) digitalWrite(9, LOW);//Becken Zulauf
        if (m_press_3 == main_but5) digitalWrite(10, HIGH);//Becken IN/OUT
        if (m_press_3 == main_but6) digitalWrite(10, LOW);//Becken IN/OUT
        if (m_press_3 == main_but7) digitalWrite(11, HIGH);//Filter OUT
        if (m_press_3 == main_but8) digitalWrite(11, LOW);//Filter OUT
        if (m_press_3 == main_but9) digitalWrite(12, HIGH);//Becken entleeren
        if (m_press_3 == main_but10) digitalWrite(12, LOW);//Becken entleeren

    }
  } while (m_press_3 != main_but99);
  // Buttons des Submenu loeschen
  myButtons.deleteAllButtons();
  myGLCD.clrScr(); // LCD leeren
  return; // raus aus Funktion
}

Das Programm ist noch wesentlich umfangreicher und hier ist ein kleiner Teil.
Den Teil mit “myButtons.setButtonColors” habe ich bewusst mal drin gelassen. Das ist halt das, was ich nicht auf die Reihe bekomme…
Hoffe, mir kann da jemand helfen.

Auch wenn ein IO-Pin als Ausgang konfiguriert wurde kann man den Schaltzustand trotzdem mit
analogRead(IO-pin) abfragen. Damit bekommst du den Schalt-Status der Ausgänge
ja und wenn du den Schaltstatus hast kannst du doch eine ganze simple if-Bedingung machen die die Farbe festlegt.

Noch eine andere Anmerkung:
Du hast in den Quellcode die Ein/Ausgänge mit hardcodierten Zahlen stehen.
Das ist fehleranfällig. Wenn du je einen Ausgang änderst musst du das halbe Programm absuchen wo noch überall die "8" steht und womöglich vergisst du dann doch eine Stelle.

Und du musst zusätzlich "Vokabeln" lernen die "8" ist "Becken füllen" die "9" ist Becken Zulauf usw."

Man überlegt sich möglichst sinnige und selbsterklärende Namen für die Nummern
und dann gibt es exakt eine Zeile in der dem Namen die Nummer zugewiesen wird.
An allen anderen Stellen wird dann der Name verwendet.
Wenn du den Quellcode so geschrieben hast und du möchtest einen Ausgang/Eingang ändern dann änderst du ihn
an einer einzigen Stelle und bist fertig mit ändern.

  const int beckenFuellenPin  =  8
  const int beckenZulaufPin   =  9
  const int beckenIN_OUTPin   = 10
  const int FilterQUTPin      = 11
  const int BeckenAblassenPin = 12
  
  pinMode(beckenFuellenPin,  OUTPUT); 
  pinMode(beckenZulaufPin,   OUTPUT); 
  pinMode(beckenIN_OUTPin,   OUTPUT); 
  pinMode(FilterQUTPin,      OUTPUT); 
  pinMode(BeckenAblassenPin, OUTPUT); 


  //Ventile beim Start
  digitalWrite(beckenFuellenPin,  HIGH); 
  digitalWrite(beckenZulaufPin,   HIGH); //Becken Zulauf
  digitalWrite(beckenIN_OUTPin,   LOW);  //Becken IN/OUT
  digitalWrite(FilterQUTPin,      HIGH); //Filter OUT
  digitalWrite(BeckenAblassenPin, LOW);  //Becken entleeren

Ebenso mit val8, val9, val10 usw.

Aber es steht jedem frei so zu programmieren wie er gerne möchte. Wenn andere auch mal helfen sollen
dann fällt das viel leichter wenn man nicht auch noch einen Satz "Projekt-Vokabeln" Ausgang "8" ist Becken füllen usw. lernen muss.

viele Grüße Stefan

StefanL38:
...kann man den Schaltzustand trotzdem mit analogRead(IO-pin) abfragen.

... digitalRead(IO-pin) ...

agmue:
... digitalRead(IO-pin) ...

Hallo agmue,
sehr gut aufgepasst das habe ich gemeint aber wat falsches geschreiben.
Danke für korrigeiren
viele Grüße Stefan

StefanL38:
Danke für korrigeiren

Bitte gerne :slight_smile:

Schonmal Danke für die Antworten. Hab gestern soooo viel rumprobiert und geändert und wieder zurück.
Bin gerade in der Arbeit und versuche heute Nachmittag mal etwas aufzuräumen.
Das mit der IF Abfrage habe ich ja gestern versucht. Beim Öffnen des Menüs hat er ja auch einmalig val8 abgefragt und die richtige Farbe benutzt. Allerdings für alle Buttons und auch nichtmehr aktualisiert, nachdem ich den Ausgang umgeschaltet hatte.

Wie gesagt, werde mich heute Nachmittag nochmal dran versuchen. Zur Not melde ich mich wieder....

Probieren geht über studieren

http://www.rinkydinkelectronics.com/library.php?id=61

Müsste ich den Buttons Nummern zuweisen?

Hab es soweit zum Laufen bekommen und etwas Ordnung reingebracht.

Hoffe, das die Bezeichnungen für meine Ausgänge nun besser passen. Danke für den Hinweis :slight_smile:

Das der Zustand der Ausgänge nur einmalig abgefragt wurde, hab ich heute schnell gefunden. Dazu habe ich ein Do { verschoben und schon ging es. Mehr Kopfzerbrechen hat mir das Ändern der Farben der Buttons gemacht. Mit dem Befehl "myButtons.drawButtons();" werden alle Buttons in der letzten aktiven Farbe dargestellt. Daher haben bei mir alle Buttons von grün auf rot gewechselt.
In meinem letzten Beitrag war ich ja schon auf dem richtigen Weg, das ich die einzelnen Button dem Befehl zuweisen muss. Das sah dann anfangs bei mir so aus "myButtons.drawButtons(main-but1);".
Fast hätte ich in die Tastatur gebissen, bis ich meinen Fehler gesehen habe.... "myButtons.drawButtons(main-but1);". Ein "s" zu viel.

Nun funktioniert es.

Verbesserungsvorschläge werden gerne angenommen :slight_smile: :slight_smile: :slight_smile:

unsigned int main_but1, main_but2, main_but3, main_but4, main_but5, main_but6, main_but7, main_but8, main_but9, main_but10, main_but99;

int m_press;
const int Becken_befuellen = 8;
const int Becken_Zulauf = 9;
const int Becken_INOUT = 10;
const int Filter_OUT = 11;
const int Becken_entleeren = 12;

const char footertext[] = "Hauptmenue";
void setup() {
  pinMode(Becken_befuellen, OUTPUT); 
  pinMode(Becken_Zulauf, OUTPUT); 
  pinMode(Becken_INOUT, OUTPUT); 
  pinMode(Filter_OUT, OUTPUT); 
  pinMode(Becken_entleeren, OUTPUT); 
  //Ventile beim Start
  digitalWrite(Becken_befuellen, HIGH);
  digitalWrite(Becken_Zulauf, HIGH);
  digitalWrite(Becken_INOUT, LOW);
  digitalWrite(Filter_OUT, HIGH);
  digitalWrite(Becken_entleeren, LOW);

}
void loop() {
.
.
.
void manuelle_Steuerung(unsigned int manuelle_Steuerung) {
  const char sfootertext[] = "manuelle_Steuerung: ";
  unsigned int main_but99, m_press_3;
  digitalWrite(Becken_befuellen, LOW);
  digitalWrite(Becken_Zulauf, LOW);
  digitalWrite(Becken_INOUT, LOW);
  digitalWrite(Filter_OUT, LOW);
  digitalWrite(Becken_entleeren, LOW);
  do {
    myButtons.deleteAllButtons();
    myGLCD.clrScr(); // LCD leeren
    switch (manuelle_Steuerung) {
      case 1:
        myGLCD.setFont(SmallFont);

        if (digitalRead(Becken_befuellen) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but1 = myButtons.addButton(5, 5, 30, 30, "1");
          myButtons.drawButton(main_but1);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but1 = myButtons.addButton(5, 5, 30, 30, "1");
          myButtons.drawButton(main_but1);
        }
        if (digitalRead(Becken_befuellen) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but2 = myButtons.addButton(285, 5, 30, 30, "0");
          myButtons.drawButton(main_but2);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but2 = myButtons.addButton(285, 5, 30, 30, "0");
          myButtons.drawButton(main_but2);
        }
        if (digitalRead(Becken_Zulauf) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but3 = myButtons.addButton(5, 40, 30, 30, "1");
          myButtons.drawButton(main_but3);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but3 = myButtons.addButton(5, 40, 30, 30, "1");
          myButtons.drawButton(main_but3);
        }
        if (digitalRead(Becken_Zulauf) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but4 = myButtons.addButton(285, 40, 30, 30, "0");
          myButtons.drawButton(main_but4);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but4 = myButtons.addButton(285, 40, 30, 30, "0");
          myButtons.drawButton(main_but4);
        }
        if (digitalRead(Becken_INOUT) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but5 = myButtons.addButton(5, 75, 30, 30, "1");
          myButtons.drawButton(main_but5);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but5 = myButtons.addButton(5, 75, 30, 30, "1");
          myButtons.drawButton(main_but5);
        }
        if (digitalRead(Becken_INOUT) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but6 = myButtons.addButton(285, 75, 30, 30, "0");
          myButtons.drawButton(main_but6);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but6 = myButtons.addButton(285, 75, 30, 30, "0");
          myButtons.drawButton(main_but6);
        }
        if (digitalRead(Filter_OUT) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but7 = myButtons.addButton(5, 110, 30, 30, "1");
          myButtons.drawButton(main_but7);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but7 = myButtons.addButton(5, 110, 30, 30, "1");
          myButtons.drawButton(main_but7);
        }
        if (digitalRead(Filter_OUT) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but8 = myButtons.addButton(285, 110, 30, 30, "0");
          myButtons.drawButton(main_but8);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but8 = myButtons.addButton(285, 110, 30, 30, "0");
          myButtons.drawButton(main_but8);
        }
        if (digitalRead(Becken_entleeren) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but9 = myButtons.addButton(5, 145, 30, 30, "1");
          myButtons.drawButton(main_but9);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but9 = myButtons.addButton(5, 145, 30, 30, "1");
          myButtons.drawButton(main_but9);
        }
        if (digitalRead(Becken_entleeren) == LOW) {
          myButtons.setButtonColors(VGA_WHITE, VGA_GREEN, VGA_GREEN, VGA_GREEN, VGA_GREEN);
          main_but10 = myButtons.addButton(285, 145, 30, 30, "0");
          myButtons.drawButton(main_but10);
        }
        else {
          myButtons.setButtonColors(VGA_WHITE, VGA_RED, VGA_RED, VGA_RED, VGA_RED);
          main_but10 = myButtons.addButton(285, 145, 30, 30, "0");
          myButtons.drawButton(main_but10);
        }
        myGLCD.print("Becken befuellen", CENTER, 13, 0);
        myGLCD.print("Becken Zulauf", CENTER, 48, 0);
        myGLCD.print("Becken IN/OUT", CENTER, 83, 0);
        myGLCD.print("Filter OUT", CENTER, 118, 0);
        myGLCD.print("Becken entleeren", CENTER, 153, 0);

        // Zurueck-Button setzen um ins Hauptmenu zu kommen
        main_but99 = myButtons.addButton (190, 200, 120, 30, "Zurueck");
    }
    myButtons.setButtonColors(VGA_WHITE, VGA_GRAY, VGA_WHITE, VGA_RED, VGA_BLUE);
    myButtons.drawButton(main_but99);
    myGLCD.setFont(SmallFont);
    myGLCD.print(sfootertext, 5, 220);
    // Text welches Submenu
    myGLCD.printNumI(manuelle_Steuerung, 160, 220);
    myGLCD.setColor(VGA_WHITE);
    while (!myTouch.dataAvailable()) {}
    m_press_3 = myButtons.checkButtons();

    switch (manuelle_Steuerung) {
      case 1:
        if (m_press_3 == main_but1) digitalWrite(Becken_befuellen, HIGH);
        if (m_press_3 == main_but2) digitalWrite(Becken_befuellen, LOW);
        if (m_press_3 == main_but3) digitalWrite(Becken_Zulauf, HIGH);
        if (m_press_3 == main_but4) digitalWrite(Becken_Zulauf, LOW);
        if (m_press_3 == main_but5) digitalWrite(Becken_INOUT, HIGH);
        if (m_press_3 == main_but6) digitalWrite(Becken_INOUT, LOW);
        if (m_press_3 == main_but7) digitalWrite(Filter_OUT, HIGH);
        if (m_press_3 == main_but8) digitalWrite(Filter_OUT, LOW);
        if (m_press_3 == main_but9) digitalWrite(Becken_entleeren, HIGH);
        if (m_press_3 == main_but10) digitalWrite(Becken_entleeren, LOW);
    }
  } while (m_press_3 != main_but99);
  // Buttons des Submenu loeschen
  myButtons.deleteAllButtons();
  myGLCD.clrScr(); // LCD leeren
  return; // raus aus Funktion
}

Probieren geht über studieren