Endschalter an einer Linearführung mit Arduino

Hello,

danke erstmal für eure Antwort.
Die letzte Wochen hatte ich keine Zeit um mit dem Projekt weiter zu machen. @MicroBahner ich benutzte ein externer Pull_Down wiederstand. Mit der Anweisung touchwerte_1/2 ==LOW, dachte ich, dass ich nach jeder if-anweisung die sensoren wieder zu LOW setzen sollte aber jetzt habe ich diese Zeilen auskommentiert. @Peter-CAD-HST kannst du mir bitte genau erklären was zu meinst?

Ich habe eine kleine änderung auf meine gebracht, aber ich verstehe nicht warum Arduinonicht genau antwortet, wenn ich die Endschalter bestätige. Also wenn ich der Endschalter_1 bestätige muss als nachricht auf das Serielle Monitor (SCHALTER1 Ein) bokommen und genauso auch mit dem Endschalter_2(SCHALTER2 Ein). Aber ich krige nix auf dem Monitor, als ob die Schalter mit Arduinio nicht kommunizieren. Bitte können sie mir sagen wo ich falsch mache. Unten sie meine Code.

Ich danke euch schon mal

//Definition Pins Kapazitive Sensoren:
#define kap_Sensor1 A0
#define kap_Sensor2 A1
//Definition Pins Schrittmotor:
#define pulPin 10
#define dirPin 11
#define enPin 12
//Definition Pins Endschalter:
#define Endschalter_1 4
#define Endschalter_2 5
//Definition der Schritte pro Umdrehung
#define PulseproRevolution 500


void setup() {
  Serial.begin(9600);
  // Pin als Outputs setzen
  pinMode(pulPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
  pinMode(enPin, OUTPUT);

  digitalWrite(enPin, LOW);

  //Pin als Input setzen
  pinMode(Endschalter_1, INPUT);
  pinMode(Endschalter_2, INPUT);
  pinMode(kap_Sensor1, INPUT);
  pinMode(kap_Sensor2, INPUT);

}

void loop() {
    //Einlesen der werte der Sensoren
    int kontakt1 = digitalRead(Endschalter_1);
    int kontakt2 = digitalRead(Endschalter_2);
    int touchwerte_1 = digitalRead(kap_Sensor1);
    int touchwerte_2 = digitalRead(kap_Sensor2);

    //wenn beide Endschlater nicht ausgelöst sind
    touch_recht();
    touch_links();
    Serial.print("Beide SCHALTER AUS\n");
  
    //wenn Endschalter_1 ausgelöst und Endschalter_2 nicht ausgelöst ist
    if ((kontakt1 == HIGH) && (kontakt2 == HIGH)) {
      Serial.print("SCHALTER_1 EIN \n");
      digitalWrite(pulPin, LOW);//Kein impuls wird gesendet
      digitalWrite(enPin, HIGH);//Motor wird deaktiviert
      digitalWrite(enPin, LOW);
      //falls kap_sensor2 aktiviert ist dann Bewegung des Motors gegen der Uhrzeigersinn
      touch_links();
      delay(200);
    }
    //wenn Endschalter_2 ausgelöst und Endschalter_1 nicht ausgelöst ist
    else if ((kontakt1 == LOW) && (kontakt2 == LOW)) {
      Serial.print("SCHALTER_2 EIN \n");
      digitalWrite(pulPin, LOW); //Kein impuls wird gesendet
      digitalWrite(enPin, HIGH);//Motor wird deaktiviert
      digitalWrite(enPin, LOW);
      //falls kap_sensor2 aktiviert ist dann Bewegung des Motors in Uhrzeigersinn
     touch_recht();

      delay(1000);
    }
      //wenn Endschalter_1 und Endschalter_1 ausgelöst sind
      else if ((kontakt1 == HIGH) && (kontakt2 == LOW)) {
        digitalWrite(enPin, HIGH);//Motor wird deaktiviert
        digitalWrite(enPin, LOW);
        Serial.print("Motor aus \n");
        delay(1000);
      }

}

void touch_recht() {
  //Einlesen der werte der Sensoren
  int touchwerte_1 = digitalRead(kap_Sensor1);
  int touchwerte_2 = digitalRead(kap_Sensor2);
  if (touchwerte_1 == HIGH) {
    Serial.print("Sensor1 funktioniert\t");
    digitalWrite(dirPin, HIGH); // Bewegung des Motors in Uhrzeigersinn
    // Erzeugt 12800 Impulse für eine volle Umdrehung
    for (int x = 0; x < PulseproRevolution; x++) {
      //Durchführung 1 Schritt
      digitalWrite(pulPin, HIGH);
      delayMicroseconds(50);
      digitalWrite(pulPin, LOW);
      delayMicroseconds(50);
      //touchwerte_1 == LOW;
    }
  }
}

void touch_links() {
  //Einlesen der werte der Sensoren
  int touchwerte_1 = digitalRead(kap_Sensor1);
  int touchwerte_2 = digitalRead(kap_Sensor2);
  if (touchwerte_2 == HIGH) {
    Serial.print("Sensor2 funktioniert\t");
    digitalWrite(dirPin, LOW); //Bewegung des Motors gegen der Uhrzeigersinn
    // Erzeugt 128000 Impulse für zwei volle Umdrehungen
    for (int x = 0; x < PulseproRevolution; x++) {
      //Durchführung 1 Schritt
      digitalWrite(pulPin, HIGH);
      delayMicroseconds(50);
      digitalWrite(pulPin, LOW);
      delayMicroseconds(50);
      //touchwerte_2 == LOW;
    }
  }
}