For Schleife Abbruch

/*
Ich schreibe gerade ein Programm für eine Anlage zur Wasserentnahme. Aber ich habe ein Problem mit dem Abbruch von der for Schleife. Die Abbruchbedingung wird ignoriert und die For Schleife läuft jedes mal bis zum Ende. Hat jemanden eine Ahnung woran das liegt? Wurde meine Abbrucbedingung nicht richtig formuliert?
Den Code steht unten

*/

#include "Wasserentnahme.h"
#include "Standby.h"
#include "Spuelung.h"


//const byte interruptDesaktivierungPin = 2;

int Niederdruckschalter = 12;
int Hochdruckschalter = 13;
int Spuelventil = 7;
int Drainventil = 6;
int Pumpe = 4;
int Uvclampe = 5;
int Hauptventil = 3;

unsigned long truutime1;
unsigned long truutime2;


Wasserentnahme wasserentnahme( Hauptventil, Drainventil,  Pumpe                          ,Uvclampe, Spuelventil );  // Kontruktor
Standby standby(Hauptventil, Drainventil,  Pumpe , Uvclampe, Spuelventil);
Spuelung spuelung(Hauptventil, Drainventil,  Pumpe , Uvclampe, Spuelventil);


void setup() {
// put your setup code here, to run once:

  Serial.begin(9600);
  pinMode(Hochdruckschalter , INPUT);
  pinMode(Niederdruckschalter, INPUT);


}

  void loop() {
  truutime1 = millis();
  // put your main code here, to run repeatedly:
 Niederdruckschalter = digitalRead(12);   // Niederdruckschalter wird am Pin 12       gelesen
 Hochdruckschalter = digitalRead(13);    // Hochdruchschalter wird am Pin 13    gelesen

 delay(1000);

 switch (Niederdruckschalter) {  // Zur überprüfung ob der Niederdruckschalter  HIGH oder LOW ist
 case HIGH:                    // Niederdruckschalter ist HIGH

   Serial.println("Niederdruckschalter HIGH");

     for (int x = 0; x < 10; x++) {                // For Schleife für Durchführung der   Wasserentnahme
       Hochdruckschalter = digitalRead(13);
    delay(2000);
    if (Hochdruckschalter == LOW) {               // Bedindung zum Abbruch von der Schleife

      Serial.println("Hochdruckschalter LOW");
      break;
    }
    wasserentnahme.Entnahme();           // Wasserentnahme wird gestartet
    Serial.println("Wasserentnahme");

  }

  Serial.println("Wasserentnahme beendet");
  if (truutime1 > 2000) {                       // Überprüfung ob Wasserentnahme genug lange durchgeführt wurde
    truutime2 = millis();
    while (Hochdruckschalter == LOW) {        // Die Wasseerentnahme wurde genug lange durchgeführt
      spuelung.Spuelvorgang();                // Startet man den Spüllvorgang
      Serial.println("Spüllvorgang startet");
      if (truutime2 > 30000) {      // Nach 30 Sekunden Spüllen , in StandbyModus gehen
        standby.StandbyModus();
        break;
      }
      break;
    }
  }

  else {
    standby.StandbyModus();  // Wurde die Wasserentnahme nicht genug lange durchgeführt dann geht man auf dem Standbymodus
    Serial.println("Wasserentnahme nicht genug lange durchgeführt, standBy");
  }

  break;


case LOW:     // Niederdruckschalter LOW, man geht auf standbymodus

  standby.StandbyModus();
  break;

}



 }

Nein steht er nicht, denn es fehlen die Headerdateien von Dir.
Und wie schon gesagt, ist der nicht lesbar, weil irgendwie nicht formatiert.

Aber eines wird Dir auf die Füsse fallen:
Dein Break.
Das schmeisst Dich an der Stelle aus dem case und kommt sofort wieder an die Stelle zurück durchs loop().

Lesenswert:
https://www.arduino.cc/reference/de/language/structure/control-structure/continue/

Schreib mal was Du erwartest, damit man das Codeschnipsle dann auch nachollziehen kann.

Ich würde für 2 Möglichkeiten nicht Switch case sondern ein einfaches IF nehmen.
For wird abgebrochen wenn Du die Variable auf einen Wert der der Abbruchbedingung entspricht.

 for (int x = 0; x < 10; x++) {       


if abbruch x=10;
}

Grüße Uwe

Auch so leicht lesbar:

 for (int x = 0; x < 10; x++) {       
      ...
      if (abbruch) break;
 }

Moins,

Dann fliegt er aus dem case.
Das war seine ursprüngliche Version. Darum sollte er ja continue nehmen. Dann läuft die Schleife nur bis dahin und lässt alles was dann noch käme unbearbeitet liegen.

In #1 war das break nicht in der for-Schleife, sondern danach, in einem if-Zweig... wo es natürlich das case abgebrochen hat.

Da ich heute wieder was habe, wo ich das testen kann, sehe ich mich von gestern leider daneben.
Noch viel schlimmer: das mit dem if-Konstrukt funktioniert.

void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));

}

void loop()

{
  bool Hochdruckschalter;
  for (int x = 0; x < 10; x++)
  {
    Serial.println(x);
    Hochdruckschalter = LOW;
    delay(2000);
    if (Hochdruckschalter == LOW)
    { // Bedindung zum Abbruch von der Schleife

      Serial.println("Hochdruckschalter LOW");
      break;
    }
    //wasserentnahme.Entnahme();           // Wasserentnahme wird gestartet
    Serial.println("Wasserentnahme");
  }
  Serial.println("Wasserentnahme beendet");
}

Ich würde jetzt erwarten, das wenigstens irgendwann x höher 0 würde.
Macht es aber nicht:

Start...
0
Hochdruckschalter LOW
Wasserentnahme beendet
0
Hochdruckschalter LOW
Wasserentnahme beendet
0
Hochdruckschalter LOW
Wasserentnahme beendet

Der TO muss erläutern, was sein Problem ist.

Das kann ich zumindest hier nicht nachvollziehen.

wenn man die x=10 nicht in geschweifte klammer nach if Bedingung rein macht wird die For Schleife abgebrochen, egal ob die break Kondition erfüllt ist oder nicht. Aber das wollen wir nicht. Hier will ich den Abbruch der For Schleife nach Erfüllung der if Bedingungen

Dein Programm ist richtig. ich habe meins noch mal geprüft. Da ich nur ein Schalter zur Verfügung hatte, habe ich der NiederdruckschalterPin an +5V der Spannung Versorgung gesteckt und der Schalter für HochdruckschalterPin benutzt. Irgendwie ist der Schalter kaputt, weil danach habe ich den +5V und Masse als HIGH und LOW für den HochdruckschalterPin benutzt und das Programm läuft jetzt ganz gut. Ich werde mir andere Schalter kaufen um sicher zu sein dass meine Überlegung richtig war

Ich habe meine ganze Schaltung wieder geprüft und habe einen Fehler bei der Schaltung von meinem Schalter. Es wurde kein LOW am Eingang des DigitalPin geschickt. Ich habe alles korrigiert. Jetzt läuft alles gut.
Danke für die Hilfe